从SSO中的多个系统注销(单点登录)

问题描述 投票:0回答:1

我正在为我们的系统实施SSO以集中用户身份验证和授权,我们将在其中使用SSO服务器(用户和会话管理器),用户使用他/她的凭据登录,然后将能够访问所有其他相关系统。

SSO的实施:

  1. 首先,用户将获得会话(访问令牌+刷新令牌),它们将存储在客户端。
  2. 如果他重定向到其他系统,SSO服务器将为该系统生成(单一使用令牌)
  3. 在系统上加载(单次使用令牌)将与一对访问令牌和刷新令牌交换,它们将存储在该特定系统的客户端
  4. 并且在每个服务器请求上,会话(访问令牌+刷新令牌)将通过请求头发送,以便系统的服务器可以从SSO服务器请求此用户的授权。

访问令牌的到期时间比刷新令牌少,并且它不存储在SSO服务器中,只检查其签名是否有授权,但是存储刷新令牌以便我们可以在以后需要时撤消它。 (由于我们稍后会有大量的授权请求,我不想存储访问令牌。)

问题是,如果用户想要注销,他/她的所有访问令牌都应该过期,但它们不会存储在数据库中,只存储在每个系统的客户端,我只能撤销刷新令牌,因此令牌保持有效,直到它为止。到期时间过去,直到那时它可以使用,这意味着用户仍然登录。

我使用JWT进行令牌生成和验证。

这是我在这里的第一个问题,我希望我已经正确地解释了这个问题。我会等待您的回应。

node.js express jwt
1个回答
0
投票

最好使用cookie来存储您的令牌。当用户退出时。只需清除cookie并返回即可。现在,用户没有访问令牌,也不会进行身份验证。

注意:确保制作安全的cookie。

© www.soinside.com 2019 - 2024. All rights reserved.