IdentityServer如何跟踪用户已登录的客户端?

问题描述 投票:0回答:1

[使用Identity Server 4,我试图通过服务器端客户端(例如MVC)的前通道规范通知客户端用户已注销。 this documentation说;

IdentityServer跟踪用户已登录的客户端,并在IIdentityServerInteractionService上提供一个名为GetLogoutContextAsync的API。

我想知道IdentityServer如何跟踪用户登录的客户端?它存储在内存中吗?如果是,那么在多服务器+负载均衡器环境中如何工作?

identityserver4 openid-connect
1个回答
1
投票

默认情况下,它将该信息作为属性存储在身份验证Cookie中。您可以通过实现IdentityServer4.Services.IUserSession提供自己的机制。您可以在此处找到默认的实现:

https://github.com/IdentityServer/IdentityServer4/blob/3.1.3/src/IdentityServer4/src/Services/Default/DefaultUserSession.cs

在我们的实现中,我们将用户会话数据存储在DB中,因此会话客户端列表也存储在其中。这样具有很好的副作用,即不易受可能影响cookie方法的竞争条件的影响。对不同客户端的并发登录请求(在我们的解决方案中可能发生)可能导致一个被另一个覆盖。

© www.soinside.com 2019 - 2024. All rights reserved.