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

如何不借助B2C登录流实现Entra External ID与Azure B2C联邦对接?

实现方案:Entra External ID独立用户流对接Azure B2C身份源

核心思路

将Azure B2C配置为Entra External ID的外部身份提供者(IdP),让Entra使用自身独立用户流发起认证流程,最终委托B2C完成用户身份验证,同时通过声明映射与自定义扩展实现B2C自定义声明的传递。

具体实现步骤

1. 在Entra External ID中添加Azure B2C作为OIDC身份提供者

  • 登录Entra管理中心,进入「外部身份」→「身份提供者」→「添加」→选择「OpenID Connect」类型
  • 配置B2C的OIDC元数据地址:
    https://<你的B2C租户域名>.b2clogin.com/<你的B2C租户域名>.onmicrosoft.com/<你的B2C用户流ID>/v2.0/.well-known/openid-configuration
    
  • 填写客户端ID(在B2C租户中创建的、用于与Entra对接的应用注册ID)和客户端密钥(该B2C应用的客户端密码)
  • 设置请求范围:至少包含openid、profile,若需获取自定义声明,可添加B2C中对应的自定义范围(如有)

2. 创建并配置Entra独立用户流

  • 在Entra管理中心进入「外部身份」→「用户流」→「新建用户流」,选择适合移动端的类型(如「注册和登录」)
  • 在用户流的「身份提供者」设置中,启用刚添加的Azure B2C IdP,关闭其他不需要的身份源
  • 在「用户属性和令牌中的声明」环节,添加需要从B2C获取的自定义声明(需与B2C中声明名称一致),并设置为在令牌中返回

3. 自定义声明映射与扩展

  • 若B2C的自定义声明未在默认OIDC响应中返回,需在Entra中创建自定义扩展属性:
    1. 进入Entra「外部身份」→「用户流」→「自定义属性」,添加与B2C自定义声明对应的属性(如b2c_user_role)
    2. 返回B2C IdP的配置页面,在「声明映射」中,将B2C返回的自定义声明(通常以extension_开头,如extension_userRole)映射到刚创建的Entra自定义属性
  • 确保在用户流的「令牌中的声明」列表中包含该自定义属性,以便API层能获取到对应值

4. 移动端对接Entra用户流

  • 移动端使用MSAL SDK(iOS/Android均可),配置Entra租户ID、移动端应用注册ID、以及创建的Entra用户流名称
  • 发起认证请求时,指定用户流参数:
    ?p=<你的Entra用户流名称>
    
  • 认证完成后,从ID Token或Access Token中解析出包含B2C自定义声明在内的所有用户信息

关键注意事项

  • B2C应用权限配置:在B2C租户的应用注册中,需为Entra对接应用分配读取用户自定义属性的权限,并完成管理员同意
  • 声明名称一致性:B2C自定义声明默认带有extension_前缀,映射到Entra时需准确对应,避免大小写或前缀错误
  • 流程验证:使用Entra用户流的「测试」功能,模拟认证流程,检查返回的Token是否包含预期的自定义声明
  • 信任维护:定期检查B2C与Entra之间的证书有效性,避免因证书过期导致联邦认证失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 10:47:40