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

调用Azure Consumption API时scope配置错误导致授权失败如何解决?

解决方案

核心问题说明

你目前遇到的报错本质不是scope参数配置错误,而是两个混淆导致的:

  • 混淆了「获取OAuth令牌时的scope/resource参数」和「Consumption API接口路径中的{scope}占位符」两个不同概念
  • 你注册的应用服务主体未被授予对应Azure资源的访问权限,你自行在应用注册中创建的自定义scope对调用Azure官方管理类API完全无效

具体操作步骤

1. 令牌获取参数校验

你当前使用v1 OAuth端点获取令牌的参数是正确的,不需要调整:

curl -X POST -d 'grant_type=client_credentials&client_id=你的应用ID&client_secret=你的客户端密钥&resource=https%3A%2F%2Fmanagement.azure.com%2F' https://login.microsoftonline.com/你的租户ID/oauth2/token

如果后续切换到v2 OAuth端点,只需要把resource参数替换为scope=https://management.azure.com/.default即可,不需要使用你自己创建的api://<client-id>/hub-app这类自定义scope。

2. 配置服务主体RBAC权限

这是解决报错的核心操作:

  • 进入Azure门户,打开报错信息中提到的目标订阅(路径为/subscriptions/*******-f489-47e8-****-*********的订阅)
  • 左侧菜单栏选择「访问控制(IAM)」,依次点击「添加」→「添加角色分配」
  • 角色选择页搜索并选中成本管理读者(Cost Management Reader)(遵循最小权限原则,该角色仅拥有消费、成本类数据的只读权限),点击下一步
  • 成员选择页「分配访问权限到」选择「用户、组或服务主体」,搜索你注册的应用名称/应用ID,选中后点击「审核并分配」完成配置
  • 等待3-5分钟权限生效后,重新获取令牌再调用接口即可

3. 接口路径中{scope}参数的正确取值

Consumption API接口路径中的{scope}占位符根据你要查询的统计范围填写即可,常用取值如下:

  • 订阅级别查询:/subscriptions/{你的订阅ID}
  • 资源组级别查询:/subscriptions/{你的订阅ID}/resourceGroups/{目标资源组名称}
  • EA计费账户级别查询:/providers/Microsoft.Billing/billingAccounts/{你的EA计费账户ID}

内容的提问来源于stack exchange,提问作者Sourabh Bhutani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:24:08