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

如何解决Blazor调用ASP.NET API时的aud无效声明错误?

问题解答

当然可以使用与API端点域名不同的aud令牌,aud(受众)是API的逻辑标识符,和API实际部署的域名没有强制绑定要求,很多企业场景里都会用自定义域名作为API的aud,完全合法。

你的问题大概率不是域名不一致导致的,而是更换aud后的配置遗漏,按以下步骤排查:

  • 检查ASP.NET API的JWT验证配置
    确保API端的验证逻辑接受新的域名作为合法受众。在Program.cs的认证配置里,要把新的域名添加到ValidAudiences列表中:

    builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(options =>
        {
            options.Authority = "https://login.microsoftonline.com/你的租户ID";
            options.TokenValidationParameters = new TokenValidationParameters
            {
                // 包含你新设置的域名aud,也可以保留旧的aud做兼容
                ValidAudiences = new[] { "https://你的新域名", "api://旧GUID/write.access" }
            };
        });
    

    如果API使用Microsoft.Identity.Web库,要确保AddMicrosoftIdentityWebApi时指定正确受众:

    builder.Services.AddMicrosoftIdentityWebApiAuthentication(builder.Configuration)
        .EnableTokenAcquisitionToCallDownstreamApi()
        .AddInMemoryTokenCaches();
    

    对应appsettings.json配置:

    "AzureAd": {
      "Instance": "https://login.microsoftonline.com/",
      "TenantId": "你的租户ID",
      "ClientId": "API的客户端ID",
      "Audience": "https://你的新域名"
    }
    
  • 验证Entra中的API范围配置
    更换Application ID URI后,要在API的「公开API」页面重新创建write.access范围,确保新域名对应的URI下存在该范围,且Blazor应用已被授予该范围的权限。

  • 检查Blazor应用的令牌请求范围
    Blazor应用请求令牌时,要使用新域名对应的范围(比如https://你的新域名/write.access),而非旧的api://GUID/write.access。确认Blazor配置文件(如appsettings.json)里的下游API范围已更新正确。

  • 解码令牌确认内容
    用jwt.ms解码Blazor获取的JWT令牌,检查aud字段是否为你设置的新域名,scp字段是否包含正确的write.access范围。如果令牌aud不对,说明Blazor的下游API配置未生效,需重新保存Entra配置并重启应用。

另外补充:自定义声明和aud是否用域名没有必然关联,之前用api://GUID的aud也可以添加自定义声明,不过既然已切换到域名,补全上述配置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 13:13:29