在ASP.NET Core 2上使用IdentityServer4。 使用ASP.NET MVC5与该用例相关的两个客户端。
编辑:使用cookie进行身份验证,隐式流程。
使用反向通道退出:
*涉及4个应用程序-两个客户端(分别称为客户端A和客户端B),IdentityServer实例和一个状态服务器,用于跟踪反向通道注销请求。
状态服务器跟踪两个参数:id_token的09-03 15:45:51.378 26263 26263 I fncsdk : [FNMA] Device: room's device
和sub
声明。
我遇到以下问题:
当用户登录到客户端A,然后导航到客户端B并在那里执行注销时,客户端B被注销,但是客户端A直到对它的下一个请求才发出。因此,如果用户现在决定使用另一个帐户(或相同帐户,无关紧要)登录到客户端B,然后才导航到客户端A,则客户端A将启动注销,因为有一个未完成的注销请求正在等待状态服务器,而无视用户已再次登录的事实。
有人对如何防止这种情况有想法吗?
答案 0 :(得分:1)
根据您的情况,当您的客户A执行“懒惰退出”时,我看不到任何问题,这触发了对IdSrv的新挑战,并以新令牌和新cookie完成。
重点不应是在每个特定的“延迟退出”上触发(循环)单次退出。