Estrutura do JWT Explicada: Header, Payload e Signature
No desenvolvimento web moderno, garantir a segurança da comunicação entre clientes e servidores é fundamental. Os JSON Web Tokens (JWT) tornaram-se o padrão da indústria para representar reivindicações de forma segura entre duas partes. Compreender como eles funcionam é essencial para implementar sistemas de autenticação robustos.
O que é um JSON Web Token (JWT)?
Um JWT é um padrão aberto (RFC 7519) que define uma maneira compacta e independente de transmitir informações entre partes como um objeto JSON. Essas informações podem ser verificadas e confiáveis porque são assinadas digitalmente. Os JWTs podem ser assinados usando um segredo (HMAC) ou um par de chaves pública/privada (RSA ou ECDSA).
As Três Partes de um JWT
Um JWT consiste em três partes separadas por pontos (.):
- Header (Cabeçalho): Contém o tipo de token e o algoritmo de assinatura.
- Payload (Carga Útil): Contém os dados ou reivindicações (claims) do usuário.
- Signature (Assinatura): Permite verificar se o token não foi alterado.
Se você precisar inspecionar o conteúdo de um token real, pode usar o nosso JWT Decoder.
Parte 1: O Header
O cabeçalho normalmente indica o algoritmo usado (como HS256) e o tipo de token (JWT). Em seguida, ele é codificado em Base64Url.
{
"alg": "HS256",
"typ": "JWT"
}
Parte 2: O Payload
Contém as reivindicações. Elas podem ser registradas (como sub para o ID do usuário ou exp para a expiração), públicas ou privadas. Assim como o cabeçalho, o payload é codificado em Base64Url.
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
Parte 3: A Assinatura
Para criar a assinatura, você pega o cabeçalho codificado, a carga útil codificada, um segredo e o algoritmo especificado no cabeçalho. Isso garante que o conteúdo não tenha sido modificado durante o transporte.
Como Funciona a Autenticação JWT
O fluxo típico de autenticação baseado em JWT segue estas etapas:
- O usuário faz login com suas credenciais.
- O servidor valida as credenciais e gera um JWT assinado.
- O servidor envia o JWT de volta para o cliente.
- O cliente armazena o token (geralmente em
localStorageou cookiesHttpOnly). - Em cada requisição subsequente para um recurso protegido, o cliente envia o JWT no cabeçalho
Authorization: Bearer <token>. - O servidor verifica a assinatura e, se for válida, concede acesso.
Segurança: Não Armazene Segredos no JWT
Um erro comum é pensar que os JWTs são uma forma segura de esconder dados sensíveis. Isso é falso. A menos que você esteja usando JWE (JSON Web Encryption), o payload é apenas codificado, não criptografado. Qualquer pessoa que intercepte o token pode ler seu conteúdo facilmente. Para gerar chaves fortes para suas assinaturas, utilize o nosso Password Generator.
HS256 vs RS256: Qual Escolher?
| Algoritmo | Tipo | Melhor para |
|---|---|---|
| HS256 | Simétrico (1 chave) | Aplicações internas e simples |
| RS256 | Assimétrico (2 chaves) | Microserviços e APIs Públicas |
Conclusão
Os JSON Web Tokens oferecem uma maneira flexível e escalável de lidar com a autenticação em aplicações web modernas. Ao entender sua estrutura de três partes, você pode construir sistemas mais seguros e eficientes. Lembre-se sempre de usar HTTPS e manter seus segredos protegidos.