IdentityServer4反向通道注销问题

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

在ASP.NET Core上使用IdentityServer4 2.使用ASP.NET MVC5与此用例相关的两个客户端。

编辑:使用cookie进行身份验证,隐式流程。

使用反向通道注销如下: *涉及4个应用程序 - 两个客户端(我们称之为客户端A和客户端B),IdentityServer实例和状态服务器,以跟踪反向信道注销请求。

  1. 客户端A启动注销,使登录cookie无效。
  2. 客户端用户使用正确的id_token重定向到IdentityServer的/ account / logout。
  3. IdentityServer使登录cookie无效,并为所有已登录的客户端调用反向通道注销操作。
  4. 客户端B的反向信道注销动作验证请求并通知状态服务器注销请求。
  5. 当向客户端B发出下一个请求时,该客户端查询状态服务器并获得有关未完成的签出请求的信息,这导致它使签出cookie无效,从而导致成功注销。

状态服务器跟踪两个参数:来自id_token的subsid声明。

我有以下问题:

当用户登录到客户端A,然后导航到客户端B然后在那里执行注销,客户端B退出,但客户端A直到下一个请求被发出。因此,如果用户现在决定使用其他(或相同,无关紧要)帐户登录客户端B,然后导航到客户端A,则客户端A将启动注销,因为有一个未完成的注销请求等待状态服务器,无视用户在此期间再次登录的事实。

有没有人知道如何防止这种情况?

asp.net authentication asp.net-core identityserver4 openid-connect
1个回答
1
投票

根据您的方案,当您的客户端A执行“延迟注销”时触发对IdSrv的新挑战,最后使用新令牌和新cookie,我看不到任何问题。 重点应该是不要在每个特定的“延迟注销”上触发(循环)单点注销。

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