IDX10632:使用HS512 ALGO验证JWT时,SymmetricSecurityKey.GetKeyedHashAlgorithm'HS512'引发了异常

问题描述

我正在使用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 (将#修改为@)