JWT
JWT, sigla para JSON Web Token, é um formato compacto de token usado para transmitir informações de autenticação de forma segura entre cliente e servidor.
JWT é composto por três partes separadas por pontos: um cabeçalho, um payload com os dados do usuário e uma assinatura que garante que o token não foi alterado. Depois do login, o servidor gera esse token e o cliente passa a enviá-lo em cada requisição para provar que está autenticado.
Diferente de sessões tradicionais armazenadas no servidor, o JWT carrega as informações dentro de si mesmo, o que facilita escalar aplicações sem depender de armazenamento compartilhado de sessão entre servidores.
O payload de um JWT não é criptografado por padrão
Um erro comum é achar que o conteúdo de um JWT está protegido de leitura. Na verdade, o payload é apenas codificado, não criptografado, e pode ser decodificado por qualquer pessoa. A segurança do token vem da assinatura, que impede alteração dos dados sem invalidar o token.
Como funciona na prática
- O usuário faz login enviando suas credenciais para o servidor
- O servidor valida as credenciais e gera um JWT assinado com uma chave secreta
- O token é enviado de volta ao cliente e armazenado, geralmente em memória ou cookie seguro
- Em cada requisição seguinte, o cliente envia o JWT no cabeçalho Authorization
- O servidor valida a assinatura do token para confirmar que a requisição é legítima
Exemplo Prático
Uma API REST usa JWT para autenticar usuários mobile: após o login, o aplicativo armazena o token e o envia em cada chamada, permitindo que a API valide a identidade sem precisar consultar um banco de sessões a cada requisição.
Por que isso é importante?
JWT importa porque é um dos padrões mais usados para autenticação stateless em APIs modernas, especialmente em arquiteturas distribuídas e integrações entre múltiplos sistemas.
Perguntas Frequentes (FAQ) sobre JWT
JWT é o mesmo que OAuth?
Não. JWT é um formato de token, enquanto OAuth é um protocolo de autorização que pode usar JWT como um dos formatos de token que emite.
JWT expira automaticamente?
Só se o campo de expiração for definido explicitamente no payload durante a criação do token. Sem isso, o token permanece válido indefinidamente.