Microsoft Entra ID静态自定义声明无法在访问令牌中获取求助
解决Microsoft Entra ID应用自定义静态声明无法出现在访问令牌的问题
以下是排查和解决的关键步骤:
确认自定义声明的配置路径与类型
在Entra ID应用注册的令牌配置 > 添加声明中操作:选择「自定义声明」,明确指定令牌类型为访问令牌,填写声明名称,选择「源」为静态后设置对应的值。注意不要误选令牌类型(比如选成ID令牌),否则访问令牌里不会出现该声明。修正应用清单的完整配置
你已添加的acceptMappedClaims和accessTokenAcceptedVersion是必要项,但还需确保optionalClaims结构正确,手动添加的格式如下:"optionalClaims": { "accessToken": [ { "name": "你的自定义声明名称", "source": null, "essential": false, "additionalProperties": [] } ] }, "acceptMappedClaims": true, "accessTokenAcceptedVersion": 2注意:静态声明的值不能在清单中设置,必须回到「令牌配置」界面完成值的配置,清单仅用于声明要包含该字段。
验证令牌请求的端点与Scope
因为accessTokenAcceptedVersion设为2,必须使用v2.0端点请求令牌:- 授权端点:
https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/authorize - 令牌端点:
https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token
同时请求的scope必须包含目标应用的正确范围,比如api://{client-id}/.default,否则令牌不会携带该应用的自定义声明。
- 授权端点:
清除缓存重新获取令牌
客户端或浏览器可能缓存了旧令牌,先清除缓存,用全新会话重新请求,避免拿到未更新的旧令牌。检查企业应用权限配置(服务对服务场景)
如果是API调用场景,进入企业应用找到对应应用,确认用户/组权限已正确配置,且必要时完成管理员权限同意操作。
内容的提问来源于stack exchange,提问作者Ayaz Ul Islam
相关产品推荐
相关产品推荐

