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

通过Postman调用Microsoft Graph API获取用户时遭遇InvalidAuthenticationToken错误求助

解决Microsoft Graph API的InvalidAuthenticationToken错误(CompactToken parsing failed 80049217)

这个错误我之前排查过好几次,大概率是令牌使用方式或者权限配置的问题,咱们一步步来解决:

1. 先检查请求头的Authorization格式(最常见的坑)

调用Graph API时,必须在Authorization头里加上Bearer前缀,而且前缀和令牌之间要有空格。很多人容易漏掉这一步,导致服务器无法正确解析令牌。

正确的请求头示例:

Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6...

如果直接把令牌丢在Authorization头里(没有Bearer),服务器会把整个字符串当成CompactToken解析,直接触发80049217错误。

2. 检查授权模式和权限的匹配性

你用的是client_credentials(应用权限)模式,但请求的scope是https://graph.microsoft.com/user.read——这是委派权限(需要用户上下文的权限),应用权限模式下根本无法使用这个权限。

解决方法:

  • 生成令牌时,把scope改成https://graph.microsoft.com/.default(自动获取你在Azure AD里给应用配置的所有应用权限),或者明确指定应用权限的标识符https://graph.microsoft.com/User.Read.All;
  • 先去Azure AD的应用注册页面,给你的应用添加User.Read.All的应用权限,并且必须完成管理员同意(应用权限需要管理员手动批准,否则令牌里不会包含该权限)。

3. 避免使用需要用户上下文的API端点

应用权限模式下,你的应用是直接以自身身份调用API,没有绑定具体用户,所以不能调用/me端点(这个端点需要当前登录用户的上下文)。

应该改用获取用户列表或者指定用户的端点,比如:

GET https://graph.microsoft.com/v1.0/users

或者

GET https://graph.microsoft.com/v1.0/users/{user-id-or-upn}

4. 验证令牌的有效性

可以把生成的令牌复制到jwt.ms(本地解析,不会上传数据)解码,检查几个关键字段:

  • aud(受众):必须是https://graph.microsoft.com,如果是其他值说明生成令牌时的资源/scope配置错误;
  • iss(颁发者):应该是https://sts.windows.net/<你的租户ID>/,确认租户ID和请求令牌时的一致;
  • exp(过期时间):确保令牌还没过期;
  • roles字段:应用权限模式下,这个字段里应该包含User.Read.All,如果没有说明权限没配置或者没完成管理员同意。

按照这几步排查下来,基本就能解决这个错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 21:34:07