Novidades

Autenticacao JWT API: passo a passo para implementar

Implementar autenticacao JWT em API nao precisa ser um bicho de sete cabecas. Este guia mostra o passo a passo para gerar e validar tokens, com dicas para evitar erros comuns e garantir seguranca basica.

Igor Bastos
13 bibliotecas JavaScript frontend para simplificar seu códi

13 bibliotecas JavaScript frontend para simplificar seu códi — Foto: Reprodução / Blog Sem Juízo

Se voce ja tentou proteger uma API sem JWT, sabe que e um caos: sessao manual, token aleatorio, e no fim o usuario loga de novo toda hora. Autenticacao JWT resolve isso com um token que carrega os dados do usuario dentro dele mesmo, sem precisar bater no banco a cada requisicao. Este guia cobre o basico para implementar em qualquer linguagem.

Pre-requisitos: um servidor HTTP basico (Node.js, Python, Go, etc.), uma rota de login, e uma biblioteca JWT para sua linguagem (ex.: jsonwebtoken para Node, PyJWT para Python).

Passo 1: Gerar o token no login

Quando o usuario enviar credenciais validas (email + senha), voce gera um JWT. O token tem tres partes: header (algoritmo), payload (dados do usuario, como id e permissao) e assinatura (criada com uma chave secreta). Exemplo em Node.js:

const jwt = require('jsonwebtoken'); const token = jwt.sign({ userId: 123, role: 'admin' }, 'sua_chave_secreta', { expiresIn: '1h' });

Dica: nunca coloque senha ou dados sensiveis no payload, ele e apenas codificado em base64, nao criptografado. Erro comum: usar chave secreta fraca ou fixa no codigo; prefira variavel de ambiente.

Passo 2: Enviar o token para o cliente

Retorne o token na resposta do login, geralmente no corpo JSON ({ "token": "..." }). O cliente (frontend, app mobile) deve armazenar o token de forma segura, em httpOnly cookie para web, ou secure storage em mobile. NUNCA localStorage sem protecao contra XSS.

Dica: inclua tambem um refreshToken com expiracao maior (7 dias) para renovar o JWT sem obrigar novo login.

Passo 3: Validar o token em rotas protegidas

Crie um middleware que intercepta cada requisicao para rotas privadas. Ele extrai o token do header Authorization: Bearer <token>, verifica a assinatura com a mesma chave secreta, e checa se nao expirou.

function authMiddleware(req, res, next) { const token = req.headers['authorization']?.split(' ')[1]; if (!token) return res.status(401).json({ error: 'Token nao fornecido' }); try { const decoded = jwt.verify(token, process.env.JWT_SECRET); req.user = decoded; next(); } catch (err) { return res.status(401).json({ error: 'Token invalido ou expirado' }); } }

Erro comum: esquecer de tratar token expirado como erro separado de token invalido, isso quebra a experiencia de refresh.

Checklist do que foi implementado

  • [ ] Rota de login gera JWT com payload minimo e expiracao
  • [ ] Token enviado ao cliente e armazenado com seguranca
  • [ ] Middleware valida assinatura e expiracao em rotas protegidas
  • [ ] Tratamento de erros 401 para token ausente, invalido ou expirado

Perguntas frequentes sobre autenticacao JWT em API

Como fazer autenticacao com JWT?

Voce gera um JWT no login com os dados do usuario e uma chave secreta. O cliente envia esse token no header Authorization de cada requisicao. O servidor valida a assinatura e o prazo de expiracao antes de liberar o acesso.

O que e JWT em API?

JWT (JSON Web Token) e um formato de token que carrega informacoes do usuario (payload) assinadas digitalmente. Ele permite autenticacao stateless: o servidor nao precisa armazenar sessoes, pois o token ja contem os dados necessarios.

Como verificar um JWT?

Use a biblioteca JWT da sua linguagem para chamar o metodo verify(token, chave_secreta). Ele retorna o payload decodificado se a assinatura for valida e o token nao tiver expirado. Se falhar, lanca uma excecao.

Como e feita a validacao de um JWT?

A validacao inclui: conferir a assinatura com a chave secreta (ou publica, se for RS256), verificar o campo exp (expiracao), e opcionalmente checar iss (emissor) e aud (audiencia) para maior seguranca.

Igor Bastos

Editoria Novidades

Igor Bastos cobre o setor de meios de pagamento e crédito no Blog Sem Juízo. Análises técnicas, sem viés comercial.

Leia também · Novidades