JWT, ou JSON Web Token, é um formato de token usado para transmitir informações de forma segura entre sistemas, muito comum em login e APIs. Ele reúne dados e uma assinatura em um texto compacto de três partes separadas por pontos, que o servidor consegue verificar sem consultar um banco de dados.
As três partes do token
Um JWT tem três blocos separados por ponto: cabeçalho, payload e assinatura. O cabeçalho diz o algoritmo usado; o payload carrega as informações, chamadas claims, como o identificador do usuário e a validade; a assinatura garante que nada foi alterado. As duas primeiras partes são apenas Base64Url, ou seja, qualquer um consegue lê-las. A terceira é gerada com uma chave secreta ou par de chaves, geralmente via HMAC ou RSA, e é o que permite ao servidor confiar no token.
JWT é assinado, mas não criptografado
O erro mais comum é achar que o JWT esconde os dados. Por padrão ele é apenas assinado, não cifrado: o payload é legível por qualquer pessoa que decodificar o Base64Url. A assinatura garante integridade e autenticidade, não sigilo. Por isso nunca coloque senhas ou dados sensíveis no payload. Outros cuidados são definir uma expiração curta, validar sempre a assinatura no servidor e recusar o algoritmo none. Para esconder o conteúdo de fato, existe o JWE, a variante criptografada.
