如何在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
相关产品推荐
相关产品推荐

