You need to enable JavaScript to run this app. MSAL2+Angular12调用.Net5 WebApi返回401提示audience无效如何解决
优惠活动
大模型
产品
解决方案
定价
更多

MSAL2+Angular12调用.Net5 WebApi返回401提示audience无效如何解决

Azure AD调用后端API返回401(audience无效)排查解决方案

核心问题为前端获取的访问令牌受众(aud字段)与后端API配置的预期受众不匹配,你遇到的错误信息如下:

www-authenticate: Bearer error="invalid_token", error_description="The audience 'api://my-guid' is invalid"

按以下步骤逐一排查即可定位解决:

1. 优先校验令牌实际内容

从浏览器网络面板复制请求携带的完整Bearer令牌,粘贴到jwt.io解析,确认aud字段的实际值,所有后端配置必须和这个实际值完全一致,不要仅凭注册信息推断配置值。

2. 修正后端.NET 5 WebApi配置

2.1 配置文件校验

检查appsettings.json中Azure AD配置节点,必须同时显式指定ClientId和Audience,不要省略前缀:

"AzureAd": {
  "Instance": "https://login.microsoftonline.com/",
  "TenantId": "你的Azure AD租户ID",
  "ClientId": "api://你的后端应用注册GUID",
  "Audience": "api://你的后端应用注册GUID"
}

如果使用中国区Azure,Instance字段替换为https://login.chinacloudapi.cn/。

2.2 服务注册代码校验

检查Startup.cs的认证服务注册逻辑,使用官方提供的标准重载,不要手动修改JWT验证参数:

services.AddMicrosoftIdentityWebApiAuthentication(Configuration, "AzureAd");

3. 前端Angular配置校验

  • 检查protectedResourceMap中配置的后端API对应作用域,必须为完整格式api://后端应用注册GUID/自定义作用域名,不可仅写作用域名或省略api://前缀
  • 确认MSAL获取访问令牌时请求的scopes参数包含上述完整作用域,不可直接用后端GUID作为scope值

4. 特殊场景排查

  • 核对后端应用注册的「应用ID URI」配置,如果你手动修改为自定义域名格式(如https://api.你的企业域名.com),则所有配置中的audience需要同步替换为该自定义URI
  • 如果是多租户应用,确认TenantId配置为common或对应组织的租户ID,不要填写错误的租户值
  • 确认后端应用注册没有开启「访问令牌需要版本2」的配置,如果开启则需要对应调整后端的令牌版本验证参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 01:06:04