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

使用MSAL与JWT处理多受众及.NET Core API认证401问题

两个.NET Core API通过Microsoft Entra认证通信的401问题

我遇到两个基于.NET Core的API通信认证难题,两个API均使用Microsoft Entra验证请求中的JWT承载令牌。我通过Client Secret和TenantId从Entra服务器获取JWT令牌(客户端凭证流),这一步能正常完成,但将该令牌用于调用另一个API时,收到401未授权响应。

架构示意图

API通信架构

接收API(第二个API)的认证配置

services.AddAuthentication(options =>
 {
     options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
     options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
 }).AddJwtBearer(options =>
 {
     options.Authority = configuration.GetValue<string>("Authentication:Authority");
 });

services.AddOptions<JwtBearerOptions>(JwtBearerDefaults.AuthenticationScheme)
    .Configure<IConfiguration>((options, configuration) =>
    {
        configuration.GetSection("Authentication").Bind(options);
    });

services.AddAuthorization();

令牌获取的ConfidentialClient实现

public class ConfidentialClient : IConfidentialClient
{
    private readonly AzureADOptions _ADOConfig;
    
    // 该对象会在内存中缓存令牌 - 需保持单例
    private readonly IConfidentialClientApplication clientApp;

    public ConfidentialClient(IOptions<AzureADOptions> options) 
    {
        this._ADOConfig = options.Value;
        this.clientApp = ConfidentialClientApplicationBuilder.Create(_ADOConfig.ClientId)
            .WithClientSecret(_ADOConfig.ClientCredentials.First().ClientSecret)
            .Build();
    }

    public async Task<string> GetToken()
    {
        // 请求时指定租户级别的权限中心
        var authResult = await this.clientApp.AcquireTokenForClient(scopes: new[] { _ADOConfig.Scopes.First() })
                .WithTenantId(_ADOConfig.TenantId)
                .ExecuteAsync();

        return authResult.AccessToken;
    }
}

问题分析

前端(第三方应用)使用MS登录获取的令牌与该API通信时一切正常,但用ConfidentialClient获取的令牌却触发401。对比两种令牌后发现,核心差异在于Audience(受众):通过ConfidentialClient获取的令牌受众为通用型,与接收API的JWT认证策略配置的受众(及前端令牌的受众)不一致,这应该是导致令牌被拒绝的原因。

提问

  1. 是否可以为ConfidentialClient配置特定受众?
  2. 能否将JWTBearer认证策略配置为可接受多个受众?

内容的提问来源于stack exchange,提问作者Ignacio Iron Babbini

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 22:14:54