这个错误通常是由于未正确配置身份验证中间件或JWT授权策略而引起的。以下是一些可能帮助您解决此问题的
1.确保您已正确配置身份验证中间件,特别是在ConfigureServices方法中:
services.AddAuthentication(opt => { opt.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; opt.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }).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"])) }; });
2.确保您已正确配置JWT授权策略,特别是在Configure方法中:
app.UseAuthentication(); app.UseJwtBearerAuthentication(new JwtBearerOptions { 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"])) } });
3.检查您是否正确地颁发了JWT令牌,特别是在需要进行身份验证的方法中:
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] public IActionResult MyMethod() { // ... }
通过采取上述解决方法中的几种方法之一,您应该能够修复“AuthenticationScheme: Bearer was not authenticated”错误并成功授权您的ASP.NET Core应用程序使用JWT身份验证令牌。