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

Azure报错IDW10203:客户端凭据流scope缺失access_as_machine问题咨询

问题原因

客户端凭据(client credentials)属于服务到服务的无用户认证流,这类流签发的令牌不会携带面向委托权限的scp(scope)声明,只会携带面向应用权限的roles声明。你当前代码用[RequiredScope]特性校验scp声明,和客户端凭据流的令牌结构不匹配,同时大概率没有正确配置应用权限并授予管理员同意,才会触发相关报错。

解决步骤

1. 修正Azure AD应用的权限配置

  • 打开Azure AD中你注册的受保护Web API的应用注册页面,进入「暴露API」板块,添加类型为「应用程序」的权限access_as_machine,不要选「委托」类型,添加后完成管理员同意授权。
  • 打开调用方客户端应用的应用注册页面,进入「API权限」板块,添加刚才Web API暴露的access_as_machine应用权限,同样完成管理员同意。

客户端凭据流必须使用api://{你的API应用ID}/.default作为scope申请令牌,你之前遇到的1002012报错是该流程的正常限制,不需要修改scope参数,保持.default后缀的写法即可。

2. 修正API端的权限校验代码

把原来校验委托权限的[RequiredScope]特性,替换为微软Identity Web提供的、专门校验应用权限的[RequiredAppRole]特性,修改后代码如下:

[Authorize]
[HttpGet("GetAsMachine")]
[RequiredAppRole("access_as_machine")]
public string GetAsMachine() => $"Machine {Assembly.GetExecutingAssembly().GetName().Version}";

3. 验证配置有效性

重新调用令牌端点获取新的访问令牌,解码令牌后检查是否存在roles声明,且声明值包含access_as_machine,如果存在则调用受保护接口就不会再报IDW10203错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 02:18:15