关于sso的四个问题?
来源:6-11 基于JWT实现SSO单点登录2

慕粉3814454
2017-12-22
老师你好,
看了视频后,感觉oauth做sso其实应该就是OIDC实现的SSO,有几个问题请教下:
jwt的初衷是想让服务器做成无状态,但是做SSO的时候认证服务器还是得有用户的会话,这个做不到无状态?
给应用下发的jwt可以理解为IdToken,应用拿到IdToken(不是accessToekn)除了获取用户信息外,还有其他用途吗?
应用验证idtoken正确后,如果此时是web应用的话需要自己建立会话吗?不建立会话的话,用户在应用内的每次操作都会拿着idtoken来服务器进行验证,加重了认证服务器的压力;建立会话的话和CAS的SSO区别不是很大,都是拿到认证服务器签发的ticket或者token一类的建立自己的会话,此外idtoken是有有效期的,假如有效期是10分钟,那么应用自己建立的会话是不是还得保持一致,这样对接入的应用来说不是很友好,代码侵入的有点多了。
登出的时候,如果应用登出的时候,认证服务器是否也要清理会话?如果清理的话,假如A应用登出,这个时候B应用自己的会话还存在,这个时候B应用还是可以登录的,但是认证服务器的会话不存在了,此时从B应用去A应用还会出现表单登录页让用户输入用户名密码验证。
不知道老师是怎么理解的?
最后还有个问题,根据页面提供的qq群(484671914)加进去后,发现老师貌似不在里面,有些问题请教起来非常不方便啊
1回答
-
JoJo
2017-12-23
目前spring的实现是这样的,理论上可以是无状态的。
可以根据需要往jwt里放任意信息,理论上想做什么都可以。
用jwt的话,信息是直接从jwt里取的,不需要每次访问认证服务器,会话处理这块的代码我没读过,你可以自己看下。
我看到的资料是认证服务器不会清理会话。
规矩是慕课定的,我们只是遵照执行。
00
Spring Security技术栈开发企业级认证与授权
2662 学习 · 1561 问题
相似问题