【问题标题】:JWT WriterToken function throwing IDX10653 ErrorJWT WriterToken 函数抛出 IDX10653 错误
【发布时间】:2021-06-06 01:54:59
【问题描述】:

如标题所示,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));
}

【问题讨论】:

    标签: c# jwt .net-5


    【解决方案1】:

    这个问题解决了。

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

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

    【讨论】:

    • 你拯救了我的一天。谢谢!
    • 不客气,伙计..
    猜你喜欢
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 2012-02-21
    • 2023-03-12
    • 2020-03-01
    • 1970-01-01
    相关资源
    最近更新 更多