【问题标题】:Azure AD B2C - Sign out a user from all sessionsAzure AD B2C - 从所有会话中注销用户
【发布时间】:2017-05-02 09:49:47
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 可以在here找到更新的退出网址

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


【解决方案1】:

微软现在已经为此提供了一个 API。我链接到以下博客,因为文档目前有误。

microsoft developer blog: revokeSignInSessions & invalidateAllRefreshTokens

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

Response  
HTTP/1.1 204 No Content 

【讨论】:

    【解决方案2】:

    我可能会迟到。但如果这有帮助的话。交流到文档

    当您将用户重定向到 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

    【讨论】:

    • 虽然我不能再尝试了,但这听起来像是我的答案。
    • 如果我错了,请纠正我,但这适用于同一个浏览器,对吗?如果用户在不同的浏览器或设备上登录,如何在这些浏览器或设备上实现单点登出?
    【解决方案3】:

    根据 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: Web sign-in with OpenID Connect了解更多信息。

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

    【讨论】:

    • 这就是我正在做的事情,但它仍然让我登录到其他应用程序,直到会话到期。我认为我需要手动检查对 API 端点的每个请求,以确定我是否仍在登录,如果没有销毁会话?
    • 我目前正在尝试这样做。我无法将用户从其他已登录的应用程序中注销。
    猜你喜欢
    • 2018-08-10
    • 1970-01-01
    • 2021-09-18
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    相关资源
    最近更新 更多