IdentityServer4 SPA到BFF到API的注销问题

时间:2020-08-14 17:39:54

标签: asp.net-core identityserver4

我正在构建一个基于IdentityServer4的流程的原型,其中有一个Angular SPA,一个“前端后端”(BFF)ASP.NET Core API和一个后端API服务。 (也是ASP.NET Core)都与https://demo.identityserver.io/ IdP的派生类进行交互。

我的BFF和后端API服务基于“ https://github.com/leastprivilege/AspNetCoreSecuritySamples/tree/aspnetcore3/BFF”中找到的示例

一切顺利,直到我尝试创建用户选择从IdP注销页面注销的方案为止。 BFF服务不会“通知”用户的令牌,并且会话已被撤消/删除,直到令牌过期得多。

我怀疑我应该使用在示例https://github.com/IdentityServer/IdentityServer4/tree/main/samples/Clients/src/MvcHybridBackChannel中找到的过程,其中BFF服务中的cookie事件处理程序实现ValidatePrincipal(CookieValidatePrincipalContext上下文)对IDP进行显式调用,以验证每个ID上的用户令牌请求。

第一个问题:这是完成此任务的正确模式吗?还是我使这个不必要的复杂?

第二个问题:询问IdP“此会话是否仍然有效?”的方法是什么? (这似乎很容易做到!)

谢谢。

1 个答案:

答案 0 :(得分:1)

第一个问题:这是完成此任务的正确模式吗?还是我使这个不必要的复杂?

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

第二个问题:问IdP“此会话是否仍然有效?”的方法是什么? (这似乎很容易做到!)

Idp不会验证会话或cookie,它会验证令牌。会话/ cookie管理是客户端应用程序的责任。了解更多here