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

.NET Core API对接Azure AAD报401 Unauthorized受众无效如何解决

.NET Core API 配置Azure AAD鉴权修改应用URI后报受众无效401解决方案

问题根因

修改Azure AD应用注册的应用程序ID URI后,API侧的JWT令牌校验规则未同步更新,默认仅认可初始格式api://<Client_Id>为合法受众,因此aud字段为新URI的令牌会被判定为无效。

排查&修复步骤

  • 先校验Azure AD侧配置正确性
    • 进入对应API应用的「公开API」配置页,确认应用程序ID URI已成功保存为https://xyz.onmicrosoft.com/<<Client_Id>>,无拼写错误、无多余后缀
    • 检查请求令牌的客户端应用的API权限配置,确认已申请修改后API对应的权限,未残留旧格式api://<Client_Id>的权限配置
    • 确认请求令牌时传参正确:v2.0端点请求Client Credential/授权码流时,scope参数需使用新URI拼接,即https://xyz.onmicrosoft.com/<<Client_Id>>/.default(客户端凭据流)或对应委托权限值,不能再使用旧格式的scope
  • 更新.NET Core API侧的JWT鉴权配置
    如果你是用微软官方提供的Azure AD鉴权集成包,直接修改appsettings.json的AzureAd节点即可:
    "AzureAd": {
      "Instance": "https://login.microsoftonline.com/",
      "Domain": "xyz.onmicrosoft.com",
      "TenantId": "你的Azure租户ID",
      "ClientId": "API应用对应的ClientId",
      // 重点修改Audience字段为新的应用程序URI
      "Audience": "https://xyz.onmicrosoft.com/<<Client_Id>>"
    }
    
    如果你是手动编写AddJwtBearer鉴权逻辑,直接修改令牌验证参数里的合法受众配置即可:
    builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
      .AddJwtBearer(options =>
      {
        options.Authority = "https://login.microsoftonline.com/<<你的租户ID>>/v2.0";
        options.TokenValidationParameters = new TokenValidationParameters
        {
          // 若需要兼容新旧两种格式的令牌,可将两个值都传入ValidAudiences数组
          ValidAudiences = new [] 
          {
            "https://xyz.onmicrosoft.com/<<Client_Id>>",
            // 兼容旧格式令牌时打开下方注释
            // $"api://{builder.Configuration["AzureAd:ClientId"]}"
          },
          ValidateIssuer = true,
          ValidIssuer = $"https://sts.windows.net/{builder.Configuration["AzureAd:TenantId"]}/"
        };
      });
    
  • 校验配置生效
    改完配置后重启API应用,可先将拿到的access token做本地解码,确认payload里的aud字段值和你配置的合法受众完全一致(注意末尾不要多斜杠、不要有拼写差异),再发起请求即可正常通过鉴权。

踩坑提示:部分场景下如果配置了API多版本或者多环境的受众校验,不要遗漏对应环境的配置项,避免改了开发环境配置但发布到生产环境还是旧值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 23:00:17