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

Azure AD/MSAL应用调用接口报权限不足如何确定所需API权限

权限问题定位与配置方法

你收到的ErrorInsufficientPermissionsInAccessToken错误,搭配返回信息里的ProfileAccessDeniedException,已经明确指向根因:你拿到的访问令牌里携带的权限,不足以支撑当前调用/me接口读取用户档案的需求,不需要额外排查其他问题,结合你调用的接口就能直接确定需要配置的权限,步骤如下:

  • 第一步先校验当前令牌的实际权限:不要只看Azure门户的应用配置,把你拿到的ACCESS_TOKEN本地做JWT解析,查看scp(用户登录的委托场景)或者roles(应用身份的守护进程场景)字段,就能看到当前令牌实际生效的权限,多数权限不生效问题都是配置完权限没重新拿令牌、或者请求令牌时填错了scope导致的。
  • 针对你调用的GET https://graph.microsoft.com/v1.0/me接口,分两种场景配置对应权限:

    委托权限场景(带登录用户上下文,也就是你用MSAL做了用户登录后拿的令牌)

    最低只需要配置User.Read委托权限即可,配置完成后需要点击「授予管理员同意」(工作/学校账号租户场景),个人微软账号场景用户登录时自行同意即可。更高权限比如User.ReadWrite、User.Read.All也能满足调用要求,但遵循最小权限原则选User.Read就够,不要过度授权。

    应用权限场景(无用户登录,服务/后台任务直接调用)

    注意/me接口本身依赖登录用户上下文,纯应用身份调用这个接口本身不符合接口设计,哪怕给了全权限也容易报错。这种场景请把接口替换为/v1.0/users/{目标用户的object ID},对应的最低应用权限是User.Read.All,配置后必须完成管理员同意才能生效。
  • 常见踩坑提醒:
    1. 权限配置修改后,之前签发的旧访问令牌不会自动更新权限,必须重新触发MSAL的认证流程获取新令牌,否则用旧令牌调用会一直报权限错误。
    2. 用MSAL请求令牌时,scope必须指定为微软Graph对应的权限值,比如https://graph.microsoft.com/User.Read,如果填错了资源地址(比如填成了旧版AAD Graph或者其他自定义API地址),哪怕门户里配了Graph权限,令牌里也不会携带对应权限。
    3. 如果你的应用配置成了仅支持个人账号,不要配置租户级的管理员同意,走用户正常登录授权流程即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 18:27:25