Techioz Blog

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 などを指定できます。