Projeto simples em Node.js para demonstrar como gerar, validar e adulterar um JWT usando a biblioteca jsonwebtoken.
- Geração de token com
jwt.sign - Validação de token com
jwt.verify - Tratamento de erros como token expirado e token inválido
- Exemplo de falsificação manual do payload para mostrar falha na assinatura
- Node.js
- jsonwebtoken
init.js: script principal com os exemplos de geração, verificação e falsificação do token
- Instale as dependências:
npm install- Rode o projeto:
node init.jsO script executa dois fluxos:
- Gera um token e tenta validá-lo após
2segundos. - Gera um novo token, adultera o payload manualmente e tenta validá-lo.
No código atual, o token é criado com:
expiresIn: "1m";Mas a validação ocorre após apenas 2 segundos:
setTimeout(() => {
const decoded = verifyJWTtoken(token);
console.log(decoded);
}, 2000);Por isso, nesse fluxo o token ainda está válido quando é verificado.
Se quiser testar expiração de verdade, você pode:
- reduzir o
expiresInpara algo como1s - ou aumentar o
setTimeoutpara mais de60segundos
O jwt.verify retorna o payload decodificado junto com os campos padrão do token, como iat e exp.
Ao alterar o payload sem recalcular a assinatura, a validação falha e o script entra no tratamento de JsonWebTokenError.
Quando o tempo de expiração for realmente ultrapassado, a validação entra no tratamento de TokenExpiredError.
- A chave secreta está fixa no código apenas para fins de estudo.
- Em produção, use uma chave forte e armazene em variável de ambiente.
- O valor de
cpfno payload parece ilustrativo e não deve ser usado como exemplo de dado real.
Algumas melhorias simples para este projeto:
- mover o segredo para
.env - separar geração e validação em funções ou módulos reutilizáveis
- adicionar um cenário explícito de expiração para fins didáticos
- incluir scripts no
package.jsonpara facilitar a execução *** End Patch