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

已实现Azure AD客户端凭据流,验证AccessToken时因缺少scp属性失败求助

解决Azure AD客户端凭据流程中Token验证报错“scp属性不存在”的问题

错误原因

客户端凭据授权属于应用级权限,这类场景下生成的Access Token,权限声明字段是roles而非scp——scp是用户委派权限(通过用户上下文获取token)才会携带的字段。你使用的验证工具默认检查scp字段,因此触发错误。

解决方案

1. 正确配置API2的应用权限

  • 在Azure AD中找到API2的应用注册,进入「公开API」页面,添加应用角色(Application Roles),定义API2对外提供的应用级权限(比如api2.read、api2.write)
  • 找到API1的应用注册,进入「API权限」页面,添加API2的应用级权限,完成后必须点击授予管理员同意(客户端凭据流程要求应用权限必须经过管理员同意才能生效)

2. 调整Token验证逻辑

修改验证代码,将原本检查scp字段的逻辑替换为检查roles字段:

  • 找到验证工具中判断payload.scp的代码段,替换为判断payload.roles是否存在
  • 验证时检查roles数组中是否包含API1被授予的目标权限(比如判断payload.roles.includes('api2.read'))

3. 确保Token获取的Scope正确

客户端凭据流程中,获取Token时的scope必须格式为api://<API2的客户端ID>/.default,这个scope会返回所有已授权给API1的应用角色,确保生成的Token payload中包含roles字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:20:52