Aller au contenu
ecdsa.com
jose (JavaScript)Bibliothèques JWT

Message d’erreur

signature verification failed

jose (JavaScript) — JWSSignatureVerificationFailed, code ERR_JWS_SIGNATURE_VERIFICATION_FAILED

Ce que cela signifie

jose a analysé le JWS sans erreur et exécuté la vérification cryptographique, mais la signature ne se vérifie pas avec la clé qu’il a sélectionnée. La structure, l’algorithme et le type de clé étaient tous acceptables : ce sont simplement les calculs qui ne concordent pas, ce qui met en cause la clé ou des octets signés modifiés.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Résoudre les clés par kid à partir du JWKS de l’émetteur

    Laissez jose choisir la bonne clé pour chaque jeton au lieu d’en épingler une manuellement ; createRemoteJWKSet met les clés en cache et les actualise au fil des rotations.

    js
    import { createRemoteJWKSet, jwtVerify } from "jose";
    
    const jwks = createRemoteJWKSet(new URL("https://issuer.example/.well-known/jwks.json"));
    const { payload } = await jwtVerify(token, jwks, {
      algorithms: ["ES256"],
      issuer: "https://issuer.example",
    });
  2. 2.

    Avec node:crypto, produire des signatures r‖s brutes

    Pour un signataire personnalisé, demandez une sortie au format IEEE P1363 afin que la signature ait le format de 64 octets qu’exige JWS – ou vérifiez ce que votre signataire a produit en contrôlant la longueur du troisième segment.

    js
    import { sign } from "node:crypto";
    
    const sig = sign("sha256", Buffer.from(signingInput), {
      key: privateKey,
      dsaEncoding: "ieee-p1363", // raw r||s, 64 bytes for P-256
    });
  3. 3.

    Vérifier la forme du segment de signature

    Décodez le troisième segment du jeton : 64 octets signifient un r‖s brut (correct pour ES256) ; environ 70 octets commençant par 0x30 signifient du DER. Le convertisseur DER ⇄ brut ci-dessous affiche les valeurs r et s et convertit d’un format à l’autre.

Erreurs associées

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