identityserver4 - IdentityServer 如何跟踪用户登录的客户端?
问题描述
使用 Identity Server 4,我试图通过服务器端客户端(例如 MVC)的前端通道规范通知客户端用户已注销。该文件说;
IdentityServer 跟踪用户登录的客户端,并在 IIdentityServerInteractionService 上提供名为 GetLogoutContextAsync 的 API。
我想知道 IdentityServer 如何跟踪用户登录的客户端?它是否存储在内存中?如果是,那在多服务器 + 负载均衡器环境中如何工作?
解决方案
默认情况下,它将该信息作为属性存储在身份验证 cookie 中。您可以通过实现来提供自己的机制IdentityServer4.Services.IUserSession
。您可以在此处找到默认实现:
在我们的实现中,我们将用户会话数据存储在数据库中,因此会话客户端列表也存储在那里。这有一个很好的副作用,即不易受到可能影响 cookie 方法的竞争条件的影响。不同客户端的并发登录请求(这可能发生在我们的解决方案中)可能导致一个被另一个覆盖。
推荐阅读
- multithreading - 可以从运行 root.mainloop() 的线程以外的线程调用 tkinter root.after 吗?
- random - random numbers distributed across cells in Google Sheets
- dojo - Is there any way to use query method with dstore?
- c# - 在进入下一个场景之前重复打字机脚本的最后一行?
- swift - SwiftUI - 设置背景颜色时大型导航栏损坏
- php - Docker:Nginx + PHP-FPM -> index.php 下载未显示
- python - 转置堆叠后扣除连续的pandas列
- ssl - IIS - SSL - 如何通过中间 CA 限制客户端证书验证?
- render - 将数据传递到 Stenciljs 中的插槽
- javascript - 绑定到局部变量的简单显示/隐藏元素