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

.NET Core 3.1对接Azure ADB2C调用API报invalid_token受众无效错误

报错根因

该错误本质是API端的JWT验证逻辑预期的受众值与令牌实际携带的aud声明不匹配,即使手动核对两个值字面完全一致,仍有几个隐性配置问题会触发该报错:

  • Microsoft.Identity.Web库针对Azure AD B2C场景的默认校验规则和普通Azure AD不同,未显式配置B2C属性时,库会自动给预期受众添加api://前缀,和B2C颁发令牌中纯GUID格式的aud声明不匹配。
  • 部分版本的库存在报错信息模糊问题,令牌颁发者(iss)校验失败时也会返回受众无效的错误提示。
  • API端配置未显式指定ValidAudience参数,库默认读取的ClientId参数存在前后缀或值错误,导致校验不通过。
排查解决步骤
  1. 核对API端配置文件appsettings.json的AzureAd节点,确保包含以下正确配置,Audience字段直接填写令牌中aud声明的纯GUID值,不要添加任何前缀:
"AzureAd": {
  "Instance": "https://<你的B2C租户名>.b2clogin.com/",
  "ClientId": "<API注册的客户端ID>",
  "Domain": "<B2C租户域名,如xxx.onmicrosoft.com>",
  "TenantId": "<B2C租户ID>",
  "SignUpSignInPolicyId": "<使用的用户流名称,如B2C_1_signinsignup>",
  "Audience": "<令牌中aud声明的对应值,即API的客户端ID>"
}
  1. 修改API端Startup的认证配置,显式指定校验规则,避免默认规则的自动拼接逻辑:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)                
    .AddMicrosoftIdentityWebApi(jwtOptions =>
    {
        Configuration.Bind("AzureAd", jwtOptions);
        jwtOptions.TokenValidationParameters.ValidAudience = Configuration["AzureAd:Audience"];
        // 测试阶段可临时关闭受众校验定位问题,生产环境务必开启
        // jwtOptions.TokenValidationParameters.ValidateAudience = false;
    }, msIdentityOptions => { 
        Configuration.Bind("AzureAd", msIdentityOptions); 
    });
  1. 核对调用端的Scope配置,确保请求下游API的Scope为B2C标准格式:https://<B2C租户域名>/<API客户端ID>/<Scope名称>,不要使用普通Azure AD的api://前缀格式Scope。
  2. 确认令牌颁发策略和API端配置的用户流/自定义策略一致,不同策略颁发的令牌issuer值不同,也会触发该类报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:45:01