我创建了验证 JWT 令牌的自定义中间件类。我在配置方法中的
app.AddMvc()
之前调用此方法。
我应该在配置服务中添加什么来使用 JWT 验证我的 Web API?我在我的控制器类中添加了 [Authorize]。
我是否需要首先在Configure 方法中调用验证JWT 令牌的中间件类?或者我应该打电话给
App.UseAuthentication()
我使用以下顺序:
app.UseAuthentication();
app.MessageHandlerMiddleware();
app.UseMvc();
我是 .net Web API 实现的新手。
从我的一个答案您可以看到我们如何传递 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()
);
});