关于sso的四个问题?

来源:6-11 基于JWT实现SSO单点登录2

慕粉3814454

2017-12-22

老师你好,

看了视频后,感觉oauth做sso其实应该就是OIDC实现的SSO,有几个问题请教下:

  1. jwt的初衷是想让服务器做成无状态,但是做SSO的时候认证服务器还是得有用户的会话,这个做不到无状态?

  2. 给应用下发的jwt可以理解为IdToken,应用拿到IdToken(不是accessToekn)除了获取用户信息外,还有其他用途吗?

  3. 应用验证idtoken正确后,如果此时是web应用的话需要自己建立会话吗?不建立会话的话,用户在应用内的每次操作都会拿着idtoken来服务器进行验证,加重了认证服务器的压力;建立会话的话和CAS的SSO区别不是很大,都是拿到认证服务器签发的ticket或者token一类的建立自己的会话,此外idtoken是有有效期的,假如有效期是10分钟,那么应用自己建立的会话是不是还得保持一致,这样对接入的应用来说不是很友好,代码侵入的有点多了。

  4. 登出的时候,如果应用登出的时候,认证服务器是否也要清理会话?如果清理的话,假如A应用登出,这个时候B应用自己的会话还存在,这个时候B应用还是可以登录的,但是认证服务器的会话不存在了,此时从B应用去A应用还会出现表单登录页让用户输入用户名密码验证。

    不知道老师是怎么理解的?

    最后还有个问题,根据页面提供的qq群(484671914)加进去后,发现老师貌似不在里面,有些问题请教起来非常不方便啊

写回答

1回答

JoJo

2017-12-23

  1. 目前spring的实现是这样的,理论上可以是无状态的。

  2. 可以根据需要往jwt里放任意信息,理论上想做什么都可以。

  3. 用jwt的话,信息是直接从jwt里取的,不需要每次访问认证服务器,会话处理这块的代码我没读过,你可以自己看下。

  4. 我看到的资料是认证服务器不会清理会话。

  5. 规矩是慕课定的,我们只是遵照执行。

0
0

Spring Security技术栈开发企业级认证与授权

Spring Security技术栈,REST风格开发常见接口,独立开发认证授权模块保证REST服务安全

2662 学习 · 1561 问题

查看课程