千锋教育-做有情怀、有良心、有品质的职业教育机构

当前位置:首页  >  IT面试题  >  Java面试题  >  正文

你用过单点登录吗?是如何实现的?

来源:千锋教育
作者:wjy
关键词: 北京 大连
2022-09-26
分享

  1. 单点登录概念 单点登录SSO,说的是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任

  2. 单点登录的要点

  ①. 存储信任; ②. 验证信任;

你用过单点登录吗?是如何实现的?

  3. 实现单点登录的三种方式

  ①. 以cookie作为凭证 最简单的单点登录实现方式,是使用cookie作为媒介,存放用户凭证。 用户登录父应用之后,应用返回一个加密的cookie,当用户访问子应用的时候,携带上这个cookie,授权应用解密cookie进行校验,校验通过则登录当前用户。 缺点: - cookie不安全; - 通过加密可以保证安全性,但如果对方掌握了解密算法就完蛋了; - 不能跨域实现免登。

  ②. 通过JSONP实现 对于跨域问题,可以使用JSONP实现。用户在父应用中登录后,跟session匹配的cookie会存到客户端中,当用户需要登录子应用的时候,授权应用访问父应用提供的JSONP接口,并在请求中带上父应用域名下的cookie,父应用接收到请求,验证用户的登录状态,返回加密的信息,子应用通过解析返回来的加密信息来验证用户,如果通过验证则登录用户。

  缺点: - 这种方法虽然能解决跨域问题,但是治标不治本,没有解决cookie安全性的问题。

  ③. 通过页面重定向的方式 最后一种介绍的方式,是通过父应用和子应用来回重定向进行通信,实现信息的安全传递。 父应用提供一个GET方式的登录接口A(此时的父应用接口固定,攻击者无法去伪造),用户通过子应用重定向连接的方式访问这个接口,如果用户还没有登录,则返回一个登录页面,用户输入账号密码进行登录,如果用户已经登录了,则生成加密的token,并且重定向到子应用提供的验证token的接口B(此时的子应用接口固定,攻击者无法去伪造),通过解密和校验之后,子应用登录当前用户。

  缺点: - 这种方式较前面的两种方式,是解决了安全性和跨域的问题,但是并没有前面两种方式简单,安全与方便,本来就是矛盾的。

  4. 使用独立登录系统 一般来说,大型应用会把授权的逻辑和用户信息的相关逻辑独立成一个应用,称为用户中心。用户中心不处理业务逻辑,只是处理用户信息的管理以及授权给第三方应用。第三方应用需要登录的时候,则把用户的登录请求转发给用户中心进行处理,用户处理完毕后返回凭证,第三方应用验证凭证,通过后就登录用户。

  5. sso(单点登录)与OAuth2.0(授权)的区别?

  ①. sso(单点登录) 通常处理的是一个公司的不同应用间的访问登录问题,如企业应用有很多子系统,只需登录一个系统,就可以实现不同子系统间的跳转,而避免了登录操作; 通过cookie、jsonp、重定向来实现;

  ②. OAuth2.0(授权) 解决的是服务提供方(如微信)给第三方应用授权的问题,简称微信登录; 是一种具体的协议,只是为用户资源的授权提供了一个安全的、开放的而又简易的标准,OAuth2.0(授权)为客户开发者开发web应用,桌面应用程序,移动应用及客厅设备提供特定的授权流程。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

相关推荐

  • JVM调优参数有哪些? 1. JVM堆设置参数 针对JVM堆的设置,一般可以通过-Xms -Xmx限定其最小、最大值,为了防止垃圾收集器在最小、最大之间收缩堆而产生额外的时间,通常把最大、最小设置为相同的值;
  • 存储过程如何进行优化? 存储过程是一组为了完成特定功能的SQL语句集,存储在数据库中,经过次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。
  • 常见的索引原则有哪些? 1. 选择唯一性索引 唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。2. 为经常需要排序、分组和联合操作的字段建立索引:3. 为常作为查询条件的字段建立索引。
  • 你用过单点登录吗?是如何实现的? 父应用提供一个GET方式的登录接口A(此时的父应用接口固定,攻击者无法去伪造),用户通过子应用重定向连接的方式访问这个接口,如果用户还没有登录,则返回一个登录页面,用户输入账号密码进行登录,如果用户已经登录了,则生成加密的token,并且重定向到子应用提供的验证token...
  • 你熟悉的测试用例设计方法都有哪些? 你熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。 答:有黑盒和白盒两种测试种类,黑盒有等价类划分法,边界分析法,因果图法和错误猜测法。白盒有逻辑覆盖法,循环测试路径选择,基本路径测试。
  • 描述一下你所使用的分支策略? 功能分支(Feature branching):要素分支模型将特定要素的所有更改保留在分支内。当通过自动化测试对功能进行全面测试和验证时,该分支将合并到主服务器中。