携带Token调用Azure App URL报IDX10511签名验证错误如何解决
问题产生原因
- 你当前持有的令牌是Microsoft Graph专属的访问令牌,仅可用于调用Microsoft Graph API,无法用于访问你自己的Azure应用。Azure AD会为不同的访问目标(即令牌中的
aud/受众声明)生成不同签名、不同规则的令牌,二者无法通用。 - 你获取令牌时填写的
scope参数为Microsoft Graph相关的权限(例如User.Read),导致生成的令牌受众固定为https://graph.microsoft.com,你的应用校验时会判断受众与自身应用ID/URI不匹配,直接触发签名验证失败。 - 少部分情况是你自己的Azure应用身份验证配置错误,例如令牌签发端点版本(V1/V2)与你申请令牌的端点不一致,或者签名算法配置与令牌实际使用的算法不匹配。
解决方法
- 第一步:调整获取令牌时的
scope参数,替换为你自己的Azure应用公开的API范围,默认格式为api://<你的应用客户端ID>/.default,或者你在应用注册中自定义的权限值,不要使用任何Microsoft Graph相关的scope。 - 第二步:检查你的Azure应用的身份验证配置:
- 确认令牌签发端点版本和你申请令牌使用的端点版本完全一致
- 确认应用配置的可接受受众列表包含你申请令牌时指定的应用ID/应用URI
- 第三步:用JWT解析工具解析新获取的令牌,确认两个核心字段符合预期:
aud字段值为你的应用ID/应用URI,而非Microsoft Graph的地址iss字段值与你应用配置的令牌签发地址完全一致
- 配置正确后重新申请令牌,再调用你的应用接口即可,示例参考代码:
# 替换为你自己的应用地址,使用新申请的$token变量 Invoke-RestMethod -Uri "https://你的应用地址" -Headers @{"Authorization" = "Bearer $token"}
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

