我的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。
有人有主意吗?
问候, 菲利普