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

使用Postman生成Azure委托权限令牌遇授权拒绝问题求助

Azure令牌无Scope导致API授权失败解决方案

问题概述

通过Postman调用Azure令牌接口生成令牌后,用于API请求时收到错误:

"Authorization denied for this request"
经JWT.io验证,生成的令牌中无任何scope声明,且当前需使用委托权限(delegated permission)。

原请求配置:

  • Endpoint: https://login.microsoftonline.com/:tenant_id/oauth2/token
  • 请求方法:POST
  • Header: Content-Type: application/x-www-form-urlencoded
  • Body(Form-data):
    grant_type:client_credentials
    client_id:你的Azure应用ID
    client_secret:你的Azure应用密钥
    resource:目标API的URL
    

原因分析

你使用的client_credentials是客户端凭据流,属于应用权限(application permission)范畴:

  • 该流无需用户参与,仅代表应用本身获取权限
  • 令牌中不会包含scope声明,若配置了应用权限则会返回roles声明
  • 与你需要的**委托权限(代表用户获取权限)**完全不兼容,因此API拒绝授权

解决步骤

要获取包含委托权限scope的令牌,需切换到授权码流(Authorization Code Flow)(推荐,安全性更高),配置如下:

1. 配置授权码获取请求

  • Endpoint: https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/authorize
  • 请求方法:GET
  • Query参数:
    • client_id: 你的Azure应用注册ID
    • response_type: code(固定值)
    • redirect_uri: 需与Azure应用注册中"身份验证"选项卡配置的重定向URI一致(推荐用Postman自带的https://oauth.pstmn.io/v1/callback)
    • scope: 你需要的委托权限完整值(例如https://graph.microsoft.com/User.Read,需对应目标API的权限)
    • response_mode: query(固定值)

发送请求后,会跳转到Azure登录页面,完成用户登录后,URL中会返回code参数,这就是授权码。

2. 用授权码换取访问令牌

  • Endpoint: https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token
  • 请求方法:POST
  • Header: Content-Type: application/x-www-form-urlencoded
  • Body(x-www-form-urlencoded格式):
    grant_type:authorization_code
    client_id:你的Azure应用注册ID
    client_secret:你的Azure应用密钥(若为机密客户端需填写)
    code:步骤1中获取的授权码
    redirect_uri:与步骤1一致的重定向URI
    scope:与步骤1一致的委托权限scope
    

3. 验证与权限检查

  • 获取令牌后,用JWT.io解析,确认令牌中包含scp声明(对应你配置的委托权限)
  • 确保Azure应用注册中已添加目标API的委托权限,且已完成管理员同意(部分权限需要)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 11:23:15