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

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

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

如果他们的帐户被删除,情况也是如此。

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

我是否以错误的方式思考这个问题?有没有办法使用 B2C、Graph API、Active Directory 客户端等轻松做到这一点?

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

azure azure-ad-b2c azure-active-directory azure-ad-graph-api
3个回答
13
投票

根据Azure Document上的描述:

虽然将用户定向到

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:使用 OpenID Connect 进行 Web 登录了解更多信息。

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


3
投票

我可能会迟到。但如果这有帮助的话。 A.c 到文档

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

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

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


2
投票

微软现在已经有一个 API 可以实现这一点。我链接到以下博客,因为文档当前是错误的。

微软开发者博客:revokeSignInSessions 和 invalidateAllRefreshTokens

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

Response  
HTTP/1.1 204 No Content 

请注意,截至 2023 年 12 月 28 日,api/user-invalidateallrefreshtokens 仅在测试版中可用

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