问题描述
我正在使用NuGet包System.IdentityModel.Tokens.Jwt版本4.0.4.403061554。
我有一个可以验证JWT的实现,并且可以很好地用于算法HS256。
但是,如果我将JWT更改为使用算法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位密钥,还尝试了一些较小的密钥,例如256位密钥(与algo HS256兼容的密钥),但是没有任何效果。
我的实现是这样:
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 引发异常。
如何更改我的代码以允许HS512(和其他受JWT支持的其他类型的算法)?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)