web-dev-qa-db-ja.com

signingCredentials jwt asp.netコアのキーの長さ

public static string GenerateToken(string Username)
{
    var claimsdata = new[] { new Claim(ClaimTypes.Name, Username) };
    var key = new SymmetricSecurityKey(
        Encoding.UTF8.GetBytes("qwertyuioplkjhgfdsazxcvbnmqwertlkjfdslkjflksjfklsjfklsjdflskjflyuioplkjhgfdsazxcvbnmmnbv"));
    var signInCred = new SigningCredentials(key, SecurityAlgorithms.HmacSha384Signature);
    var token = new JwtSecurityToken(
        issuer: "mysite",
        audience: "mysite",
        expires: DateTime.Now.AddMinutes(60),
        claims: claimsdata,
        signingCredentials: signInCred);
    var tokenString = new JwtSecurityTokenHandler().WriteToken(token);
    return tokenString;
}

//キーの長さは88文字です。 16文字未満に減らすと、例外が発生します。

System.ArgumentOutOfRangeException: 'IDX10603:復号化に失敗しました。試行したキー:「[PIIは非表示]」。キャッチされた例外:「[PIIは非表示]」。トークン: '[PIIは非表示です]' '

13
Mohan Kurali

それらは256の16進ビットであるため、16文字のsha256での最小の長さ、つまり256/16 = 16

17
Horacio