我目前有一个使用身份服务器 4 对用户进行身份验证的 .net 核心应用程序。我们有两种不同的应用程序;用户可以登录的我们网站的MVC部分,以及用户也必须登录的SPA。是否可以使用户在任何时候注销其中一个区域时都注销这两个区域?
这是Single Sign-On
的主要思想。不仅是单次登录,而且是单次注销。身份服务器 4 完全支持此功能,但您只需使用正确的配置配置客户端(MVC 应用程序和 SPA)。这是有关注销的官方文档。它有效。
编辑
PS:请记住,身份服务器不会access token
无效,一旦您注销。换句话说 - 如果您仍然拥有访问令牌,只要它有效(其有效期尚未过期),您就可以使用它。这就是为什么通常access token
的寿命设置较短的原因。
有两种前通道方法可以实现这一点,我建议同时使用这两种方法。
1) 前端通道注销,使用针对每个客户端注册的端点。当您注销 IDS4 时(假设它已正确实现),它将向当前会话期间登录的每个应用程序的注册终端节点发出请求。http://openid.net/specs/openid-connect-frontchannel-1_0.html
2) 会话监控规范,它使用一些 javascript 和跨域 iframe 魔术来通知客户端应用程序,当用户的会话在 IDP 上发生更改时。使用它,您可以立即响应更改并执行所需的任何清理。http://openid.net/specs/openid-connect-session-1_0.html
如 m3n7alsnak3 的回答中所述,这不会使任何 JWT 访问令牌失效(但是,您可以使用吊销终结点撤销刷新或引用令牌)。因此,我建议让客户端应用程序尽可能清除任何状态,即清除所有cookie,会话/本地存储等。