首页 > 解决方案 > 如何在会话过期后强制客户端 (RP) 注销用户

问题描述

拓扑

使用 IdentityServer4 实现的内部 OIDC 服务器 (OP)。

我们的 SPA 应用程序的内部后端客户端 (RP) 代理 Web 服务器。

RP 用作资源的内部 REST 服务器。

认证流程

混合,具有启用反向通道的 OP 和 RP。

问题

RP 处于“登录错觉”状态。当用户通过 RP 登录时,OP 和 RP 会正确地为用户创建服务器和本地会话 cookie,并具有默认过期时间。

没有适当的刷新令牌流,因此存在用户的访问令牌过期并且他们仍然使用过期令牌访问资源服务器的情况。这正确地向用户返回了 401。

如果我确实将用户的 OP 登录会话设置为过期,但 RP 决定无限期地让用户在本地登录,会发生什么情况?

我想到了几个可能的解决方案:

  1. 要求对每条路由进行挑战,以便重定向到登录流程启动。

  2. 反向通道注销流程。

考虑到我们的架构,选项 2 似乎是最好的,但我想知道它是否过度设计。当所述用户已被 OP 注销时,我真的只需要 RP 注销其本地用户。

参考

  1. Idsrv 注销

标签: c#identityserver4openid-connecthybridauth

解决方案


在我看来,前通道或后通道注销是正确的方法。

请记住,只有当用户明确退出时它才会启动。

如果用户的会话发生变化,您还可以使用会话监控立即得到通知,然后采取适当的措施。但是请注意,此默认实现不会将会话 ID cookie 的到期时间与主身份验证 cookie 对齐。


推荐阅读