首页 > 解决方案 > ASP.NET Core 2.2 WebApi 状态码 415 上的身份验证错误

问题描述

我的 ASP.NET Core 2.2 WebApi 项目中有一个有趣的错误。

我实现了运行良好的 JWT 身份验证:

public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(options =>
        {
            var signigKey = Convert.FromBase64String(AuthSettings.IssuerSigningKey);

            options.TokenValidationParameters = new TokenValidationParameters()
            {
                ValidateAudience = false, // Not required as no third-party is involved
                ValidateIssuer = false, // Not required as no third-party is involved
                ValidateLifetime = true,
                ValidateIssuerSigningKey = true,
                IssuerSigningKey = new SymmetricSecurityKey(signigKey)
            };
        });
    ...
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    ...
    app.UseAuthentication();
    ...
}

现在,当我使用无效的不记名令牌时,api 返回状态代码 415 而不是 401。但标题与预期的一样(无效签名......)。

我发现问题出在UseStatusCodePagesWithReExecute中间件上。当我强制出现 404 错误时,中间件工作正常。

当我删除 middelware 时,未经身份验证的请求中的状态码是 401。

有人有想法吗?

问候,菲利普

标签: asp.netauthentication.net-corejwt.net-core-2.2

解决方案


推荐阅读