oauth单点登录是实现“统一用户登录”的吗

基于OAUTH协议的校园统一认证与授权系统的研究与实现--《四川师范大学》2014年硕士论文
基于OAUTH协议的校园统一认证与授权系统的研究与实现
【摘要】:高校数字化建设现在已经成为教育信息化建设的重点,数字化校园平台的构建是整个校园信息化建设的基础平台,已在各大高校取得了很大的成绩,信息化的建设已经从前几年的硬件建设发展到对数字校园的建设,现在高校已经有很多的业务应用系统,这些系统正在校园生活,科研,教学,管理等方面都有很大的作用。在高校中,大家已经能够感受数字化校园带来的变化,很多高校已经建设了多个应用系统来解决业务问题,比如一卡通系统,教务系统,科研系统,公文处理系统等,虽然在一定程度上能够解决实际业务需求,但是在数字化校园的建设中任然面临着一系列的问题:应用系统之间信息不能共享,比如离校系统在离校时需要教务处的学分数据,但是现有系统之间无法满足无缝的业务对接,如何解决这些问题?数字化校园建设的最终目标是什么?这些都值得去认真思考、解决和研究的问题。
本文作者平时主要致力于高校数字化校园建设工作,其中包括:参与过多个高校业务应用系统开发,全程参与数字化校园平台的建设工作,通过这些实际的开发工作与经验,作者发现在高校数字化校园的构建中,目前急需要解决的问题便是在现有各个部门成熟应用的信息系统的基础上构建一个统一、集中管理的信息平台,该平台能够解决原有各部门各系统之间存在的信息孤岛问题,达到资源有效整合和合理使用,能够为学校教学、科研、学生服务等提供更有效的支撑和服务。
但在构建数字化校园统一集中管理平台中,我们首先需要解决校内各个业务部门的多个业务系统各自为一个体系,每一个系统都有一个用户名和密码,各自为政,构成了多个信息孤岛、信息无法交互、系统业务、数据等无法共享的问题,而统一认证技术有效的解决了这些问题,本文作者针对当前互联网统一认证系统应用范围最广的OAUTH2.0认证协议进行研究,分析了OAUTH2.0认证协议的认证模式和认证模型,基于ASP.NET技术、SQLSERVER数据库技术、安全加密技术等实现所在高校数字化校园中统一认证中心系统,系统最终实现了“一处登录,处处登录,处处资源共享”的设计目标,并最终投入使用,目前系统运行稳定,为学校整个数字化校园的建设搭建了好的基础综合应用平台。
【关键词】:
【学位授予单位】:四川师范大学【学位级别】:硕士【学位授予年份】:2014【分类号】:TP311.52【目录】:
摘要4-6Abstract6-10第一章 绪论10-14 1.1 背景分析10 1.2 国内外发展现状及趋势10-11 1.3 本文的主要的工作及意义11-12 1.4 论文内容12-13 1.5 本章小结13-14第二章 相关技术理论与研究14-27 2.1 应用安全技术14-15 2.2 OAUTH2.0 协议15-24 2.3 MVC 分层技术24-25 2.4 数据交换方式25-26 2.6 本章小结26-27第三章 系统需求分析27-33 3.1 总体需求27-28 3.2 功能的需求28-30 3.3 系统分析30-31 3.4 非功能需求31-32 3.5 系统技术标准规范需求32 3.6 本章小结32-33第四章 系统设计33-41 4.1 系统功能设计33-34 4.2 系统框架设计34-36 4.3 认证功能设计36-38 4.4 应用接入模块设计38-40 4.5 本章小结40-41第五章 系统实现41-62 5.1 数据库设计方法41 5.2 数据库实现41-47 5.3 核心功能实现47-59 5.4 系统功能展示59-61 5.5 本章小结61-62第六章 系统测试62-69 6.1 测试性能方法与分析62 6.2 测试环境62-63 6.3 性能测试数据分析63-64 6.4 功能测试64-68 6.5 本章小结68-69第七章 总结与展望69-70 7.1 工作总结69 7.2 展望69-70致谢70-71参考文献71-72
欢迎:、、)
支持CAJ、PDF文件格式
【参考文献】
中国期刊全文数据库
陈仲生,杨拥民;[J];兵工自动化;2001年02期
李康荣;苗放;;[J];计算机安全;2008年09期
陈克胜;[J];中国电子商务;2002年05期
常潘;沈富可;;[J];计算机工程;2007年05期
牛卫红;张一帆;;[J];计算机与网络;2008年18期
郑东曦;;[J];计算机工程与设计;2006年06期
【共引文献】
中国期刊全文数据库
王西锋;张晓孪;;[J];宝鸡文理学院学报(自然科学版);2008年03期
何涛;孙跃勇;;[J];成都信息工程学院学报;2006年02期
胡顺仁,蒋西明,周登义;[J];重庆工学院学报;2005年05期
关洪海;;[J];成人教育;2010年03期
史桂红;[J];电脑与信息技术;2005年02期
王静;;[J];电脑与信息技术;2006年05期
沈琼;桂斌;;[J];电脑知识与技术(学术交流);2007年22期
任伟;李川;殷铭;胡鹏伟;;[J];电脑知识与技术;2010年04期
曾春宝;;[J];电脑知识与技术;2010年33期
迟庆云;;[J];大庆师范学院学报;2010年03期
中国重要会议论文全文数据库
朱少敏;刘建明;魏晓菁;;[A];第13届全国计算机、网络在现代科学技术领域的应用学术会议论文集[C];2007年
董文莉;;[A];第二十三届中国(天津)2009IT、网络、信息技术、电子、仪器仪表创新学术会议论文集[C];2009年
林炜;;[A];第十七届全国青年通信学术年会论文集[C];2012年
中国博士学位论文全文数据库
苗丰满;[D];兰州理工大学;2011年
李良明;[D];南京航空航天大学;2010年
李小将;[D];西北工业大学;2002年
钟涛;[D];电子科技大学;2003年
陈莉;[D];西安电子科技大学;2003年
曹星平;[D];国防科学技术大学;2004年
谢晓东;[D];华中科技大学;2007年
刘茂诚;[D];中国石油大学;2010年
中国硕士学位论文全文数据库
田建荣;[D];中国海洋大学;2010年
王平安;[D];山东师范大学;2010年
张朋;[D];华东师范大学;2010年
江卫;[D];华南理工大学;2010年
孙宜俊;[D];电子科技大学;2010年
侯顺亚;[D];东北财经大学;2010年
任家鲁;[D];西安电子科技大学;2010年
周相仲;[D];北方工业大学;2011年
贺玉明;[D];北方工业大学;2011年
江立;[D];武汉理工大学;2011年
【二级参考文献】
中国期刊全文数据库
覃艳;;[J];电脑知识与技术(学术交流);2007年06期
卢佳妙,叶少珍;[J];福州大学学报(自然科学版);2004年06期
周昆;王喜成;;[J];桂林电子科技大学学报;2007年02期
吴晓斌,张月琳;[J];华中科技大学学报(自然科学版);2003年S1期
尹汉东,任邵东,周生炳;[J];计算机仿真;2004年11期
黄清;胡蓉;;[J];中国现代教育装备;2007年01期
杨拥民,陈仲生;[J];上海微型计算机;2000年19期
雷钧;徐洪胜;付勇智;;[J];微计算机信息;2006年21期
罗东川;[J];计算机系统应用;1998年03期
邹涛,陈志刚;[J];计算机系统应用;2000年03期
【相似文献】
中国期刊全文数据库
高康迪;;[J];福建电脑;2010年11期
张卫全;胡志远;;[J];通信管理与技术;2011年02期
张卫全;胡志远;;[J];电信网技术;2011年03期
;[J];;年期
;[J];;年期
;[J];;年期
;[J];;年期
;[J];;年期
;[J];;年期
;[J];;年期
中国硕士学位论文全文数据库
张德林;[D];四川师范大学;2014年
靳军;[D];北京邮电大学;2012年
张艳霞;[D];华南理工大学;2012年
朱扬谷;[D];重庆大学;2012年
楚鼎;[D];北京邮电大学;2011年
姚宣屿;[D];电子科技大学;2013年
周洪海;[D];南京理工大学;2013年
刘鹏程;[D];北京邮电大学;2011年
杨炜;[D];西安电子科技大学;2013年
高晓晓;[D];大连理工大学;2013年
&快捷付款方式
&订购知网充值卡
400-819-9993
《中国学术期刊(光盘版)》电子杂志社有限公司
同方知网数字出版技术股份有限公司
地址:北京清华大学 84-48信箱 知识超市公司
出版物经营许可证 新出发京批字第直0595号
订购热线:400-819-82499
服务热线:010--
在线咨询:
传真:010-
京公网安备74号Shiro简介——《跟我学Shiro》 - 开涛的博客 - ITeye技术网站
博客分类:
Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了。对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了。
本教程只介绍基本的Shiro使用,不会过多分析源码等,重在使用。
Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等。这不就是我们想要的嘛,而且Shiro的API也是非常简单;其基本功能点如下图所示:
Authentication:身份认证/登录,验证用户是不是拥有相应的身份;
Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;
Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的;
Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;
Web Support:Web支持,可以非常容易的集成到Web环境;
Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率;
Concurrency:shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;
Testing:提供测试支持;
Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;
Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。
记住一点,Shiro不会去维护用户、维护权限;这些需要我们自己去设计/提供;然后通过相应的接口注入给Shiro即可。
接下来我们分别从外部和内部来看看Shiro的架构,对于一个好的框架,从外部来看应该具有非常简单易于使用的API,且API契约明确;从内部来看的话,其应该有一个可扩展的架构,即非常容易插入用户自定义实现,因为任何框架都不能满足所有需求。
首先,我们从外部来看Shiro吧,即从应用程序角度的来观察如何使用Shiro完成工作。如下图:
可以看到:应用代码直接交互的对象是Subject,也就是说Shiro的对外API核心就是Subject;其每个API的含义:
Subject:主体,代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如网络爬虫,机器人等;即一个抽象概念;所有Subject都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager;可以把Subject认为是一个门面;SecurityManager才是实际的执行者;
SecurityManager:安全管理器;即所有与安全有关的操作都会与SecurityManager交互;且它管理着所有Subject;可以看出它是Shiro的核心,它负责与后边介绍的其他组件进行交互,如果学习过SpringMVC,你可以把它看成DispatcherServlet前端控制器;
Realm:域,Shiro从从Realm获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户进行比较以确定用户身份是否合法;也需要从Realm得到用户相应的角色/权限进行验证用户是否能进行操作;可以把Realm看成DataSource,即安全数据源。
也就是说对于我们而言,最简单的一个Shiro应用:
1、应用代码通过Subject来进行认证和授权,而Subject又委托给SecurityManager;
2、我们需要给Shiro的SecurityManager注入Realm,从而让SecurityManager能得到合法的用户及其权限进行判断。
从以上也可以看出,Shiro不提供维护用户/权限,而是通过Realm让开发人员自己注入。
接下来我们来从Shiro内部来看下Shiro的架构,如下图所示:
Subject:主体,可以看到主体可以是任何可以与应用交互的“用户”;
SecurityManager:相当于SpringMVC中的DispatcherServlet或者Struts2中的FilterDispatcher;是Shiro的心脏;所有具体的交互都通过SecurityManager进行控制;它管理着所有Subject、且负责进行认证和授权、及会话、缓存的管理。
Authenticator:认证器,负责主体认证的,这是一个扩展点,如果用户觉得Shiro默认的不好,可以自定义实现;其需要认证策略(Authentication Strategy),即什么情况下算用户认证通过了;
Authrizer:授权器,或者访问控制器,用来决定主体是否有权限进行相应的操作;即控制着用户能访问应用中的哪些功能;
Realm:可以有1个或多个Realm,可以认为是安全实体数据源,即用于获取安全实体的;可以是JDBC实现,也可以是LDAP实现,或者内存实现等等;由用户提供;注意:Shiro不知道你的用户/权限存储在哪及以何种格式存储;所以我们一般在应用中都需要实现自己的Realm;
SessionManager:如果写过Servlet就应该知道Session的概念,Session呢需要有人去管理它的生命周期,这个组件就是SessionManager;而Shiro并不仅仅可以用在Web环境,也可以用在如普通的JavaSE环境、EJB等环境;所有呢,Shiro就抽象了一个自己的Session来管理主体与应用之间交互的数据;这样的话,比如我们在Web环境用,刚开始是一台Web服务器;接着又上了台EJB服务器;这时想把两台服务器的会话数据放到一个地方,这个时候就可以实现自己的分布式会话(如把数据放到Memcached服务器);
SessionDAO:DAO大家都用过,数据访问对象,用于会话的CRUD,比如我们想把Session保存到数据库,那么可以实现自己的SessionDAO,通过如JDBC写到数据库;比如想把Session放到Memcached中,可以实现自己的Memcached SessionDAO;另外SessionDAO中可以使用Cache进行缓存,以提高性能;
CacheManager:缓存控制器,来管理如用户、角色、权限等的缓存的;因为这些数据基本上很少去改变,放到缓存中后可以提高访问的性能
Cryptography:密码模块,Shiro提高了一些常见的加密组件用于如密码加密/解密的。
到此Shiro架构及其组件就认识完了,接下来挨着学习Shiro的组件吧。
示例源代码:;可加群探讨Spring/Shiro技术。
浏览 49839
这些内容都是在别的PDF上扒过来的。没有诋毁开涛大牛的意思,就是希望开涛大牛多写一些自己的经验。人家本来就说跟开涛一起学,把自己的学习过程写出来供大家学习,应该多加感谢。
丧失的路人 写道 涛-哥 关于集群环境实现RedisSessionDAO后发现一次请求会调用14次doReadSession()方法,这样会不会严重印象服务性能,怎么解决呢可以写个filter 在shiro快退出之前保存看出了,以为是存呢;读取的话需要尽量配合本地缓存(或把session放入request,这样读取一次即可);
涛。哥又出新教程了,强烈支持啊。我们这边项目要做一个统一用户管理与其它应用系统进行单点登录集成,不知道是否能应用shiro来实现吗? 目前还是小白一个,希望给个指点方向 嘿嘿完全可以;单点登录可以使用第15章 Jasig CAS/第17章 OAuth2 实现;或者自己实现,都是没有问题的;
涛-哥 关于集群环境实现RedisSessionDAO后发现一次请求会调用14次doReadSession()方法,这样会不会严重印象服务性能,怎么解决呢可以写个filter 在shiro快退出之前保存
这些内容都是在别的PDF上扒过来的。没有诋毁开涛大牛的意思,就是希望开涛大牛多写一些自己的经验。可以先参考示例
这些内容都是在别的PDF上扒过来的。没有诋毁开涛大牛的意思,就是希望开涛大牛多写一些自己的经验。 ,前几章大家都差不多 都是自己手写的 哈哈;先看目录吧 ;图是直接扒的;没必要自己画;内容还是用自己的话写的;
楼主!2013年我请你出个关于Spring security的专题,你跟我说过要出shiro的专题,现在终于出了,一直都支持你!关注你!&&
& 上一页 1
jinnianshilongnian
浏览: 4431084 次
浏览量:839890
浏览量:804420
浏览量:1436262
浏览量:100319
浏览量:327062
浏览量:109265
浏览量:549397
浏览量:32915
写得真好,赞一个!
你好,之前说错了,确实我想问用你的例子成功登录后,想退出再登录 ...
你好,我想问用你的例子成功登录后,想退出怎么办呢?我在客户端调 ...
一直报循环重定向
请问分表后如果产生多张表,要查询全部数据除了应用中Join多张 ...理解OAuth 2.0 - 阮一峰的网络日志当前访客身份:游客 [
当前位置:
OAuth 是针对访问授权的一个开放标准,它正通过许多实现(包括针对的一个实现)而不断获得动力。
OAuth是由Blaine Cook、Chris Messina、Larry Halff 及David Recordon共同发起的,目的在于为API访问授权提供一个开放的标准。OAuth讨论组于2007年4月建立,以便向这个小组的实现者提供一种机构 来编写协议草案。Eran Hammer-Lahav与Google的DeWitt Clinton在开发过程中做出了巨大的贡献。规范的1.0版于日发布。
OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密 码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权 的标准。
从高层次来看,OAuth按以下方式工作:
你的站点已与不同的验证服务供应商建立了关系。
你共享一个密码短语或者公钥,这样你就能使用它访问web联系人。
你 根据验证服务供应商将用户重定向到登录页面。
该用户登录然后告诉验证服务供应商你的站点访问其地址薄是没问题的。
你可以进入本页的下载地址中下载各种开发语言对应的 OAuth 开发包,或者在本站。
OAuth最新更新资讯,共7条&&(,)
29评/11178阅
10评/3783阅
0评/1744阅
授权协议:
开发语言:
操作系统:
收录时间: 日
zkool 发表于8个月前
,最后回答(2周前):
金木道长 发表于3个月前
AaronW 发表于4个月前
杨延庆 发表于3年前
,最后回答(4个月前):
郑臣 发表于5个月前
郑臣 发表于5个月前
司徒春运 发表于3年前
,最后回答(5个月前):
jxlgzwh 发表于8个月前
,最后回答(8个月前):
Cosven 发表于9个月前
,最后回答(9个月前):
似年 发表于10个月前
dadiaole 发表于1年前
,最后回答(10个月前):
于明亮 发表于2年前
,最后回答(10个月前):
seau 发表于1年前
,最后回答(1年前):
seau 发表于1年前
,最后回答(1年前):
addjava 发表于1年前
,最后回答(1年前):
stevenliu 发表于1年前
,最后回答(1年前):
准码农 发表于4年前
,最后回答(1年前):
lkiarest 发表于1年前
,最后回答(1年前):
SoSo_NX 发表于1年前
,最后回答(1年前):
seau 发表于1年前
,最后回答(1年前):
使用 OAuth 中的任何问题
这部分代码开源不? 嘿嘿
:为了支持
认证,我违心的引入了一大堆
的 jar 包,为了要用
各种恨啊!
:搜索更多开发包链接错了,应该是
共有 59 个类似软件
Hello.js 是一个客户端 JavaScript 框架,用于实现 OAuth2 认证。支持现有多个 OA...
你是否曾经在寻找一个解决方案来实现通过 Twitter、Facebook 和 LinkedIn 等社交网...
ytoolkit 是 Objective-C 的一个常用开发工具包,包括: 一个快速的base64编码(纯...
scribe-java是一个java语言的oauth库, 代码很干净利落很容易扩展而且用起来很方便....
angular-oauth2 是 AngularJS 的 OAuth2 认证模块,使用 ES6 编写。 使用方法: 1....
OAuth PHP 是一个 PHP 的开发包用以提供完整的 OAuth 的客户端和提供者的开发支持。...
为了方便开发人员进行豆瓣 OAuth认证,此项目提供了常见语言环境下进行豆瓣 OAuth认...
当前开放平台大行其道,其中的授权安全问题如何处理?oauth2.0协议是当今互联网时代...
OAuth.net 是一个 .NET 的库用以提供完整的 OAuth 的客户端和提供者的开发支持,适...
Spring Security的OAuth插件,同时提供了OAuth客户端(consumer)和服务器端(provid...
angular-oauth2 是 AngularJS 的 OAuth2 认证模块,使用 ES6 编写。 使用方法: 1....
Oauth.io 是一个 Oauth 守护进程,是 OAuth.io 核心的开源版本。这是一个运行在你自...
这是一个为 Android 程序开发的 OAuth 库/应用,以便使用 Content Providers 来存储...
简介 通过OAuth方式同步用户消息到微博平台(支持豆瓣,新浪微薄,腾讯微博,搜狐微...
Spring Security的OAuth插件,同时提供了OAuth客户端(consumer)和服务器端(provid...
python-oauth2 是 Python 语言的 OAuth 2 的实现,包括客户端和服务器端。该项目经...
OAuth.net 是一个 .NET 的库用以提供完整的 OAuth 的客户端和提供者的开发支持,适...
Grails-OAuth 是 Grails 框架的 OAuth 插件。
spring-oauth-server Spring与Oauth2的整合示例 项目用Maven管理 使用的技术与版本...
Oauth2client 是一个 Python 库,它可以访问受 OAuth 2.0 保护的资源。...
共有 210 人关注 OAuth网站实现新浪微博登录 -
- ITeye技术网站
博客分类:
我为菜鸟、搞了几天,弄死人了。新浪aouth2.0的api没更新、让新手很不好受、我就吃了这个亏。特此写篇文章让新手们少受点苦。
1.网站要实现新浪微博登录必须去微博平台进行应用注册,地址为:/authentication(我是建的网页应用登录)
2.填写基本信息
3.重点:在高级信息中有一项授权设置(这个为回调方法的地址、此地址要与java后台回调方法一样)
4.下载& /p/weibo4j/ 下载weibo4j-oauth2-beta2.0& (附件也有)这个里面的源码跟1.0的还是有区别的。新浪貌似没有把这些修改之后的api更新。
5.把下载下来的weibo4j-oauth2-beta2.0引入myeclipse中。打成jar包
6.开始后台的开发了(我就说的通俗点了、不那么专业了。)。首先点击自己网站的连接或按钮必须跳到新浪登录界面(这个api上还是有。而且跟1.0是一样的)
"https://api..cn/oauth2/authorize" +
"?client_id=" + test.getWBAppKey() +& //这个是你在新浪微博申请应用的时候有一个appkey
"&redirect_uri=" + callback +&& //这个就是你回调函数的地址了。
"&response_type=code";
7.跳到登录页面
点击授权之后会请求回调地址callback 同时会返回code值 (这个值非常重要、授权就是根据这个值去获得用户的uid的)。
8.只需要完成功能的就直接看我下面的代码。想了解源码的可以去你刚刚下载的weibo4j-oauth2-beta2.0& 里面看源码(这里我就不多说了、但是新浪api上面是没有的、只有1.0版本的)
String code = request.getParameter("code");//相当于验证码
Weibo weibo = new Weibo();
Oauth oauth = new Oauth();
weibo4j.http.AccessToken token = oauth.getAccessTokenByCode(code);//根据code得到accesstoken
weibo.setToken(token.getAccessToken());
Account account = new Account();
weibo4j.org.json.JSONObject json = account.getUid();//得到用户uid
weibo4j.Users users = new weibo4j.Users();
weibo4j.model.User user = users.showUserById(json.getString("uid"));//得到微博用户信息、可以用debug看
下载次数: 67
chenqichenlin
浏览: 6123 次
来自: 北京
weibo 变量不需要,而account和users 变量都需 ...}

我要回帖

更多关于 oauth单点登录 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信