Azure APIM使用validate-azure-ad-token验证AD令牌报错401的排查方法
Azure AD令牌验证失败(Invalid Azure AD JWT)排查步骤
校验JWT令牌核心字段
- 解码令牌(可使用本地工具如jwt.io,避免上传敏感数据),核对以下关键字段:
iss:需与策略中tenant-id匹配,注意v1版本格式为https://sts.windows.net/{租户ID}/,v2版本为https://login.microsoftonline.com/{租户ID}/v2.0,版本不匹配会导致验证失败aud:必须和策略<audience>配置的api://$$$$$$完全一致,包括前缀、大小写,无拼写错误exp/nbf:确认令牌未过期(当前时间<exp)且已生效(当前时间>=nbf)tid:租户ID需与策略tenant-id完全一致
- 解码令牌(可使用本地工具如jwt.io,避免上传敏感数据),核对以下关键字段:
核对客户端应用ID匹配性
- 解码令牌后查看
azp(v1/v2通用)或appid(v1)字段,该值必须与策略<client-application-ids>下的$$$$$$完全匹配 - 若使用的是用户令牌(而非应用服务令牌),
azp是用户发起授权的客户端应用ID,需确保该ID已被加入策略的允许列表
- 解码令牌后查看
确认令牌获取请求参数正确性
- 检查令牌请求的端点
https://login.microsoftonline.com/{租户ID}/oauth2/token中,租户ID与策略配置一致 - 若使用v1端点,
resource参数需设为策略中的audience值(api://$$$$$$);若使用v2端点,scope参数需设为api://$$$$$$/.default - 若为用户令牌,确认授权流程(如授权码流)中,用户已被授予访问该audience的权限
- 检查令牌请求的端点
检查APIM策略应用范围
- 确认
validate-azure-ad-token策略已应用到目标API、产品或全局级别,确保请求路径会触发该策略执行 - 排查是否有其他APIM策略修改了
Authorization请求头,导致令牌被篡改或丢失
- 确认
验证令牌签名与颁发者信任
- 确认APIM所在环境可访问Azure AD元数据端点:
https://login.microsoftonline.com/{租户ID}/.well-known/openid-configuration,若APIM部署在虚拟网络内,需确保出站规则允许访问该地址 - 解码令牌时确认签名算法为RS256,且签名可通过Azure AD公钥验证
- 确认APIM所在环境可访问Azure AD元数据端点:
检查权限配置完整性
- 确认策略中配置的应用ID已被授予访问Dynamics 365 API的权限,且应用权限已完成管理员同意,委托权限已完成用户同意
- 若使用用户令牌,确认用户自身拥有访问Dynamics 365数据的权限,且令牌
scp字段包含对应权限声明
内容的提问来源于stack exchange,提问作者GT.
相关产品推荐
相关产品推荐

