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

Message d’erreur

secret or public key must be provided

Également affiché sous la forme

  • secretOrPrivateKey must have a value

`jwt.sign()` signale le même problème sous la forme « secretOrPrivateKey must have a value » (une simple `Error`).

jsonwebtoken (Node.js) — JsonWebTokenError from jwt.verify(); the sign() twin is a plain Error

Ce que cela signifie

`jwt.verify()` a reçu un jeton signé, mais l’argument de clé est vide (`undefined`, `null` ou `""`). jsonwebtoken ne peut pas vérifier une signature sans clé : il s’arrête donc avant même d’examiner le jeton. Côté signature, l’erreur a son pendant, `secretOrPrivateKey must have a value`, levé par `jwt.sign()` pour la même raison.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Valider la configuration au démarrage

    Lisez les clés requises une seule fois au démarrage du processus et quittez avec un message clair s’il en manque une. Une instance mal configurée ne commence alors jamais à traiter des requêtes.

    js
    function requireEnv(name) {
      const value = process.env[name];
      if (!value) throw new Error(name + " is not set");
      return value;
    }
    
    const JWT_PUBLIC_KEY = requireEnv("JWT_PUBLIC_KEY"); // evaluated once at startup
  2. 2.

    Charger les fichiers d’environnement avant tout le reste

    Faites de `dotenv/config` le tout premier import, ou utilisez l’option intégrée `--env-file` de Node, pour que chaque module voie les valeurs.

    js
    // Load .env before any module that reads process.env at import time.
    import "dotenv/config";
    import { app } from "./app.js";
    
    // Node 20.6+: no package needed
    // node --env-file=.env server.js

Erreurs associées

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