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

Azure AD B2C - Sign out a user from all sessions

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

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

我认为我必须在每次请求时调用 Azure 以确定用户是否仍处于登录状态,但据我所知,没有 Graph API 端点这将使我能够确定用户状态。

我是不是想错了?有没有办法使用 B2C、Graph API、Active Directory 客户端等轻松做到这一点?

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

根据Azure文档的描述:

While directing the user to the end_session_endpoint will clear some of the user's single sign-on state with Azure AD B2C, it will not sign the user out of the user's social identity provider (IDP) session. If the user selects the same IDP during a subsequent sign-in, they will be reauthenticated, without entering their credentials. If a user wants to sign out of your B2C application, it does not necessarily mean they want to sign out of their Facebook account entirely. However, in the case of local accounts, the user's session will be ended properly.

所以可以直接使用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了解更多信息。

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

我可能要迟到了。但如果这有帮助。 A.c 到文档

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

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

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

Microsoft 现在有一个 API。我link到下面的博客,因为文档目前是错误的。

microsoft developer blog: revokeSignInSessions & invalidateAllRefreshTokens

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

Response  
HTTP/1.1 204 No Content