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

Azure注册React应用调用API遇令牌签名/受众无效问题求助

Azure AD + MSAL 令牌验证错误排查方案

核心误区:ID Token 不能用于调用受保护 API

你用ID Token调用API触发的audience is invalid是必然问题——ID Token的aud声明是你的React应用客户端ID,而API期望的受众是它自身的应用ID URI/客户端ID。必须使用Access Token调用API,ID Token仅用于前端验证用户身份。

Access Token 签名/密钥错误的排查步骤

1. 确认API权限与请求Scope配置

  • 检查当前React应用的Azure AD配置:已添加目标API的Delegated权限,且完成管理员同意(若权限需租户级授权),权限范围要和能正常运行的应用完全一致。
  • 调用MSAL的acquireTokenSilent/acquireTokenPopup时,必须传入目标API的完整Scope,格式为api://<API客户端ID>/<权限名称>(例如api://123456/user.read),不能只传React应用的客户端ID。

2. 核对应用令牌版本配置

  • 查看应用清单的accessTokenAcceptedVersion字段:
    • 若目标API使用v2.0令牌,该字段需设为2;
    • 若API使用v1.0令牌,设为1或留空。
      确保该值和正常运行的应用完全一致。

3. 验证令牌声明的正确性

在浏览器控制台用以下代码解析Access Token的payload,检查关键声明:

const token = "你的Access Token";
const payload = JSON.parse(atob(token.split('.')[1]));
console.log(payload);
  • 确认aud是目标API的应用ID URI/客户端ID;
  • 确认iss(颁发者)与API预期的一致(v1.0格式:https://sts.windows.net/<租户ID>/;v2.0格式:https://login.microsoftonline.com/<租户ID>/v2.0);
  • 确认scp字段包含你请求的API权限范围。

4. 检查API的令牌验证逻辑

  • 确保API没有硬编码特定应用的验证密钥,而是通过Azure AD的OpenID元数据端点(如v2.0的https://login.microsoftonline.com/<租户ID>/v2.0/.well-known/openid-configuration)动态获取签名密钥;
  • 确认API接受的令牌版本(v1.0/v2.0)与你的应用请求的版本匹配。

5. 核对应用的基础配置

  • 检查应用清单的signInAudience字段,确保和正常应用一致(比如都是AzureADMyOrg);
  • 若API启用了令牌加密,确认当前应用的tokenEncryptionKeyId配置与正常应用匹配(如果不需要加密,该字段应留空)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:29:56