调用https://graph.microsoft.com/v1.0/users时遇Authorization_RequestDenied错误
针对你调用https://graph.microsoft.com/v1.0/users返回Insufficient privileges to complete the operation的问题,可按以下步骤排查:
确认权限类型与认证流匹配
后台无用户交互的服务场景,必须配置Application类型权限(如User.Read.All或Directory.Read.All);有用户登录的场景,需配置Delegated类型的User.Read.All权限,且认证流需对应(比如用Authorization Code流而非Client Credentials流)。解码令牌检查权限声明
用jwt.ms解码获取的访问令牌:- 应用权限(Client Credentials流)查看
roles字段,确认是否包含User.Read.All或对应权限; - 委派权限(用户登录场景)查看
scp字段,确认是否包含User.Read.All。
若令牌中无对应权限,说明生成令牌时的scope参数错误,或权限未同步到令牌。
- 应用权限(Client Credentials流)查看
验证管理员同意的权限有效性
登录Azure AD应用注册页面,查看应用的API权限列表:- 确认已添加的是
User.Read.All(而非仅单用户权限User.Read); - 确认权限状态为已授予管理员同意,且同意范围是当前租户。
- 确认已添加的是
检查令牌请求的scope参数
- Client Credentials流请求令牌时,
scope必须设为https://graph.microsoft.com/.default; - Authorization Code流请求令牌时,
scope需明确包含User.Read.All(如https://graph.microsoft.com/User.Read.All)。
- Client Credentials流请求令牌时,
等待权限传播
管理员同意权限后,部分租户可能需要5-15分钟的传播时间,可等待后重试调用。
错误信息参考:
{ "error": { "code": "Authorization_RequestDenied", "message": "Insufficient privileges to complete the operation.", "innerError": { "date": "2024-01-02T02:54:50", "request-id": "******************", "client-request-id": "******************" } } }
内容的提问来源于stack exchange,提问作者Rishabh
相关产品推荐
相关产品推荐

