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

如何在ASP.NET Core应用中配置两个认证中间件?

在ASP.NET Core中配置多个JWT认证中间件是完全可行的

你可以为不同的认证场景配置独立的JWT认证中间件,只要给每个方案指定唯一的名称即可。针对你的需求——一个用于普通用户的Firebase Bearer令牌验证,另一个用于管理员组身份的认证——配置示例如下:

// 先设置默认认证方案(可选,若大部分接口使用Firebase认证)
services.AddAuthentication(options =>
{
    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
// 第一个中间件:Firebase用户认证
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options =>
{
    options.Audience = "your-firebase-app-id";
    options.Authority = "https://securetoken.google.com/your-firebase-app-id";
})
// 第二个中间件:管理员组身份认证
.AddJwtBearer("GroupAdminAuth", options =>
{
    // 配置组身份认证的JWT验证参数,根据你的实际认证源调整
    options.Audience = "your-group-auth-audience";
    options.Authority = "https://your-group-auth-server-domain";
    
    // 可自定义令牌验证规则
    options.TokenValidationParameters = new TokenValidationParameters
    {
        ValidateIssuer = true,
        ValidateAudience = true,
        ValidateLifetime = true,
        // 其他验证逻辑,比如自定义Claims映射等
    };
});

使用方式

  • 若接口默认使用Firebase认证,直接标记[Authorize]即可
  • 若接口需要管理员组身份认证,需明确指定认证方案:[Authorize(AuthenticationSchemes = "GroupAdminAuth")]

注意事项

  • 每个认证方案的名称必须唯一,不能重复
  • 两个中间件的验证参数(如Audience、Authority)要对应各自的认证服务,确保令牌验证逻辑正确
  • 可以根据业务灵活调整默认认证方案,或在不同接口上指定不同的认证方案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:35:11