Aller au contenu
ecdsa.com
jsonwebtoken (Node.js)Bibliothèques JWT

Message d’erreur

invalid algorithm

Ce que cela signifie

La valeur de l’en-tête alg du jeton ne figure pas dans la liste des algorithmes acceptés par votre vérificateur. jsonwebtoken effectue ce contrôle avant de toucher à la signature : le jeton peut donc être parfaitement signé, simplement avec un schéma que vous n’avez pas autorisé. Ce filtre est un dispositif de sécurité qui fonctionne comme prévu, et non un bogue d’analyse.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Aligner la liste d’autorisation sur ce que l’émetteur utilise réellement

    Décodez l’en-tête pour voir l’alg réel, puis réglez la liste d’autorisation exactement sur cette valeur, en vous assurant que le type de clé correspond (clé EC pour ES256, clé RSA pour RS256).

    js
    const { header } = jwt.decode(token, { complete: true });
    console.log(header.alg); // e.g. "ES256"
    
    jwt.verify(token, ecPublicKeyPem, { algorithms: ["ES256"] });
  2. 2.

    Déployer les changements d’algorithme en deux phases

    Pendant une rotation de clé ou d’algorithme, les vérificateurs doivent brièvement accepter les deux schémas, chacun lié à sa propre clé via kid, puis revenir à un seul.

    js
    // transition window only:
    jwt.verify(token, keyForKid(header.kid), { algorithms: ["ES256", "RS256"] });
    // after all RS256 tokens expired:
    jwt.verify(token, ecPublicKeyPem, { algorithms: ["ES256"] });

Erreurs associées

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