Azure AD Directory Extensions声明缺失及令牌扩展声明数量限制咨询
Azure AD Access Token 扩展声明未显示问题解答
问题场景
已向Access Token中添加约18个扩展声明,确认所有声明均已赋值,但部分声明未出现在JWT Access Token中,不过可通过Graph API获取这些值。
JWT令牌中的扩展声明示例:
"extn.***_**_CreatedDate": [ "30/09/2022 12:21:01 PM +00:00" ]
应用清单令牌配置示例:
"optionalClaims": { "idToken": [ { "name": "extension_someguid_***_***_CreatedDate", "source": "user", "essential": false, "additionalProperties": [] } ] }
核心原因:Token大小限制
Azure AD 对 Access Token 的总大小有严格限制(通常不超过4KB)。当添加的内置声明+自定义扩展声明总数据量接近或超过这个阈值时,Azure AD 会自动省略部分非必需声明,以保证Token在标准HTTP传输范围内。这类被省略的声明仍会存储在Azure AD中,因此可以通过Graph API正常获取。
额外注意点
你提供的应用清单配置是针对idToken的声明,但你实际关注的是Access Token。如果需要扩展声明出现在Access Token中,需确保在optionalClaims的accessToken节点下做对应配置:
"optionalClaims": { "accessToken": [ { "name": "extension_someguid_***_***_CreatedDate", "source": "user", "essential": false, "additionalProperties": [] } ] }
不过结合你提到部分声明已出现在Access Token中,大小超限是更可能的原因。
建议
- 优先将业务核心声明配置到Access Token中,非核心数据通过Graph API按需获取。
- 定期清理不必要的扩展声明,避免Token持续膨胀。
内容的提问来源于stack exchange,提问作者Oleksandr Humeniuk
相关产品推荐
相关产品推荐

