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

Azure B2C内置流程ID令牌缺失邮箱字段问题排查求助

解决Azure B2C从外部AD获取不到邮箱的问题

先检查外部AD(AD_2)的应用注册配置

  • API权限配置:
    1. 进入AD_2的应用注册,切换到「API权限」页,添加Microsoft Graph的User.Read委派权限(必须是委派权限,而非应用权限)。
    2. 点击「授予管理员同意」,确保权限生效——未完成此步骤的话,用户登录时无法获取邮箱相关声明。
  • 令牌配置:
    在应用注册的「令牌配置」页,点击「添加可选声明」,选择ID令牌,勾选email选项并保存。这一步是强制AD_2的ID令牌主动返回邮箱字段。
  • 用户属性验证:
    确认AD_2中测试的用户账号本身已配置邮箱属性,部分内部账号可能未设置邮箱,导致无法返回对应字段。

再检查Azure B2C的自定义OpenID提供商配置

  • 范围设置:
    在自定义IDP的配置页,确保「范围」字段包含openid email profile,而非仅openid。缺少email范围的话,AD_2不会返回邮箱声明。
  • 声明映射:
    进入自定义IDP的「声明映射」设置,将IDP返回的邮箱字段(需先确认AD_2实际返回的声明键,可能是email或mail,可通过JWT解码工具查看AD_2的ID令牌)映射到B2C的email声明。

最后检查B2C用户流(SignUp_SignIn)的配置

  • 声明与属性:
    1. 在用户流的「用户属性」页,确认已勾选「Email Address」作为要收集或返回的属性。
    2. 在「应用程序声明」页,确保「Email Address」已被勾选,这样B2C才会把邮箱包含在最终返回给应用的令牌里。
  • 身份提供商声明映射:
    在用户流的「身份提供商」设置里,找到你的自定义OpenID提供商,检查是否已将IDP的邮箱声明映射到B2C的email用户属性。

调试验证步骤

用浏览器开发者工具(F12)监控登录流程:

  1. 触发登录后,查看AD_2授权回调的请求,获取返回的ID令牌。
  2. 用JWT解码工具解析该令牌,确认里面是否包含邮箱字段:
    • 若令牌里无邮箱:回到AD_2的配置检查权限和令牌声明。
    • 若令牌里有邮箱但B2C返回的令牌没有:检查B2C的声明映射和用户流配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 19:40:06