我创建了自定义中间件类来验证 JWT token 。我在配置方法中的 app.AddMvc()
之前调用此方法。 ***
我想知道应该向配置服务添加哪些内容以使用 JWT 验证我的 Web API?我在我的 Controller 类中添加了 [Authorize]
我是否需要在 Configure 方法中调用首先验证 JWT token 的中间件类?或者我应该调用 App.UseAuthentication()
我正在使用以下顺序:
app.UseAuthentication();
app.MessageHandlerMiddleware();
app.UseMvc();
我是 .net Web API 实现的新手。你能帮帮我吗?
最佳答案
来自 one of my answers您可以看到我们如何传递 JWT token 以及代码如何查找经典 .NET(非核心)ASP.NET WebAPI 2。
区别不大,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()
);
});
关于c# - 如何在 aspnet.core web api 中验证 JWT token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51943722/