c# - 如何在会话过期后强制客户端 (RP) 注销用户
问题描述
拓扑
使用 IdentityServer4 实现的内部 OIDC 服务器 (OP)。
我们的 SPA 应用程序的内部后端客户端 (RP) 代理 Web 服务器。
RP 用作资源的内部 REST 服务器。
认证流程
混合,具有启用反向通道的 OP 和 RP。
问题
RP 处于“登录错觉”状态。当用户通过 RP 登录时,OP 和 RP 会正确地为用户创建服务器和本地会话 cookie,并具有默认过期时间。
没有适当的刷新令牌流,因此存在用户的访问令牌过期并且他们仍然使用过期令牌访问资源服务器的情况。这正确地向用户返回了 401。
如果我确实将用户的 OP 登录会话设置为过期,但 RP 决定无限期地让用户在本地登录,会发生什么情况?
我想到了几个可能的解决方案:
要求对每条路由进行挑战,以便重定向到登录流程启动。
反向通道注销流程。
考虑到我们的架构,选项 2 似乎是最好的,但我想知道它是否过度设计。当所述用户已被 OP 注销时,我真的只需要 RP 注销其本地用户。
参考
解决方案
在我看来,前通道或后通道注销是正确的方法。
请记住,只有当用户明确退出时它才会启动。
如果用户的会话发生变化,您还可以使用会话监控立即得到通知,然后采取适当的措施。但是请注意,此默认实现不会将会话 ID cookie 的到期时间与主身份验证 cookie 对齐。
推荐阅读
- javascript - Javascript根据两个值计算相同的对象值数组
- rest - 我正在尝试通过 azure 数据工厂将数据从 REST API 下载到 azure 数据湖。如何在 Azure 数据工厂中传递 API 的查询参数?
- c++ - Xcode - ld:未找到架构 x86_64 的符号
- php - 警告:array_merge():使用 WooCommerce 的 Wordpress 中的参数 #1 错误消息
- javascript - 是否可以使用 jQuery 在 html 中创建多层动态表单?
- python - For循环根据空值删除列
- reactjs - 如何将描述中的 Strapi 链接更改为 HTML 链接标签
- javascript - 用javascript写一个类
- c# - 将值从一种形式发送到另一种形式而不返回到形式 1
- php - 在背景图像前面搜索点击后重定向到主页