Azure AD B2C - 从所有会话中注销用户

时间:2016-12-16 14:59:09

标签: azure azure-ad-b2c azure-active-directory azure-ad-graph-api

我有3个网站使用单个B2C租户。我被要求进行设置,以便当用户退出一个网站时,退出所有网站。

同样,如果他们的帐户被删除。

我认为我必须在每次请求时引入对Azure的调用以确定用户是否仍然登录,但据我所知,没有一个Graph API端点可以让我确定用户状态。

我是否以错误的方式思考这个问题?有没有办法使用B2C,Graph API,Active Directory客户端等轻松完成这项工作?

例如,在设置OpenIdConnectAuthenticationOptions时可能有一个选项。

3 个答案:

答案 0 :(得分:2)

根据Azure文档中的说明:

  

在将用户引导至end_session_endpoint时,将清除某些用户使用Azure AD B2C的单点登录状态,它将不会将用户从用户的社交身份提供者(IDP)会话。如果用户在后续登录期间选择相同的IDP,则会在不输入凭据的情况下重新进行身份验证。如果用户想要退出您的B2C应用程序,并不一定意味着他们想要完全退出他们的Facebook帐户。但是,对于本地帐户,用户的会话将正确结束。

所以你可以直接使用end_session_endpoint。您可以在b2c_1_sign_in策略端点的元数据文档中找到它,例如:

https://login.microsoftonline.com/fabrikamb2c.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=b2c_1_sign_in

您可以参考Azure Active Directory B2C: Web sign-in with OpenID Connect了解更多信息。

如有任何疑问,请随时告诉我。

答案 1 :(得分:1)

我可能会迟到。但是,如果有帮助。交流到文档

将用户重定向到Azure AD B2C注销端点(对于OAuth2和SAML协议)时,Azure AD B2C会从浏览器中清除用户的会话。但是,用户仍可能登录到使用Azure AD B2C进行身份验证的其他应用程序。为了使这些应用程序能够同时注销用户,Azure AD B2C将HTTP GET请求发送到该用户当前登录的所有应用程序的注册LogoutUrl。

应用程序必须通过清除标识用户的任何会话并返回200响应来响应此请求。如果要在应用程序中支持单点注销,则必须在应用程序的代码中实现LogoutUrl。

这称为一次退出。 请参阅https://docs.microsoft.com/en-us/azure/active-directory-b2c/session-overview#single-sign-out

答案 2 :(得分:1)

微软现在有一个 API。我链接到以下博客,因为文档目前是错误的。

microsoft developer blog: revokeSignInSessions & invalidateAllRefreshTokens

Request 
POST https://graph.microsoft.com/beta/users/{id}/revokeSignInSessions 

Response  
HTTP/1.1 204 No Content