Saltar al contenido
ecdsa.com
ruby-jwt (Ruby)Ruby

Mensaje de error

Expected a different algorithm (JWT::IncorrectAlgorithm)

También se muestra como

  • JWT::IncorrectAlgorithm: Expected a different algorithm

ruby-jwt (Ruby) — JWT::IncorrectAlgorithm from JWT.decode

Qué significa

El encabezado `alg` del token no está entre los algoritmos que permites y, si no pasas ninguna opción `algorithm:`/`algorithms:`, ruby-jwt no permite ninguno. Desde ruby-jwt 2.x, el verificador debe nombrar el algoritmo explícitamente, porque confiar en el propio encabezado del token es el origen de los conocidos ataques de confusión de algoritmos. La firma no se comprobó.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Nombrar explícitamente el algoritmo del emisor

    Pasa `algorithm:` (o `algorithms:` para una lista corta). Con varios algoritmos, usa un cargador de JWKS para que cada token se verifique con una clave del tipo correspondiente.

    ruby
    payload, header = JWT.decode(token, public_key, true, algorithm: "ES256")
    # several allowed algorithms (e.g. during a migration), each matched to the right key type:
    payload, header = JWT.decode(token, nil, true, algorithms: ["ES256", "RS256"], jwks: jwks_loader)

Errores relacionados

Explorar toda la base de datos de errores de firma