我已经创建了用于验证JWT令牌的自定义中间件类。我在调用configure方法中的app.AddMvc()
之前调用此方法。***
我想知道我应该向配置服务添加哪些内容,以便使用JWT对我的web API进行身份验证?我在我的Controller类中添加了Authorize
我是否需要调用我的中间件类,首先在Configure方法中验证JWT令牌?或者我应该调用App.UseAuthentication()
,我使用以下顺序:
app.UseAuthentication();
app.MessageHandlerMiddleware();
app.UseMvc();
我对.net web应用编程接口的实现还很陌生。你能帮帮我吗?
发布于 2018-10-16 02:42:10
从one of my answers你可以看到我们是如何传递JWT令牌的,以及经典的.NET (非核心) ASP.NET WebAPI 2的代码是什么样子的。
没有太多区别,ASP.NET核心的代码看起来很相似。
关键的方面是-当你在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
ext的实现。方法)
也是非常重要的部分:
services.AddAuthorization(auth =>
{
auth
.AddPolicy(
_configuration.GetDefaultPolicy(),
new AuthorizationPolicyBuilder()
.AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
.RequireAuthenticatedUser().Build()
);
});
https://stackoverflow.com/questions/51943722
复制相似问题