我正在开发SSO权限(例如FB或Google),其他客户端应用程序将使用它来对用户进行身份验证。我遇到以下问题。 我有2个客户端应用程序(Identity Server客户端)-ClientA和ClientB。现在,单个用户User1登录到ClientA Web应用程序。他输入用户/密码,并为User1 / ClientA组合颁发令牌。 然后,User1登录到ClientB应用程序。没有登录对话框,这很好,因为Identity Server使用cookie来识别相同的会话。调用令牌终结点为User1 / ClientB组合发布令牌。
登出有问题。我从ClientA应用程序注销,该应用程序也取消了该用户(SubjectId)在Identity Server上的会话(通过调用HttpContext.SignOutAsync(“ oidc”))。 现在,ClientB应用程序应该怎么办?我发现了一些有关此问题的查询,大多数人也希望其他应用程序也退出(使用前通道或后通道),但我希望其他应用程序以登录状态继续运行。从我的角度来看,这与您使用FB登录StackOverflow时的情况相同,例如Tripadvisor使用FB,当您从其中一个站点注销时,您仍将登录其他站点。 在我的情况下,ClientB仍然可以运行,它具有有效的令牌,并且可以调用后端API。但是,当我从ClientB启动相同的注销时,身份服务器对此感到不满意,因为它找不到此SubjectId:
正在处理针对匿名用户的注销请求...
结束会话请求验证失败:验证ID令牌提示时出错...
为什么身份服务器将这两个应用程序视为一个会话并在退出一个应用程序时将其删除?在这种情况下,推荐的方法是什么?
谢谢
彼得