作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 NuGet 包 System.IdentityModel.Tokens.Jwt 版本 4.0.4.403061554。
我有一个验证 JWT 的实现,它适用于算法 HS256。
但是,如果我将 JWT 更改为使用 algo HS512 生成,那么我在验证过程中会收到错误消息。
System.IdentityModel.SignatureVerificationFailedException
HResult=0x80131501
Message=IDX10503: Signature validation failed. Keys tried: 'System.IdentityModel.Tokens.InMemorySymmetricSecurityKey
'.
Exceptions caught:
'System.InvalidOperationException: IDX10632: SymmetricSecurityKey.GetKeyedHashAlgorithm( 'HS512' ) threw an exception.
SymmetricSecurityKey: 'System.IdentityModel.Tokens.InMemorySymmetricSecurityKey'
SignatureAlgorithm: 'HS512', check to make sure the SignatureAlgorithm is supported.
我尝试过生成 512 位 key ,也尝试过较小的 key ,例如 256 位 key (与算法 HS256 一起使用的 key ),但没有任何效果。
InMemorySymmetricSecurityKey signingKey = new InMemorySymmetricSecurityKey(Encoding.UTF8.GetBytes("secretsigningkey"));
TokenValidationParameters tokenValidationParameters = new TokenValidationParameters()
{
ValidAudiences = validAudiences,
ValidIssuers = validIssuers,
IssuerSigningKey = signingKey
};
JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler();
var claimsPrincipal = tokenHandler.ValidateToken(token, tokenValidationParameters, out SecurityToken validatedToken);
并且此方法抛出异常
tokenHandler.ValidateToken .
最佳答案
SecurityAlgorithms
不支持验证 HS512 算法。 JWT
项目地址:https://github.com/jwt-dotnet/jwt PM> Install-Package JWT -Version 7.2.1
JWT
官方文档并使用HS512算法修改您的示例代码,它将是这样的:try
{
IJsonSerializer serializer = new JsonNetSerializer();
var provider = new UtcDateTimeProvider();
IJwtValidator validator = new JwtValidator(serializer, provider);
IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
IJwtAlgorithm algorithm = new HMACSHA512Algorithm();
IJwtDecoder decoder = new JwtDecoder(serializer, validator, urlEncoder, algorithm);
json = decoder.Decode(token, "secretsigningkey", verify: true);
Console.WriteLine(json);
}
catch (TokenExpiredException)
{
Console.WriteLine("Token has expired");
}
catch (SignatureVerificationException)
{
Console.WriteLine("Token has invalid signature");
}
catch (Exception ex)
{
Console.WriteLine("Other exception: " + ex.Message);
}
关于c# - IDX10632 : SymmetricSecurityKey. GetKeyedHashAlgorithm( 'HS512') 在使用 HS512 ALGO 验证 JWT 时抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63744015/
我正在尝试创建 Asp.NET Core API 并添加 Jwt 身份验证。在我到目前为止发现的所有示例中,都使用了 SymmetricSecurityKey。我添加了 Aspnetcore.Auth
我正在使用 NuGet 包 System.IdentityModel.Tokens.Jwt 版本 4.0.4.403061554。 我有一个验证 JWT 的实现,它适用于算法 HS256。 但是,如果
在遵循教程时 Create a RESTful API with authentication using Web API and Jwt我在编译 CustomJwtFormat 类时遇到问题: us
我是一名优秀的程序员,十分优秀!