DevPath · Aprenda a programar ESPTEN

Autenticação de ponta a ponta

Sessões vs tokens: onde vive a credencial

O problema: o HTTP não lembra

Cada requisição HTTP é independente: o servidor não sabe, por si só, que "esta requisição é da mesma pessoa que fez login há um minuto". Precisamos de uma credencial que o cliente apresente em cada chamada. Há duas grandes famílias.

Opção A: sessões com cookies

  1. O usuário faz login. O backend cria uma sessão do seu lado (em memória, Redis ou um banco de dados) e gera um id de sessão opaco.
  2. Esse id viaja até o navegador dentro de um cookie. A partir daí, o navegador o anexa automaticamente em cada requisição ao mesmo domínio.
  3. O backend recebe o cookie, busca a sessão pelo seu id e sabe quem você é.

O estado vive no servidor; o cookie só guarda um ponteiro para ele.

Opção B: tokens (JWT)

  1. Após o login, o backend assina um token (um JWT) que já contém os dados do usuário e o devolve no corpo da resposta.
  2. O frontend o guarda (tipicamente no localStorage) e o anexa à mão em cada requisição, no cabeçalho Authorization: Bearer <token>.
  3. O backend verifica a assinatura do token e confia no seu conteúdo sem consultar nenhum armazenamento: o estado viaja no próprio token (é stateless).

Onde se guarda e quais riscos tem

Armazenamento Quem o anexa Risco principal
Cookie httpOnly O navegador, sozinho CSRF
localStorage Seu código JS XSS

Anatomia de um JWT

Um JWT são três partes separadas por pontos, cada uma em base64url:

eyJhbG...  .  eyJzdWIiOiJhbmEi...  .  3rXc8f...
 cabeçalho       payload (dados)        assinatura

⚠️ O payload está codificado, não criptografado: qualquer um pode lê-lo. A assinatura evita que o modifiquem, mas nunca coloque segredos dentro.

Exemplos

Ler o payload de um JWT sem verificar a assinatura

const jwt = "cabecalho." + btoa(JSON.stringify({ sub: "ana", papel: "admin" })) + ".assinatura";
const [, payloadB64] = jwt.split(".");
console.log(JSON.parse(atob(payloadB64)));
Coloque isto em prática

O DevPath é um curso prático: aqui você lê a teoria; no app você a coloca em prática com exercícios que rodam de verdade, offline.

Comece grátis no app →
O fluxo completo: do login à rota protegida →