在aspnet.core web api中如何验证JWT令牌?

11 浏览
0 Comments

在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的实现还不熟悉。你能帮助我吗?

0
0 Comments

在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的方法。

0