Skip to content
Latchkey

O Que É um JSON Web Token (JWT)? Explicado

Um JSON Web Token (JWT) é um token compacto e assinado que carrega um conjunto de claims como JSON codificado em base64url, usado para provar identidade entre serviços.

Um JWT é uma credencial autocontida. Ele empacota um pequeno payload JSON de claims - quem você é, o que você pode fazer, quando ele expira - e o assina para que o receptor possa confiar nele sem chamar de volta o emissor. JWTs são centrais para a auth moderna de CI: os tokens OIDC que o GitHub Actions emite para provedores de nuvem são JWTs.

O que um JWT é

Um JWT é composto por três partes codificadas em base64url e unidas por pontos: um header descrevendo o algoritmo de assinatura, um payload de claims, e uma signature. O header e o payload são apenas JSON. A signature permite que um verificador confirme que o token foi emitido por uma parte confiável e não foi alterado.

Claims

O payload é um conjunto de claims - afirmações sobre o sujeito. As padrão incluem o emissor, o sujeito, a audiência e o tempo de expiração; claims customizadas carregam dados da aplicação. Workflows de CI dependem de claims como o repositório, a branch e o environment para que um provedor de nuvem possa conceder acesso apenas ao pipeline correto.

Assinado, não criptografado

Um JWT padrão é assinado mas não criptografado, então qualquer um pode decodificar e ler suas claims - é apenas base64, não secreto. A signature garante integridade e autenticidade, não confidencialidade. Nunca coloque secrets em um payload de JWT esperando que fiquem escondidos.

JWTs em CI e OIDC

O grande uso em CI é a auth de nuvem sem chaves. O GitHub Actions pode cunhar um JWT OIDC de vida curta descrevendo seu workflow, que AWS, GCP ou Azure trocam por credenciais temporárias. Isso substitui secrets de vida longa armazenados no repo por um token que existe apenas pela duração do job.

OIDC JWT exchange in CI
# Request an OIDC JWT for cloud auth in GitHub Actions
permissions:
  id-token: write
steps:
  - uses: aws-actions/configure-aws-credentials@v4
    with:
      role-to-assume: arn:aws:iam::111122223333:role/ci
      aws-region: us-east-1

Nota da Latchkey

OIDC funciona da mesma forma nos runners da Latchkey e nos GitHub-hosted, então você pode adotar auth de nuvem sem chaves baseada em JWT e parar de armazenar chaves de nuvem de vida longa como secrets do repositório inteiramente.

Principais conclusões

  • Um JWT é composto por três partes em base64url - header, payload de claims e signature - unidas por pontos.
  • Ele é assinado para integridade mas não criptografado, então suas claims são legíveis por qualquer um.
  • CI usa JWTs para OIDC: um token de vida curta é trocado por credenciais temporárias de nuvem, substituindo secrets armazenados.

Guias relacionados