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

Azure AD服务间认证场景下.NET 5 API报IDX10214受众验证失败

问题解决步骤

这个报错是JWT令牌的受众校验逻辑未匹配到令牌中携带的aud值导致的,按以下步骤排查配置即可解决:

1. 补充appsettings.json的Audience配置

在AzureAd配置节点新增Audience字段,值为你解码令牌得到的aud值:

"AzureAd": {
    "ClientId": "<MY_API_APP_ID>",
    "Instance": "https://login.microsoftonline.com/",
    "TenantId": "<MY_TENANT_ID>",
    "Audience": "api://<MY_API_APP_ID>"
}

2. 显式配置受众校验规则(可选,配置完第一步仍报错时使用)

如果补充Audience配置后仍有报错,可显式指定允许的受众列表,同时可开启PII显示方便后续排查具体校验不匹配的原因:
首先在ConfigureServices方法最顶部开启PII显示:

IdentityModelEventSource.ShowPII = true;

然后修改身份认证配置:

services
    .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApi(jwtOptions =>
    {
        Configuration.Bind("AzureAd", jwtOptions);
        // 同时允许带api://前缀和不带前缀的两种受众格式
        jwtOptions.TokenValidationParameters.ValidAudiences = new List<string>
        {
            "api://<MY_API_APP_ID>",
            "<MY_API_APP_ID>"
        };
    }, identityOptions => Configuration.Bind("AzureAd", identityOptions));

3. 校验API应用注册的令牌版本配置

进入Azure Portal找到你的API应用注册,打开「清单」页面,确认accessTokenAcceptedVersion属性的值为2,如果为null或1则修改为2后保存,等待2-3分钟配置生效后再测试。

4. 服务到服务场景额外配置

你使用应用角色实现权限管控,身份认证通过后还需要校验令牌中的角色信息,在控制器或接口上的[Authorize]属性中指定允许的角色即可:

// 替换为你在API应用注册中定义的应用角色值
[Authorize(Roles = "AccessMyApi")]
[ApiController]
[Route("api/[controller]")]
public class YourController : ControllerBase
{
    // 接口逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:06:02