C# JWT WriterToken函数引发IDX10653错误
作为标题,jwtSecurityTokenHandler.WriteToken(jwt)函数抛出IDX10653错误。完全例外C# JWT WriterToken函数引发IDX10653错误,c#,jwt,.net-5,C#,Jwt,.net 5,作为标题,jwtSecurityTokenHandler.WriteToken(jwt)函数抛出IDX10653错误。完全例外 System.ArgumentOutOfRangeException: 'IDX10653: The encryption algorithm 'System.String' requires a key size of at least 'System.Int32' bits. Key 'Microsoft.IdentityModel.Tokens.Symmetr
System.ArgumentOutOfRangeException: 'IDX10653:
The encryption algorithm 'System.String' requires a key size of at least 'System.Int32' bits.
Key 'Microsoft.IdentityModel.Tokens.SymmetricSecurityKey', is of size: 'System.Int32'. Arg_ParamName_Name
下面是我的示例用法:
public AccessToken CreateToken(User user, List<OperationClaim> operationClaims)
{
_accessTokenExpiration = DateTime.Now.AddMinutes(_tokenOptions.AccessTokenExpiration);
var securityKey = SecurityKeyHelper.CreateSecurityKey(_tokenOptions.SecurityKey);
var signingCredentials = SigningCredentialsHelper.CreateSigningCredentials(securityKey);
var jwt = CreateJwtSecurityToken(_tokenOptions, user, signingCredentials, operationClaims);
var jwtSecurityTokenHandler = new JwtSecurityTokenHandler();
var token = jwtSecurityTokenHandler.WriteToken(jwt);
return new AccessToken
{
Token = token,
Expiration = _accessTokenExpiration
};
}
这个问题解决了 在使用SHA512加密系统和varbinary(500)时,WebApi层中appsettings.json文件的TokenOptions部分中的密码(“SecurityKey”)很短
public static SecurityKey CreateSecurityKey(string securityKey)
{
return new SymmetricSecurityKey(Encoding.UTF8.GetBytes(securityKey));
}
"TokenOptions": {
"Audience": "some@mailaddress.com",
"Issuer": "some@mailaddress.com",
"AccessTokenExpiration": 10,
"SecurityKey": "mykey"
}