Aller au contenu
ecdsa.com
ruby-jwt (Ruby)Ruby

Message d’erreur

Expected a different algorithm (JWT::IncorrectAlgorithm)

Également affiché sous la forme

  • JWT::IncorrectAlgorithm: Expected a different algorithm

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

Ce que cela signifie

L’en-tête `alg` du jeton ne figure pas parmi les algorithmes que vous avez autorisés – et si vous n’avez passé aucune option `algorithm:`/`algorithms:`, ruby-jwt n’en autorise aucun. Depuis ruby-jwt 2.x, le vérificateur doit nommer explicitement l’algorithme, car faire confiance à l’en-tête du jeton lui-même est à l’origine des attaques bien connues par confusion d’algorithme. La signature n’a pas été vérifiée.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Nommer explicitement l’algorithme de l’émetteur

    Passez `algorithm:` (ou `algorithms:` pour une courte liste). Avec plusieurs algorithmes, utilisez un chargeur JWKS pour que chaque jeton soit vérifié avec une clé du type correspondant.

    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)

Erreurs associées

Parcourir toute la base de données des erreurs de signature