Como ler um token JWT e entender o que ele contém

Descubra as três partes de um JWT, o que significa cada data e por que decodificar um token não é o mesmo que validá-lo.

Guia práticoAtualizado Tempo estimado de leitura: 3 min
Nesta página

As três partes de um JWT

Um JWT é uma cadeia com três partes separadas por pontos: cabeçalho, conteúdo e assinatura. O cabeçalho indica o algoritmo (por exemplo, HS256 ou RS256) e o tipo. O conteúdo leva os dados, chamados claims, como o identificador do usuário, o emissor ou as datas.

As duas primeiras partes são JSON codificado em Base64URL. Não são criptografadas: qualquer pessoa com o token pode lê-las. Por isso não devem incluir senhas nem dados que você não quer expor.

Datas e estado

Os claims iat, exp e nbf são datas em segundos desde 1970 (tempo Unix). O Snipshed as mostra de forma legível em UTC e compara a expiração com o relógio do seu dispositivo para indicar se o token está dentro da validade, expirado ou ainda não é válido.

Se o relógio do seu computador estiver desajustado, o estado pode errar. Um token sem exp nunca expira, algo que vale rever em um projeto de segurança.

Decodificar não é validar

A assinatura garante que o conteúdo não foi alterado e que foi emitido por quem possui a chave. Verificá-la exige essa chave e deve ser feito no servidor que recebe o token. Um token com assinatura alterada é decodificado do mesmo jeito.

Use a ferramenta para depurar uma integração, entender o que um token declara ou preparar um teste. Não a use para decidir se uma requisição é confiável e trate tokens reais com cuidado: colá-los em um site externo pode dar acesso a outra pessoa.

  1. Cole o token completo, com as três partes.
  2. Decodifique e revise algoritmo, emissor e dados do usuário.
  3. Veja as datas de emissão e expiração e o estado.
  4. Lembre-se de que a assinatura não é verificada; valide-a no seu servidor.

Critérios para revisar e entregar o resultado

Se você trabalha com tokens com frequência, acostume-se a verificar três coisas: o algoritmo, a expiração e o público-alvo. Um token com expiração muito longa, ou sem expiração, aumenta o dano se vazar. Evite colar tokens de produção em ferramentas externas e use tokens de teste nos seus exemplos. Se suspeitar que um token foi exposto, revogue-o no serviço que o emitiu em vez de esperar que expire.

EXPERIMENTE

Ler um token de exemplo

Selecione Experimente o exemplo e depois Decodificar token. O exemplo é um token de teste que contém um nome, uma data de emissão e uma de expiração.

São exibidos o cabeçalho com o algoritmo HS256, o conteúdo com os dados e as datas em UTC e o estado Expirado, porque o token de exemplo expirou em 2018.

Mude uma letra da assinatura e decodifique de novo: continua funcionando, o que mostra que decodificar não valida. Mude uma letra do conteúdo e observe o erro ou a mudança dos dados.