You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure AD B2C中连接不同第三方身份存储的登录流程能否实现SSO?

Azure AD B2C 跨不同第三方身份存储应用的SSO实现方案

结论先行

直接用DefaultSSOSessionProvider跳过第三方IDP技术配置文件,来实现两个绑定不同第三方身份存储的应用之间的SSO行不通。因为Azure AD B2C的SSO会话和身份提供者(IDP)是绑定的,不同第三方IDP的会话完全独立,没法直接复用。

为什么会报错?

Azure AD B2C的SSO会话机制是和用户当前关联的IDP绑定的:

  • 每个第三方IDP的会话都是独立的,DefaultSSOSessionProvider只能管同一个IDP下的多应用SSO,跨不同IDP的会话根本没法共享。
  • 你尝试跳过第三方IDP的技术配置文件时,B2C找不到匹配的现有会话(毕竟两个应用绑的是不同IDP),自然就抛出异常了。

可行的实现方案

方案1:把用户同步到B2C本地目录

  • 给两个第三方IDP的自定义策略做配置,用户第一次登录时,把用户属性同步到B2C本地目录(用AAD-UserWriteUsingAlternativeSecurityId这个技术配置文件就行)。
  • 之后用户再登录,就优先用B2C本地目录的SSO会话,不用再跳转到第三方IDP验证。这样两个应用就能基于B2C本地用户实现SSO了。
  • 注意:两个策略都得配置本地目录的SSO会话提供者,确保DefaultSSOSessionProvider关联的是本地用户。

方案2:用自定义SSO会话存储

  • 借助Azure Blob Storage或者Redis搞一个自定义的SSO会话存储,用户用任一第三方IDP登录后,把会话信息存到这个自定义存储里。
  • 另一个应用登录时,先查自定义存储里有没有有效会话,有的话直接创建B2C会话,跳过第三方IDP的验证步骤。
  • 重点:得写自定义技术配置文件来处理会话的读写,还要保证会话安全——比如加密存储、设置合理的过期时间。

方案3:做统一身份入口代理

  • 搭一个中间身份代理服务,把两个第三方IDP的登录流程统一到这个代理入口。
  • 用户通过代理登录任意一个第三方IDP后,代理给B2C返回统一的身份断言,这样两个应用的B2C策略都基于这个统一断言实现SSO。

配置注意点

  • 如果选方案1,要确保两个自定义策略的UserJourney里包含本地目录的登录步骤,而且在RelyingParty节点的DefaultUserJourney里配置SessionType="Persistent",保证本地会话持久化。
  • 自定义会话存储的方案一定要严格遵守B2C的安全规范,别搞出会话劫持的风险。

内容的提问来源于stack exchange,提问作者Harshal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 05:45:39