0Pricing
Cryptology Academy · Aula

Anatomia do JWT: cabeçalho, carga útil e assinatura

Decodifique as partes em base64url e compreenda cada campo do JWT.

Anatomia do JWT: cabeçalho, carga útil e assinatura é uma aula grátis de Cryptology Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cryptology Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cryptology Academy inclui 4 aulas no total.

O que é um JWT?

Um token Web JSON (JWT) é um formato compacto de token seguro para URLs, definido na RFC 7519. Ele codifica reivindicações (afirmações sobre uma entidade) e uma assinatura criptográfica em uma única cadeia de caracteres, permitindo autenticação sem estado.

Estrutura em três partes

Um JWT tem o formato: base64url(header).base64url(payload).base64url(signature). O ponto separa as partes. O cabeçalho e a carga útil são legíveis (base64url, não criptografados). Apenas a assinatura tem natureza criptográfica.

Cabeçalho

O cabeçalho é um objeto JSON: {"alg":"HS256","typ":"JWT"}. alg especifica o algoritmo de assinatura (HS256, RS256, ES256, none). typ é sempre "JWT". Cabeçalhos adicionais incluem kid (ID da chave) para a seleção de chaves.

Carga útil / reivindicações

Reivindicações registradas padrão: iss (emissor), sub (sujeito), aud (público-alvo), exp (marca de tempo Unix de expiração), nbf (não válido antes de), iat (emitido em), jti (ID do JWT para revogação). Reivindicações personalizadas são quaisquer pares adicionais de chave e valor.

Decodificação de um JWT

import base64, json token = "eyJ..." parts = token.split(".") header = json.loads(base64.urlsafe_b64decode(parts[0]+"==")) payload = json.loads(base64.urlsafe_b64decode(parts[1]+"==")) print(header, payload)

Verificação de assinaturas

Para HS256: HMAC-SHA256(base64url(header)+"."+base64url(payload), secret). O receptor recalcula esse valor e o compara com a parte da assinatura. Se os valores coincidirem e o token não estiver expirado, ele será válido.

Assinaturas assimétricas

Para RS256: a chave privada assina a cadeia header.payload usando RSA-SHA256. Qualquer entidade que possua a chave pública pode verificar a assinatura sem a chave privada. As chaves públicas são distribuídas por meio de endpoints JWKS (conjuntos de chaves Web JSON), por exemplo, /.well-known/jwks.json.

Codificação Base64url

Base64url substitui + por - e / por _, além de omitir o preenchimento com =. Isso torna os JWTs seguros em URLs, cabeçalhos HTTP e cookies sem codificação percentual. Os bytes brutos continuam não criptografados — apenas codificados.

JWTs não são criptografados por padrão

A carga útil de um JWT é visível para qualquer pessoa que a decodifique com base64url. Nunca coloque segredos (senhas, números de Segurança Social) na carga útil de um JWT, a menos que use JWE (Criptografia Web JSON) com o algoritmo "enc" para obter criptografia real.

Duração do token

Defina exp para uma duração curta (15–60 minutos para tokens de acesso). JWTs de longa duração acumulam riscos — se forem roubados, continuarão válidos até expirarem. Use tokens de atualização (armazenados com segurança) para emitir novos tokens de acesso de curta duração.

Descoberta de JWKS

Provedores de autenticação (Auth0, Keycloak, Google) publicam uma URL de JWKS. O verificador busca as chaves públicas por kid, armazena-as em cache e verifica as assinaturas sem contatar o emissor a cada solicitação. A rotação de chaves atualiza o endpoint de JWKS.

Verificação rápida

Qual parte de um JWT contém a assinatura criptográfica?

Recapitulação

Um JWT é composto por três partes JSON codificadas em base64url: cabeçalho (algoritmo), carga útil (reivindicações) e assinatura. A carga útil é legível — não é criptografada. A seguir: escolha entre HS256 e RS256.

Perguntas Frequentes

A aula “Anatomia do JWT: cabeçalho, carga útil e assinatura” é grátis?

Sim — o texto completo de “Anatomia do JWT: cabeçalho, carga útil e assinatura” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cryptology Academy, atualize para CoddyKit PRO. O curso de Cryptology Academy inclui 4 aulas no total.

O que vou aprender em “Anatomia do JWT: cabeçalho, carga útil e assinatura”?

Decodifique as partes em base64url e compreenda cada campo do JWT. Você pratica Cryptology Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Cryptology Academy?

Nenhuma experiência prévia é necessária. Cryptology Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Anatomia do JWT: cabeçalho, carga útil e assinatura”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Cryptology Academy?

Sim. Cada aula de Cryptology Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Anatomia do JWT: cabeçalho, carga útil e assinatura
  2. HS256 versus RS256: JWTs simétricos versus assimétricos
  3. Vulnerabilidades de JWT: alg=none e confusão de chaves
  4. Práticas recomendadas para uma implementação segura de JWT
← Voltar para Cryptology Academy