JWT.decode JWT::IncorrectAlgorithm (別のアルゴリズムが予期されました)
概要
jtw gem を使用して ES256 キーをエンコードおよびデコードしようとすると、デコード時にエラーが発生します。
private_key = OpenSSL::PKey::EC.new(private_key_string)
JWT.encode(
{
iss: "1234567890",
iat: Time.now.to_i
},
private_key,
"ES256",
{
alg: "ES256",
kid: "1234567890",
typ: "JWT"
}
)
解決策
JWT.encode コードを共有していますが、JWT.decode にエラーがあるようです。トークンをデコードしているコードを共有してください。
次のことを試してください。
JWT.encode(
{
iss: "1234567890",
iat: Time.now.to_i
},
private_key,
"ES256"
# this is your extra parameter, just remove it
)
ドキュメントを探すと、エンコードする構文は JWT.encode(payload, secret_key, ‘algorithm’) で、「algorithm」には HMAC、RSA、ECDSA などを指定できます。