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

如何让Access Token与ID Token均包含自定义声明?排查配置问题

自定义属性无法出现在Access Token的排查与解决

1. 确认自定义属性的范围配置

自定义属性(目录扩展)默认仅对ID Token生效。要让它出现在Access Token里,得满足对应条件:

  • 如果属性是用户扩展属性,必须在应用的「API权限」中添加User.Read.All(或对应自定义权限),并且完成管理员同意。
  • 如果是应用扩展属性,要确保属性创建时目标对象包含应用,且权限配置正确。

2. 检查Access Token的受众与请求范围

  • Access Token的aud(受众)必须是你的应用Client ID,不能是其他API(比如Microsoft Graph)。如果请求的是Graph的令牌,自定义属性不会被包含。
  • 请求令牌时,scope参数必须包含你的应用相关范围,比如api://{你的Client ID}/.default(代表应用权限),或者自定义的scope值。不能只传openid profile这类仅生成ID Token的范围。

3. 核对Manifest的可选声明格式

确保Manifest里的optionalClaims节点同时正确配置idToken和accessToken数组,且自定义属性的名称格式准确——目录扩展的名称是extension_{去掉连字符的Client ID}_{属性名},比如Client ID是abc123-def-456,要改成abc123def456。
示例配置:

"optionalClaims": {
  "idToken": [
    {
      "name": "extension_abc123def456_myCustomAttr",
      "essential": false
    }
  ],
  "accessToken": [
    {
      "name": "extension_abc123def456_myCustomAttr",
      "essential": false
    }
  ]
}

4. 确保权限已生效

添加权限后,必须点击「授予管理员同意」,并且等待5-10分钟让配置生效。如果是用户登录获取令牌,还要确保用户已重新登录,旧缓存令牌不会加载新配置。

5. 强制刷新令牌

旧令牌缓存会导致新配置不生效,可通过以下方式强制获取新令牌:

  • 注销用户后重新登录
  • 在令牌请求中添加prompt=login参数
  • 清除浏览器或客户端的令牌缓存

6. 验证令牌内容

用本地的JWT解析工具查看令牌内容,确认aud是否为你的应用Client ID,scope是否包含正确的应用范围,以及自定义属性是否存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 10:21:12