Skip to content

Biigode/jwt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JWT Example

Projeto simples em Node.js para demonstrar como gerar, validar e adulterar um JWT usando a biblioteca jsonwebtoken.

O que este projeto mostra

  • 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

Tecnologias

  • Node.js
  • jsonwebtoken

Estrutura

  • init.js: script principal com os exemplos de geração, verificação e falsificação do token

Como executar

  1. Instale as dependências:
npm install
  1. Rode o projeto:
node init.js

Comportamento atual

O script executa dois fluxos:

  1. Gera um token e tenta validá-lo após 2 segundos.
  2. Gera um novo token, adultera o payload manualmente e tenta validá-lo.

Por que o cenário de token expirado ainda não acontece

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 expiresIn para algo como 1s
  • ou aumentar o setTimeout para mais de 60 segundos

Exemplo de cenários esperados

Token válido

O jwt.verify retorna o payload decodificado junto com os campos padrão do token, como iat e exp.

Token falsificado

Ao alterar o payload sem recalcular a assinatura, a validação falha e o script entra no tratamento de JsonWebTokenError.

Token expirado

Quando o tempo de expiração for realmente ultrapassado, a validação entra no tratamento de TokenExpiredError.

Observações

  • 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 cpf no payload parece ilustrativo e não deve ser usado como exemplo de dado real.

Próximos passos

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.json para facilitar a execução *** End Patch

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors