介绍一下单点登录
1. 概念
单点登录SSO,说的是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。
2. 单点登录的要点
存储信任- 验证信任
3. 实现单点登录的三种方式
3.1 以cookie作为凭证,最简单的单点登录实现方式,是使用cookie作为媒介,存放用户凭证。用户登录父应用之后,应用返回一个加密的cookie,当用户访问子应用的时候,携带上这个cookie,授权应用解密cookie进行校验,校验通过则登录当前用户。
缺点: - cookie不安全; - 通过加密可以保证安全性,但如果对方掌握了解密算法就完蛋了; - 不能跨域实现免登。
3.2 通过JSONP实现 对于跨域问题,可以使用JSONP实现。用户在父应用中登录后,跟session匹配的cookie会存到客户端中,当用户需要登录子应用的时候,授权应用访问父应用提供的JSONP接口,并在请求中带上父应用域名下的cookie,父应用接收到请求,验证用户的登录状态,返回加密的信息,子应用通过解析返回来的加密信息来验证用户,如果通过验证则登录用户。
缺点: 这种方法虽然能解决跨域问题,但是治标不治本,没有解决cookie安全性的问题。
3.3 通过页面重定向的方式,最后一种介绍的方式,是通过父应用和子应用来回重定向进行通信,实现信息的安全传递。父应用提供一个GET方式的登录接口A(此时的父应用接口固定,攻击者无法去伪造),用户通过子应用重定向连接的方式访问这个接口,如果用户还没有登录,则返回一个登录页面,用户输入账号密码进行登录,如果用户已经登录了,则生成加密的token,并且重定向到子应用提供的验证token的接口B(此时的子应用接口固定,攻击者无法去伪造),通过解密和校验之后,子应用登录当前用户。 缺点: 这种方式较前面的两种方式,是解决了安全性和跨域的问题,但是并没有前面两种方式简单,安全与方便,本来就是矛盾的。
4. 使用独立登录系统
一般来说,大型应用会把授权的逻辑和用户信息的相关逻辑独立成一个应用,称为用户中心。用户中心不处理业务逻辑,只是处理用户信息的管理以及授权给第三方应用。第三方应用需要登录的时候,则把用户的登录请求转发给用户中心进行处理,用户处理完毕后返回凭证,第三方应用验证凭证,通过后就登录用户。
5. sso(单点登录)与OAuth2.0(授权)的区别
5.1 sso(单点登录) sso通常处理的是同一个公司的不同应用间的访问登录问题,如企业应用有很多子系统,只需登录一个系统,就可以实现不同子系统间的跳转,而避免了登录操作; 通过cookie、jsonp、重定向来实现。
5.2 OAuth2.0(授权)OAuth2.0解决的是服务提供方(如微信)给第三方应用授权的问题,简称微信登录。OAuth2.0是一种具体的协议,只是为用户资源的授权提供了一个安全的、开放的而又简易的标准,OAuth2.0(授权)为客户开发者开发web应用,桌面应用程序,移动应用及客厅设备提供特定的授权流程。
猜你喜欢LIKE
相关推荐HOT
更多>>如何撤销已经推送(push)到远端仓库的提交(commit)信息?
撤销提交信息: 首先,通过git log查看提交信息,以便获取需要回退至的版本号; 然后,通过git reset --soft <版本号>重置至指定版本的提交,达...详情>>
2022-11-17 11:29:00你了解哪些加密算法?
RSA RSA加密算法是一种典型的非对称加密算法,它基于大数的因式分解数学难题,它也是应用最广泛的非对称加密算法。MD5的文本或者一行字符,这行...详情>>
2022-11-08 17:54:54final在Java中有什么作用?
如果引用为引用数据类型,比如对象、数组,则该对象、数组本身可以修改,但指向该对象或数组的地址的引用不能修改。如果引用时类的成员变量,则...详情>>
2022-10-26 16:37:00说一下类加载的执行过程
加载指的是将类的class文件读入到内存中,并为之创建一个java.lang.Class对象。 类的加载由类加载器完成,类加载器由JVM提供,开发者也可以通过...详情>>
2022-10-11 16:38:00数据库有哪些锁?
使用 COMMIT 或 ROLLBACK 语句释放锁。最常使用的MYISAM与INNODB都支持表级锁定。表级锁定分为表共享读锁(共享锁)与表独占写锁(排他锁)。表级锁...详情>>
2022-10-11 14:51:00Java培训问答更多>>
新Java行业疑惑解答:Java的内存管理是如何工作的?
新java script是什么?为什么要学java script
新java和大数据哪个好?未来哪个职业发展更好
新java培训班多久能学会?培训周期大概多久
新java script和java的区别有哪些?如何区分
新java script的数据类型主要有哪些?怎样学的更快
新c语言与java区别在哪里?去培训机构学哪个比较好
Java面试题库 更多>>
华为外包java面试题-Java实现单链表的逆序
Java程序员面试题
Java面试题及答案
什么是线程的上下文切换?
如何撤销已经推送(push)到远端仓库的提交(commit)信息?
你了解哪些加密算法?
- 北京校区
- 大连校区
- 广州校区
- 成都校区
- 杭州校区
- 长沙校区
- 合肥校区
- 南京校区
- 上海校区
- 深圳校区
- 武汉校区
- 郑州校区
- 西安校区
- 青岛校区
- 重庆校区
- 太原校区
- 沈阳校区
- 南昌校区
- 哈尔滨校区