Pular para o conteúdo
ecdsa.com
jsonwebtoken (Node.js)Bibliotecas de JWT

Mensagem de erro

jwt not active

jsonwebtoken (Node.js) — NotBeforeError from jwt.verify()

O que significa

O `NotBeforeError` do jsonwebtoken indica que o token tem uma claim `nbf` (“not before”) com um horário posterior à hora atual do verificador, então ele ainda não é válido. A propriedade `date` do erro guarda o momento em que o token passa a ser válido. A assinatura já foi verificada e está correta.

Por que acontece

Como corrigir

  1. 1.

    Permitir uma pequena diferença de relógio

    A opção `clockTolerance` (em segundos) se aplica tanto a `nbf` quanto a `exp`. Mantenha-a em um minuto ou menos e corrija o desvio real com NTP nas duas máquinas.

    js
    jwt.verify(token, publicKey, {
      algorithms: ["ES256"],
      clockTolerance: 30, // seconds; applies to nbf and exp
    });
  2. 2.

    Medir com quanta antecedência o token foi usado

    Compare `err.date` com o relógio do verificador. Segundos indicam diferença de relógio; exatamente o atraso de `notBefore` indica que o token está sendo usado cedo demais; milhares de anos indicam um bug de milissegundos.

    js
    try {
      jwt.verify(token, publicKey, { algorithms: ["ES256"] });
    } catch (err) {
      if (err.name === "NotBeforeError") {
        const early = (err.date.getTime() - Date.now()) / 1000;
        console.warn("token becomes valid in", early.toFixed(1), "s");
      }
      throw err;
    }

Erros relacionados

Ver toda a base de erros de assinatura