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

ASP.NET Core 5无法同时使用Identity与JWT认证问题咨询

问题根因

你添加JWT配置时,通过AddAuthentication(JwtBearerDefaults.AuthenticationScheme)将JWT Bearer设置为了全局默认认证方案,直接覆盖了ASP.NET Core Identity默认配置的Cookie认证方案,导致Web应用的请求不再走Cookie认证逻辑,原有登录功能失效。

修复步骤

1. 调整认证服务注册逻辑

保留Identity默认的Cookie认证作为全局默认方案,仅追加JWT Bearer认证方案,不要覆盖原有默认配置。将你注释的JWT配置块替换为以下代码即可:

// 原有Identity配置完全保留,无需修改
services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)
    .AddRoles<ApplicationRole>()
    .AddEntityFrameworkStores<ApplicationDbContext>();

// 追加JWT认证,调用AddAuthentication时不要传入默认方案参数
services.AddAuthentication()
    .AddJwtBearer(options =>
    {
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuer = true,
            ValidateAudience = true,
            ValidateLifetime = true,
            ValidateIssuerSigningKey = true,
            ValidIssuer = Configuration["Jwt:Issuer"],
            ValidAudience = Configuration["Jwt:Audience"],
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
        };
    });

你原有Configure方法中的中间件顺序(UseRouting→UseAuthentication→UseAuthorization)是正确的,无需调整。

2. 为Web API接口指定JWT认证方案

在所有对外提供的API控制器/接口上,通过特性标记指定使用JWT方案做认证,示例:

[ApiController]
[Route("api/[controller]")]
// 指定该控制器下所有接口用JWT认证
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public class YourApiController : ControllerBase
{
    [HttpGet]
    public IActionResult GetData()
    {
        return Ok();
    }
}

可选:双认证方案兼容配置

如果存在部分接口需要同时支持Web端Cookie认证和API端JWT认证,可以配置通用授权策略,两种凭证携带任意一种有效即可通过认证:

services.AddAuthorization(options =>
{
    options.DefaultPolicy = new AuthorizationPolicyBuilder()
        .AddAuthenticationSchemes(
            IdentityConstants.ApplicationScheme, 
            JwtBearerDefaults.AuthenticationScheme
        )
        .RequireAuthenticatedUser()
        .Build();
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:06:25