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

Azure AD v2 ID令牌可选声明配置后未返回问题咨询

Azure AD v2 ID令牌缺失用户基础字段排查结果

核心问题

ID令牌未返回given_name、family_name、preferred_username等字段的根本原因是授权请求的scope配置混淆了OIDC标准scope和Microsoft Graph权限scope。
你当前请求的https://graph.microsoft.com/profile、https://graph.microsoft.com/email属于Microsoft Graph的接口访问权限,仅作用于调用Graph接口的access token,完全不影响ID令牌的声明生成逻辑,和你查到的官方文档描述逻辑一致:针对其他资源(这里就是Microsoft Graph)的权限配置,不会改变返回给你自身应用的令牌内容。

配置修正方案

  • 调整PKCE授权请求的scope参数,在现有Graph权限前加入OIDC协议要求的标准scope,正确的scope列表示例:
    openid profile email offline_access https://graph.microsoft.com/User.Read
    
    各字段作用说明:
    • openid:OIDC协议必须携带的scope,是返回ID令牌的前提
    • profile:要求ID令牌返回用户基础身份信息,包含你需要的given_name、family_name、preferred_username字段
    • email:要求ID令牌返回用户邮箱字段
    • offline_access:返回refresh token的必要scope,你当前能拿到refresh token说明之前大概率已经配置,可自行确认
    • https://graph.microsoft.com/User.Read:保留你原有的Graph接口调用权限即可
  • 不需要额外创建自定义scope。你当前应用清单里的optionalClaims配置本身没有问题,角色、组声明能正常返回已经验证了清单配置生效,之前这些基础字段不返回只是因为缺少对应OIDC scope触发声明下发,调整scope后不需要修改清单配置就能拿到所需字段。

额外注意事项

  • 针对本地AD同步的用户,如果需要upn字段,需要确认Azure AD Connect同步配置中开启了UPN属性同步,且没有配置声明转换规则覆盖该字段;一般业务场景下使用preferred_username作为用户登录标识即可,兼容性更好。
  • 你之前看到ID令牌中已经返回了email字段,属于租户级配置的特殊返回逻辑,不代表scope配置正确,未携带profile scope时,所有用户基础身份类声明都不会默认下发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:51:17