在aspnet.core web api中如何验证JWT令牌?
在aspnet.core web api中如何验证JWT令牌?
我创建了一个自定义的中间件类来验证JWT令牌。我在configure方法中在app.AddMvc()
之前调用这个方法。***
我想知道在Configuration服务中需要添加哪些内容来使用JWT验证我的Web API?我在我的控制器类中添加了[Authorize]。
我需要在Configure方法中首先调用验证JWT令牌的中间件类吗?还是应该调用App.UseAuthentication()
?
我使用以下顺序:
app.UseAuthentication(); app.MessageHandlerMiddleware(); app.UseMvc();
我对.net Web API的实现还不熟悉。你能帮助我吗?
在ASP.NET Core Web API中如何验证JWT Token?
在经典的.NET(非Core)ASP.NET WebAPI 2中,我们可以从我之前的回答中看到我们如何传递JWT令牌以及代码的样子。在ASP.NET Core中,没有太多的区别,代码看起来类似。关键的方面是 - 当您在Startup中添加JWT配置时,应用程序会自动处理验证。
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() }; });
(使用上面的链接查看`GetSymmetricSecurityKey`,`GetValidAudience`,`GetValidIssuer`等方法的实现)
还有一个非常重要的部分:
services.AddAuthorization(auth => { auth .AddPolicy( _configuration.GetDefaultPolicy(), new AuthorizationPolicyBuilder() .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme) .RequireAuthenticatedUser().Build() ); });
以上是验证JWT Token的ASP.NET Core Web API的方法。