我有3个网站使用单个B2C租户。我被要求进行设置,以便当用户退出一个网站时,退出所有网站。
同样,如果他们的帐户被删除。
我认为我必须在每次请求时引入对Azure的调用以确定用户是否仍然登录,但据我所知,没有一个Graph API端点可以让我确定用户状态。
我是否以错误的方式思考这个问题?有没有办法使用B2C,Graph API,Active Directory客户端等轻松完成这项工作?
例如,在设置OpenIdConnectAuthenticationOptions时可能有一个选项。
答案 0 :(得分:2)
根据Azure文档中的说明:
在将用户引导至
end_session_endpoint
时,将清除某些用户使用Azure AD B2C的单点登录状态,它将不会将用户从用户的社交身份提供者(IDP)会话。如果用户在后续登录期间选择相同的IDP,则会在不输入凭据的情况下重新进行身份验证。如果用户想要退出您的B2C应用程序,并不一定意味着他们想要完全退出他们的Facebook帐户。但是,对于本地帐户,用户的会话将正确结束。
所以你可以直接使用end_session_endpoint
。您可以在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