JWT WriterToken 函数抛出 IDX10653 错误

JWT WriterToken function throwing IDX10653 Error

如标题,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.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
    };
}

我控制了我的每一个变量和功能。我认为没有错误,我没有找到针对此错误代码的任何解决方案。有什么解决办法吗?

编辑: 在内部细节中有一个额外的信息 ->

键 'Microsoft.IdentityModel.Tokens.SymmetricSecurityKey',大小为:'System.Int32'。 (参数'key')

我的 SecurityKey 创建函数是这样的:

public static SecurityKey CreateSecurityKey(string securityKey)
{
    return new SymmetricSecurityKey(Encoding.UTF8.GetBytes(securityKey));
}

那个问题解决了。

使用 SHA512 加密系统和 varbinary(500) 时,WebApi 层 appsettings.json 文件的 TokenOptions 部分中的密码(“SecurityKey”)很短。

"TokenOptions": {
    "Audience": "some@mailaddress.com",
    "Issuer": "some@mailaddress.com",
    "AccessTokenExpiration": 10,
    "SecurityKey": "mykey"
  }