[英]Is it possible to force sign-out from external IdP federated with B2C
从 Microsoft 文档开始:
注销 当您想将用户从应用程序中注销时,仅清除应用程序的 cookies 或以其他方式结束 session 是不够的。 您必须将用户重定向到 Azure AD B2C 才能注销。 否则,用户可能无需再次输入其凭据即可重新对您的应用程序进行身份验证。
根据注销请求,Azure AD B2C:
使 Azure AD B2C 基于 cookie 的 session 无效。 ** 尝试从联合身份提供商注销。**
注销会清除用户的单点登录 state 与 Azure AD B2C,但它可能不会将用户从其社交身份提供者 Z21D6F40CFB511982E4424E0E250A59 注销。 如果用户在后续登录期间选择了相同的身份提供者,他们可能会在不输入凭据的情况下重新进行身份验证。 如果用户想要退出应用程序,并不一定意味着他们想要退出 Facebook 帐户。 但是,如果使用本地帐户,则用户的 session 正常结束。
B2C 尝试从联合身份提供者注销意味着什么? 它如何尝试完成注销? 如果在联合 SAML/OIDC 元数据 URL 中提供,它是否会尝试使用 SingleLogoutService? 还是需要在 B2C/自定义策略方面进行一些额外的配置?
我已经(按照 B2C 文档)将 Salesforce 和 Auth0 联合添加到自定义策略中。 注销时,Azure AD B2C cookie-based session 无效。 尽管如果我选择任何联合 IdP 再次登录,我观察到此 session 不会失效,因为我在没有输入 IdP 凭据的情况下重新进行了身份验证。
有没有办法强制从联合 IdP 中退出?
本文档将引导您了解如何尝试从联合身份提供者注销。 审查部分:
注销会清除用户的单点登录 state 与 Azure AD B2C,但它可能不会将用户从其社交身份提供者 Z21D6F40CFB511982E4424E0E250A59 注销。 如果用户在后续登录期间选择了相同的身份提供者,他们可能会在不输入凭据的情况下重新进行身份验证。 如果用户想要退出应用程序,并不一定意味着他们想要退出 Facebook 帐户。 但是,如果使用本地帐户,则用户的 session 正常结束。
并非所有 IdP 都必须尊重这一点 - 就像社交身份提供者一样。 如果您尝试注销 Facebook 之类的社交身份提供者,它会产生一种奇怪的行为 - 我看到很多情况下最终用户讨厌他们将社交 IdP 用于多种服务,而您的服务出现并与他们的 session 混淆。
按着这些次序:
OpenId Connect - 如果身份提供者熟知配置端点指定 end_session_endpoint 位置。 注销请求未传递 id_token_hint 参数。 如果联合身份提供者需要此参数,则注销请求将失败。
OAuth2 - 如果身份提供者元数据包含 end_session_endpoint 位置。
SAML - 如果身份提供者元数据包含 SingleLogoutService 位置。
幕后发生的是通过 iframe 进行的前通道注销。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.