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

问题描述 投票:0回答:1

我创建了验证 JWT 令牌的自定义中间件类。我在配置方法中的

app.AddMvc()
之前调用此方法。

我应该在配置服务中添加什么来使用 JWT 验证我的 Web API?我在我的控制器类中添加了 [Authorize]。

我是否需要首先在Configure 方法中调用验证JWT 令牌的中间件类?或者我应该打电话给

App.UseAuthentication()
我使用以下顺序:

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

我是 .net Web API 实现的新手。

c# .net-core asp.net-web-api2 asp.net-core-2.0 asp.net-core-webapi
1个回答
4
投票

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

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

关键方面是 - 当您在启动中添加 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()
    );
});
© www.soinside.com 2019 - 2024. All rights reserved.