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

使用托管身份调用Azure AD应用注册API遇未授权错误求助

解决托管身份调用Microsoft Graph API访问应用注册时的未授权问题

核心问题排查与解决步骤

1. 确认权限的类型与授予状态

  • 托管身份属于无用户上下文的服务主体,只能使用应用权限,不能用委托权限。确保你分配的是Application.ReadWrite.All的应用权限(而非委托权限)。
  • 应用权限必须由全局管理员或特权角色管理员授予管理员同意,仅分配权限不做同意操作会直接导致未授权错误。

2. 验证访问令牌的有效性

获取令牌后,可通过解码工具(如jwt.ms)检查关键字段:

  • aud:必须为https://graph.microsoft.com,确保令牌是针对Graph API颁发的。
  • roles:必须包含Application.ReadWrite.All,确认权限已被正确嵌入令牌。
  • 正确获取托管身份令牌的PowerShell命令示例:
$tokenResponse = Invoke-WebRequest -Uri "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://graph.microsoft.com" -Headers @{Metadata="true"} -Method Get
$token = ($tokenResponse.Content | ConvertFrom-Json).access_token

3. 检查目标应用注册的访问限制

部分应用注册可能被配置为仅允许特定主体访问,需确认托管身份的服务主体被允许查询该应用注册。

4. 修正请求细节

  • GET请求无需指定-ContentType application/json,可直接移除该参数,避免头部冲突。
  • 确保$applicationId是应用注册的对象ID(而非客户端ID),Graph API的/applications/{id}接口要求使用对象ID定位资源。

5. 分步测试验证

  • 先调用https://graph.microsoft.com/v1.0/applications获取应用列表,确认权限是否生效。
  • 列表请求成功后,再测试单个应用的查询请求。

注意:调用https://graph.microsoft.com/v1.0/me返回未授权是正常的,因为托管身份没有用户上下文,该接口仅适用于用户身份验证场景。

内容的提问来源于stack exchange,提问作者Nitin Vivek Bharti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 09:07:26