身份验证错误时ASP.NET Core 2.2 WebApi状态码415

时间:2019-08-07 22:03:04

标签: asp.net authentication .net-core jwt .net-core-2.2

我的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错误时,中间件工作正常。

当我删除中间件时,未经身份验证的请求中的状态代码为401。

有人有主意吗?

问候, 菲利普

0 个答案:

没有答案