从SSO中的多个系统注销(单点登录)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从SSO中的多个系统注销(单点登录)相关的知识,希望对你有一定的参考价值。
我正在为我们的系统实施SSO以集中用户身份验证和授权,我们将在其中使用SSO服务器(用户和会话管理器),用户使用他/她的凭据登录,然后将能够访问所有其他相关系统。
SSO的实施:
- 首先,用户将获得会话(访问令牌+刷新令牌),它们将存储在客户端。
- 如果他重定向到其他系统,SSO服务器将为该系统生成(单一使用令牌)
- 在系统上加载(单次使用令牌)将与一对访问令牌和刷新令牌交换,它们将存储在该特定系统的客户端
- 并且在每个服务器请求上,会话(访问令牌+刷新令牌)将通过请求头发送,以便系统的服务器可以从SSO服务器请求此用户的授权。
访问令牌的到期时间比刷新令牌少,并且它不存储在SSO服务器中,只检查其签名是否有授权,但是存储刷新令牌以便我们可以在以后需要时撤消它。 (由于我们稍后会有大量的授权请求,我不想存储访问令牌。)
问题是,如果用户想要注销,他/她的所有访问令牌都应该过期,但它们不会存储在数据库中,只存储在每个系统的客户端,我只能撤销刷新令牌,因此令牌保持有效,直到它为止。到期时间过去,直到那时它可以使用,这意味着用户仍然登录。
我使用JWT进行令牌生成和验证。
这是我在这里的第一个问题,我希望我已经正确地解释了这个问题。我会等待您的回应。
答案
最好使用cookie来存储您的令牌。当用户退出时。只需清除cookie并返回即可。现在,用户没有访问令牌,也不会进行身份验证。
注意:确保制作安全的cookie。
以上是关于从SSO中的多个系统注销(单点登录)的主要内容,如果未能解决你的问题,请参考以下文章