Azure AD OAuth Token无角色/范围信息,求排查解决方法
问题分析与解决方案
核心原因
你使用的是客户端凭证授权流(client_credentials),该模式下Token不会自动包含应用角色或权限,必须完成以下关键配置才能让这些信息出现在Token中。
缺失的配置项
1. 为调用方应用分配应用角色
你已在API应用中创建了应用角色,但未将这些角色分配给发起请求的客户端应用(即client_id对应的应用):
- 进入Azure AD的API应用注册 → 左侧菜单「应用角色」
- 找到你创建的应用角色,点击「分配用户/组」
- 选择发起curl请求的客户端应用,完成角色分配
2. 为应用权限授予管理员同意
如果添加了Graph或其他API的额外应用权限:
- 进入客户端应用注册 → 左侧菜单「API权限」
- 检查你添加的额外权限,点击「授予管理员同意」(需全局管理员或权限管理员操作)
- 注意:客户端凭证流仅支持应用权限,不支持委托权限
3. 确认Scope的有效性
你使用的scope=api://<application id>/.default是正确的,该Scope会自动包含所有已授予客户端的应用权限和分配的应用角色,但前提是完成上述两步配置。
验证结果
重新获取Token并解码后,应能看到:
- 应用角色会出现在
roles字段中 - 已授予的应用权限会通过
scp或roles字段返回(取决于权限类型)
内容的提问来源于stack exchange,提问作者lapots
相关产品推荐
相关产品推荐

