两个通过Oauth2进行SSO的应用,如何在主应用登出或登入到另一个用户时,通知子应用重登?

Kit_lee 发布于 2019/12/06 09:42
阅读 268
收藏 0

收藏!数据建模最全知识体系解读!>>>

环境是这样,有一个主应用,维护有用户帐号,是整个应用服务群的主登入入口。有一个子应用,使用spring-security及spring-oauth2与主应用实现sso登入获取用户信息及用户权限。

一般来说,每个用户只有自己一个帐号,所以在进入子应用时,都没有问题。

问题在于,当拥有多个帐号时,如果先登入A帐号,进入子应用,子应用通过oauth2获取到登入信息,接着短时间内在主应用登出,切换帐号,再次进入子应用,这时候子应用上一个session会话还没有消息,显示的仍然是主应用的信息。

面对这种问题,有什么好的解决方法?

我这边想的是在子应用关闭页面时都去主动清除子应用的session,但用户如果是多开窗口,另一边窗口的页面在继续使用时可能会造成影响。

加载中
0
b
bigbatcn

Oauth2只是一个协议过程,session的维护他是没有办法的。建议不要将认证和应用放在一起,建议独立出一个认证服务器。认证服务器同一管理session可以立即使session失效。也可以子应用中有拦截器判断认证的有效性时

Kit_lee
Kit_lee
是的,当初为了方便将认证服务器和资源服务器合在一起,现在想起来,单独一个认证服务器好一些
0
Hakiu
Hakiu

这要看你是实时认证,还是登陆认证了

如果是实时认证,主应用退出,那么认证的凭据Ticket就无效了,子应用在刷新页面的时候会就退出

如果是登陆认证,且有失效时间,那就没办法,因为子应用登陆一次就不需要再跟验证服务器打交道了

Kit_lee
Kit_lee
是登陆认证:joy:
返回顶部
顶部