如何在aspnet.core web api中validationJWT令牌?

我创建了自定义中间件类来validationJWT令牌。 我在configure方法中的app.AddMvc()之前调用此方法。 ***

我想知道我应该添加哪些东西来配置服务来使用JWTvalidation我的Web API? 我在Controller类中添加了[Authorize]

我是否需要调用我的中间件类,它首先在Configure方法中validationJWT令牌? 或者我应该调用App.UseAuthentication()我使用以下顺序:

  app.UseAuthentication(); app.MessageHandlerMiddleware(); app.UseMvc(); 

我是.net web API实现的新手。 你能帮帮我吗?

从我的一个答案中,您可以看到我们如何传递JWT令牌以及代码如何查找经典的.NET(非核心)ASP.NET WebAPI 2。

没有太多差异,ASP.NET Core的代码看起来很相似。

关键方面是 – 当您在启动时添加JWT配置时,应用程序会自动处理validation

 services .AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(x => { x.RequireHttpsMetadata = false; x.SaveToken = true; x.TokenValidationParameters = new TokenValidationParameters() { ValidateIssuerSigningKey = true, ValidateLifetime = true, IssuerSigningKey = _configuration.GetSymmetricSecurityKey(), ValidAudience = _configuration.GetValidAudience(), ValidIssuer = _configuration.GetValidIssuer() }; }); 

(使用上面的链接查看GetSymmetricSecurityKeyGetValidAudienceGetValidIssuer ext。方法的实现)

同样非常重要的部分:

 services.AddAuthorization(auth => { auth .AddPolicy( _configuration.GetDefaultPolicy(), new AuthorizationPolicyBuilder() .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme‌​) .RequireAuthenticatedUser().Build() ); });