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

Mensagem de erro

invalid signature

O que significa

O token foi analisado sem problemas e a estrutura dele é válida, mas a verificação criptográfica falhou: a assinatura sobre cabeçalho.payload não confere com a chave que você forneceu. Ou a chave não é a que assinou o token, ou os bytes assinados mudaram depois da assinatura.

Por que acontece

Como corrigir

  1. 1.

    Calcular a impressão digital da chave nos dois lados

    Calcule o hash da chave pública que o verificador realmente carregou e compare-o com o da chave do emissor. Impressões digitais diferentes indicam uma chave desatualizada ou errada — de longe a causa mais frequente — e encerram a busca em um só passo.

    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.

    Conferir se o kid do token corresponde à chave de verificação

    Decodifique o cabeçalho sem verificar e compare o kid dele com o da chave que você tem. Se o emissor publica um JWKS, localize a chave pelo kid em vez de fixar uma no código.

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

    Deixar o depurador apontar a divergência

    Cole o token e a chave pública no depurador de JWT: ele verifica ES256/ES384/ES512 localmente e distingue chave errada, payload adulterado e codificação de assinatura malformada, em vez de devolver um simples booleano.

Erros relacionados

Ver toda a base de erros de assinatura