我在哪里可以在TokenValidationParameters中指定JWT令牌中的算法应该匹配HS256



我正在使用AspNet Core构建一个web api和JWT令牌来验证用户。

TokenValidationParameters中,我在哪里可以指定令牌中的alg应该匹配HS256(而不是none(?

services
.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(cfg =>
{
cfg.RequireHttpsMetadata = false;
cfg.SaveToken = true;
string jwtIssuer = configuration["JwtIssuer"];
SymmetricSecurityKey securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["JwtKey"]));
cfg.TokenValidationParameters = new TokenValidationParameters
{
ValidIssuer = jwtIssuer,
ValidAudience = jwtIssuer,
ValidateIssuerSigningKey = true,
IssuerSigningKey = securityKey,
ClockSkew = TimeSpan.Zero
};
});

默认情况下,库是否会拒绝alg设置为none的传入令牌?

根据注释,中间件默认不允许"alg": "none"。这似乎是由于问题中提到的漏洞。

关于拒绝:我尝试用"alg": "none"传递令牌,并在响应中得到invalid_token(Microsoft.AspNetCore.Authentication.JwtBearer 2.1.0(。

顺便说一句,规范要求实现HS256"none"算法。

相关内容

  • 没有找到相关文章

最新更新