使用dotcore API在单页应用程序上进行联合注销

时间:2019-03-26 05:07:35

标签: c# single-sign-on oidc itfoxtec-identity-saml2 single-logout

我们正在使用ItFoxTec库进行saml身份验证。联合登录工作正常。问题在于联合注销。场景是这样的: 我们有两个名为mvcapp和singlepageapp(angular)的应用程序。当我单击mvcapp上的登录按钮时,我将重定向到我的IDP登录页面,并在身份验证后返回mvcapp。在mvcapp上有我的singlepageapp的链接。我单击该链接,我已经登录IDP,所以我的api从IDP接收了saml令牌,api消耗了令牌并制作了jwt令牌,并将我与查询字符串中的jwt令牌(使用saml令牌创建)一起重定向到singlepageapp。 / p>

现在,用户单击mvcapp中的注销按钮,注销请求将发送到IDP注销端点。 IDP知道,此用户已登录这两个应用程序,而IDP具有这两个应用程序的注销端点。现在IDP向singalpageapp发出注销请求(注销端点是api端点)。api没有任何cookie,但singalpageapp在浏览器上具有jwt令牌。所以我的问题是,api将如何删除jwt令牌。这样该用户将从这两个应用程序注销。

1 个答案:

答案 0 :(得分:0)

首先,如果IdP同时支持SAML 2.0和OIDC(OpenID Connect),则最佳解决方案是使mvcapp使用SAML 2.0,使singlepageapp使用OIDC。或两个应用都可以使用OIDC。

或者,我认为解决方案是让用户OIDC保护单页应用程序而不是仅保护JWT的JWT,实际上,该api也会成为IdP。由于该api充当IdP,因此该api需要举行用户会话,但无法使用cookie。

OIDC支持用户会话并使用OpenID Connect Session Management注销。该标准还支持Session Status Change Notification,其中singlepageapp客户端可以调用api IdP来验证JWT中的用户会话是否仍处于活动状态。