JWT (JSON Web Token)
Definição
JWT (JSON Web Token) é um formato de token compacto e seguro utilizado para transmitir informações entre sistemas de forma confiável.
Ele é amplamente usado em autenticação e autorização em aplicações web modernas.
Um JWT é composto por três partes codificadas em Base64:
Header: define o algoritmo de assinatura e o tipo do token.
Payload: contém os dados (claims) que serão transmitidos.
Signature: é a assinatura digital usada para verificar a integridade e autenticidade do token.
Objetivos do JWT
Autenticar usuários de forma stateless: não é necessário armazenar sessões no servidor.
Transmitir informações com segurança: os dados são assinados digitalmente.
Base para Single Sign-On (SSO): utilizado em sistemas que compartilham autenticação.
Facilitar a comunicação entre serviços: especialmente em arquiteturas baseadas em APIs e microsserviços.
Exemplo prático — Estrutura de um JWT
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6Ik1hcmlhIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjE1MTYyNDI2MjJ9.GXdh-vFiR1Qn4GYhsPYaLqgfpL0IKnn2HjEvox_6SE4
- Header (cabeçalho)
{
"alg": "HS256",
"typ": "JWT"
}
- Payload (corpo do token)
{
"sub": "1234567890",
"name": "Maria",
"iat": 1516239022,
"exp": 1516242622
}
- Signature (assinatura)
A assinatura é gerada com uma chave secreta para garantir a integridade do token.
O ciclo do JWT
[Usuário autentica] --> [Servidor gera JWT] --> [Cliente envia JWT em requisições] --> [Servidor valida assinatura e extrai dados]
O token pode ser enviado no cabeçalho Authorization: Bearer
<token>
.O servidor valida a assinatura a cada requisição, sem guardar estado.
Segurança
Os dados do JWT não são criptografados por padrão, apenas assinados.
Nunca armazene informações sensíveis no payload.
Tokens devem ter tempo de expiração e, idealmente, serem transmitidos via HTTPS.