【问题标题】:JWT Encryption Error when using EncryptingCredentials in token generation method在令牌生成方法中使用 EncryptingCredentials 时出现 JWT 加密错误
【发布时间】:2020-09-16 17:18:53
【问题描述】:

我在我的 ASP.net core 3.1 web api 中实现了 JWT 令牌。 在我尝试使用 EncryptingCredentials 的令牌生成方法中,出现以下错误:

IDX10662:KeyWrap 算法“System.String”需要“System.Int32”位的密钥大小。键“”的大小为:“System.Int32”。 (参数'长度')

这是我的 Token 生成方法:

public async Task<string> GenerateAsync(User user)
    {
        var secretKey = Encoding.UTF8.GetBytes(_siteSetting.JwtSettings.SecretKey); //"SampleSecretKeyChange" 
        var signingCredentials = new SigningCredentials(new SymmetricSecurityKey(secretKey), SecurityAlgorithms.HmacSha256Signature);

        var encryptionkey = Encoding.UTF8.GetBytes(_siteSetting.JwtSettings.Encryptkey);  //"AbcdefgHijklmnopk123456"
        var encryptingCredentials = new EncryptingCredentials(new SymmetricSecurityKey(encryptionkey), SecurityAlgorithms.Aes128KW, SecurityAlgorithms.Aes128CbcHmacSha256);

        var descriptor = new SecurityTokenDescriptor
        {
            Issuer = _siteSetting.JwtSettings.Issuer,
            Audience = _siteSetting.JwtSettings.Audience,
            IssuedAt = DateTime.Now,
            NotBefore = DateTime.Now.AddMinutes(_siteSetting.JwtSettings.NotBeforeMinutes),
            Expires = DateTime.Now.AddMinutes(_siteSetting.JwtSettings.ExpirationMinutes),
            SigningCredentials = signingCredentials,
            EncryptingCredentials = encryptingCredentials,
            Subject = new ClaimsIdentity(_getClaims(user))
        };

        var tokenHandler = new JwtSecurityTokenHandler();
        var securityToken = tokenHandler.CreateToken(descriptor);
        var jwt = tokenHandler.WriteToken(securityToken);           
        return await Task.FromResult(jwt);
    }

【问题讨论】:

    标签: asp.net-core jwt


    【解决方案1】:

    在我进行了所有研究之后,我发现了问题所在。当您想要在我描述的条件下使用 EncryptingCredentials 时,Encryptkey 密钥长度必须等于 16 个字符。

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 2016-05-21
      • 2018-07-28
      • 2017-12-02
      • 2016-11-08
      • 2019-11-29
      • 1970-01-01
      相关资源
      最近更新 更多