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

使用Bruno生成Azure Management API的OAuth2令牌时受众(AUDIENCE)错误

问题

我正在开发监控Azure资产的工具,用Bruno测试Azure Management API请求时遇到了问题:API需要有效的OAuth令牌,我在Bruno集合的令牌生成面板配置了所有必要参数,但生成的令牌**受众(AUDIENCE)**不符合要求。点击「Get Access Token」后流程看似正常,但令牌受众不对。而用Postman通过预请求脚本配置完全相同的参数,却能生成受众正确的令牌,Postman的预请求脚本如下:

const echoPostRequest = {
  url: 'https://login.microsoftonline.com/***/oauth2/token',
  method: 'POST',
  body: { 
    mode: 'formdata',
    formdata: [
        {key: "client_id", value:"***"},
        {key: "client_secret", value:"***"},
        {key: "resource", value:"https://management.azure.com/"},
        {key: "grant_type", value:"client_credentials"}
    ]
  }
};
解决办法
  • 检查Bruno令牌面板的资源参数:Bruno的OAuth配置面板中,client credentials模式下要确保**resource(资源)**字段填写的是https://management.azure.com/。部分版本的Bruno可能混淆了「受众」和「资源」字段,或是默认填充了Graph API的地址,直接修正该参数即可。
  • 改用Bruno预请求脚本:如果面板配置始终有问题,直接模拟Postman的逻辑编写Bruno预请求脚本,手动获取令牌:
    // Bruno预请求脚本示例
    const res = await fetch('https://login.microsoftonline.com/***/oauth2/token', {
      method: 'POST',
      headers: {'Content-Type': 'application/x-www-form-urlencoded'},
      body: new URLSearchParams({
        client_id: '***',
        client_secret: '***',
        resource: 'https://management.azure.com/',
        grant_type: 'client_credentials'
      })
    });
    const tokenData = await res.json();
    bruno.setEnvVar('AZURE_TOKEN', tokenData.access_token);
    
    之后在API请求的Authorization头中引用该变量:Bearer {{AZURE_TOKEN}}
  • 验证令牌内容:生成令牌后,用本地JWT解析工具(如jwt.io,无需上传令牌)检查aud字段是否为https://management.azure.com/,确认是否是Bruno面板默认替换了资源参数。
  • 升级Bruno版本:旧版Bruno对Azure AD的client credentials流程可能存在支持缺陷,尝试升级到最新版本后再测试。

内容的提问来源于stack exchange,提问作者Chris Hammond

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.02 00:42:28