如何使用前置通道处理来自身份服务器4的单点登出?

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

我们有一个使用Angular和AngularJS编写的多个SPA的解决方案。这些应用程序实现oidc-client-js库并在Identity Server 4中进行身份验证。由于AngularJS的限制,我们需要在iframe中呈现我们的传统AngularJS应用程序。有一个主应用程序允许通过IdentityServer4登录,然后我们可以在该主应用程序内打开不同的SPA。这是正常工作,直到我们注销然后登录不同的用户。在Angular7中编写的主应用程序和应用程序上,用户是正确的,但是当我们进入在iframe中呈现的应用程序时,用户将停留在上一个会话中。

根据IdentityServer文档,我试图添加FrontChannelLogoutUri来通知所有登录的客户端并结束所有会话。但我还没有找到这个注销页面应该做的事情。

我还试图在退出时清除所有补助金,但没有补助金被清除。为了实现这一点,我使用了以下方法:

await _persistedGrantService.RemoveAllGrantsAsync(subjectId, clientId);

IdentityServer中的此方法返回空列表。

var grants = await _interaction.GetAllUserConsentsAsync();

我相信在FrontChannelLogoutUri呈现后,会话应该结束但我不知道如何实现这一点。

javascript .net angularjs identityserver4 oidc
1个回答
0
投票

重定向到FrontChannelLogoutUri后,可能需要清除iframe中的会话存储空间。现在这个工作正常。

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