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

Message d’erreur

invalid signature

Ce que cela signifie

Le jeton a été analysé sans problème et sa structure est valide, mais le contrôle cryptographique a échoué : la signature sur header.payload ne se vérifie pas avec la clé que vous avez fournie. Soit la clé n’est pas celle qui a signé le jeton, soit les octets signés ont changé après la signature.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Calculer l’empreinte de la clé des deux côtés

    Calculez le condensat de la clé publique que le vérificateur a réellement chargée et comparez-le à celui de la clé de l’émetteur. Des empreintes différentes signifient une clé obsolète ou erronée (de loin la cause la plus fréquente) et mettent fin à la recherche en une seule étape.

    js
    import { createHash, createPublicKey } from "node:crypto";
    
    // Run on the verifier, and on the issuer with its signing key: the outputs must match.
    const spki = createPublicKey(process.env.JWT_PUBLIC_KEY).export({ type: "spki", format: "der" });
    console.log(createHash("sha256").update(spki).digest("hex"));
  2. 2.

    Faire correspondre le kid du jeton à la clé de vérification

    Décodez l’en-tête sans vérification et comparez son kid avec la clé que vous détenez. Si l’émetteur publie un JWKS, résolvez la clé par kid au lieu d’en coder une en dur.

    js
    const { header } = jwt.decode(token, { complete: true });
    console.log(header.kid, header.alg); // compare with your JWKS / configured key
  3. 3.

    Laisser le débogueur identifier l’incohérence

    Collez le jeton et la clé publique dans le débogueur JWT : il vérifie ES256/ES384/ES512 localement et distingue mauvaise clé, charge utile altérée et encodage de signature mal formé, au lieu de renvoyer un simple booléen.

Erreurs associées

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