Menu
dev 10 min de leitura |

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:

  1. O usuário faz login com suas credenciais.
  2. O servidor valida as credenciais e gera um JWT assinado.
  3. O servidor envia o JWT de volta para o cliente.
  4. O cliente armazena o token (geralmente em localStorage ou cookies HttpOnly).
  5. Em cada requisição subsequente para um recurso protegido, o cliente envia o JWT no cabeçalho Authorization: Bearer <token>.
  6. 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.