Asp.net core IdentityServer4 SPA到BFF到API注销问题

Asp.net core IdentityServer4 SPA到BFF到API注销问题,asp.net-core,identityserver4,Asp.net Core,Identityserver4,我正在构建一个基于IdentityServer4的流程的原型,其中我有一个Angular SPA、“后端对前端”(BFF)ASP.NET核心API和一个后端API服务(也是ASP.NET核心),所有这些都与IdP的派生版本交互 我的BFF和后端API服务基于在https://github.com/leastprivilege/AspNetCoreSecuritySamples/tree/aspnetcore3/BFF" 在我尝试创建用户选择从IdP注销页面注销的场景之前,一切都进行得很顺利。BF

我正在构建一个基于IdentityServer4的流程的原型,其中我有一个Angular SPA、“后端对前端”(BFF)ASP.NET核心API和一个后端API服务(也是ASP.NET核心),所有这些都与IdP的派生版本交互

我的BFF和后端API服务基于在https://github.com/leastprivilege/AspNetCoreSecuritySamples/tree/aspnetcore3/BFF"

在我尝试创建用户选择从IdP注销页面注销的场景之前,一切都进行得很顺利。BFF服务不会“注意”用户的令牌和会话已被撤销/删除,直到令牌过期很久

我怀疑我应该使用示例中的流程,其中BFF服务中的cookie事件处理程序实现ValidatePrincipal(CookieValidatePrincipalContext上下文),对IdP进行显式调用,以验证每个请求中用户的令牌

第一个问题:这是实现这一目标的正确模式吗?还是我让这变得不必要的复杂

第二个问题:问IdP“此会话仍然有效吗?”(这似乎是一件很容易做到的事情!)

先谢谢你

第一个问题:这是实现这一目标的正确模式吗?还是我让这变得不必要的复杂

是的,这是正确的,当您直接从IDP注销时,您需要通知客户端应用程序用户已注销。如果您在BFF上使用cookie,则需要对其执行相同的操作。阅读更多

第二个问题:问IdP“此会话仍然有效吗?”(这似乎是一件很容易做到的事情!)

Idp没有验证会话或cookie,而是验证令牌。会话/cookie管理由客户端应用程序负责。阅读更多