Identityserver4 是否有方法结束主题ID的所有会话?

Identityserver4 是否有方法结束主题ID的所有会话?,identityserver4,Identityserver4,我想做的是,当用户更改/重置密码时(使用ASP.NET核心标识),为用户结束所有会话。我正在SPA内部使用oidc客户端js库。我已经找到了如何结束用户当前会话,并使同一会话中的任何选项卡(例如,同一浏览器窗口中的其他选项卡)通过检查会话iFrame识别会话已结束,但任何其他会话(例如,在匿名窗口中)似乎仍能正常运行会话,即使该主题ID的刷新令牌/所有持久授权已被撤销 是否有某种方法可以使iFrame返回到客户端,即所有会话的会话都已结束,例如iFrame页面可能正在检查该会话的持久授权或其他内

我想做的是,当用户更改/重置密码时(使用ASP.NET核心标识),为用户结束所有会话。我正在SPA内部使用oidc客户端js库。我已经找到了如何结束用户当前会话,并使同一会话中的任何选项卡(例如,同一浏览器窗口中的其他选项卡)通过检查会话iFrame识别会话已结束,但任何其他会话(例如,在匿名窗口中)似乎仍能正常运行会话,即使该主题ID的刷新令牌/所有持久授权已被撤销

是否有某种方法可以使iFrame返回到客户端,即所有会话的会话都已结束,例如iFrame页面可能正在检查该会话的持久授权或其他内容?如果当前发布的访问令牌继续工作(它们是短期的),我可以接受,但我只希望刷新令牌失效,会话结束。

选项1 有一个OpenID Connect会话草案规范,它可以满足您的需要—它允许前端客户端通过iframe检查当前会话状态。这是一个草稿,可能不会由ASP.NET核心标识实现

选择2 以编程方式解决问题的另一种机制是在令牌交换代码中进行检查。您的访问令牌可能会相对较短,因此前端必须定期获取新的访问令牌(例如,通过刷新令牌,或通过隐式流上的id令牌)

在令牌交换中,您可以检查上次更新密码时的时间戳

如果它比发出令牌时的时间戳更晚,那么您可以通过选择的机制返回401并管理重定向到身份验证端点,而不是发出新的访问令牌

这不会立即将用户从其他浏览器窗口注销,因为这取决于您的访问令牌的到期窗口。但是,If确实具有跨浏览器工作的优势,因为它不取决于特定于浏览器的会话信息。它还可以检查是否有被列入黑名单的客户,或者是否有更改其电子邮件地址的客户邮件地址和其他可能与强制重新身份验证相关的检查

对于腰带和背带,您可以使用这两种技术