如何使用FrontChannel处理从Identity Server4进行的单次注销?

时间:2019-04-10 11:47:11

标签: javascript .net angularjs identityserver4 oidc

我们有一个使用多个以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之后,会话应该结束,但是我不知道该如何实现。

1 个答案:

答案 0 :(得分:0)

重定向到FrontChannelLogoutUri后,可能需要清除iframe中的会话存储。目前,它工作正常。