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

已获管理员批准的User.Read.All为何未出现在OAuth令牌范围中

问题描述

我的Azure应用已获得管理员批准的User.Read.All权限:

管理员批准权限

我在OAuth注册中请求了以下范围:

scope:
  - profile
  - email
  - openid
  - offline_access
  - User.Read.All
  - Files.Read.All

授权调用成功后得到如下响应:

{
    "token_type": "Bearer",
    "scope": "profile email openid https://graph.microsoft.com/Files.Read.All",
    "expires_in": 3600,
    "ext_expires_in": 3600,
    "access_token": "...",
    "refresh_token": "...",
    "id_token": "..."
}

为何生成的令牌范围中没有User.Read.All?

我验证后发现该令牌确实无法访问https://graph.microsoft.com/v1.0/users,报错如下:

{
    "error": {
        "code": "ErrorInsufficientPermissionsInAccessToken",
        "message": "Exception of type 'Microsoft.Fast.Profile.Core.Exception.ProfileAccessDeniedException' was thrown.",
        "innerError": { ... }
    }
}

我是否遗漏了某些配置?

若在范围中添加https://graph.microsoft.com/.default,虽能从/users端点得到有效响应,但仅包含我自身的用户信息。


原因分析与解决办法

1. User.Read.All未出现在令牌范围的原因

这是因为你使用的授权码流触发了增量授权机制:当请求的权限包含需要管理员同意的类型(如User.Read.All),但当前用户的授权上下文里没有该权限的同意记录时,Azure AD不会自动将其加入令牌。而Files.Read.All可能因支持用户同意,且你的账号已完成该权限的用户同意,所以被包含进令牌。

2. 正确获取包含User.Read.All令牌的方案

方案一:触发管理员同意流程

在发起授权请求时,附加prompt=admin_consent参数,强制触发管理员同意页面。管理员完成同意后,后续令牌请求就能包含User.Read.All权限。

核心授权请求示例:

GET https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/authorize?
client_id={你的客户端ID}
&response_type=code
&redirect_uri={你的重定向URI}
&scope=profile email openid offline_access User.Read.All Files.Read.All
&prompt=admin_consent

方案二:确认权限类型并使用对应流程

你添加/.default后仅能获取自身信息,说明应用的User.Read.All是委托权限而非应用权限:

  • 委托权限:代表用户访问,即便管理员同意,普通用户默认也没有查看其他用户的权限,因此只能访问自身数据。
  • 应用权限:应用自身拥有独立权限,无需用户上下文,可访问所有用户数据,适合后台服务场景。

如果是后台服务需求,需在Azure AD应用中申请应用权限的User.Read.All并由管理员批准,之后使用客户端凭证流(Client Credentials Flow)配合https://graph.microsoft.com/.default范围,即可获取能访问所有用户信息的令牌。

3. 关键注意事项

  • 委托权限的User.Read.All:管理员同意后,用户需具备目录内的用户查看权限才能访问其他用户数据,普通用户默认无此权限。
  • 应用权限的User.Read.All:无需用户参与,仅需管理员批准,适合无交互的后台任务。
  • 增量授权模式下,未被同意的权限不会自动加入令牌,必须通过prompt=admin_consent或用户同意完成权限确认。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:25:15