SomeeLab.tools

Decodificador de JWT

Leia o cabeçalho e o payload de um JSON Web Token e veja quando ele expira. Grátis, sem cadastro e decodificado no seu navegador.

A assinatura é exibida, mas não conferida. Conferir exige a chave de assinatura, e essa chave não deve ir parar numa página web. Decodificar não prova quem emitiu o token.

O que vai dentro de um token

Um JWT tem três partes separadas por pontos. As duas primeiras são JSON codificado em Base64url que qualquer um lê; a terceira é a assinatura.

  • Cabeçalho — o algoritmo de assinatura (alg) e o tipo (typ). Serviços que giram chaves também trazem um kid apontando qual foi usada.
  • Payload — as declarações. sub identifica o usuário, iss o emissor, aud o destinatário previsto, e exp, iat e nbf carregam horários.
  • Assinatura — as duas primeiras partes assinadas com uma chave.

A especificação define as declarações de tempo como inteiros em segundos. Um token que colocou milissegundos ali aparece aqui milhares de anos no futuro, o que denuncia um defeito de quem o emitiu.

Decodificar não é verificar

Ler o conteúdo aqui não diz nada sobre o token ser autêntico. O payload não está trancado, qualquer um pode reescrevê-lo, e só quem tem a chave percebe que a assinatura deixou de bater.

Por isso o servidor precisa verificar a assinatura a cada requisição — e, ao fazer isso, não pode confiar no campo alg. Fixe o algoritmo esperado no servidor e recuse qualquer token que diga none ou que discorde do previsto. Implementações que seguem o cabeçalho às cegas são o caminho clássico para tokens sem assinatura passarem.

Nada de segredos no payload

Qualquer pessoa com o token, inclusive quem abrir as ferramentas do navegador, lê o payload. Se ali houver um documento de identidade, uma nota interna de administração ou dados de pagamento, considere isso publicado.

O que cabe ali é aquilo que você não se importa que o portador veja: um identificador de usuário, nomes de papel, uma expiração. O resto fica no servidor e é consultado quando preciso.

Antes de colar o token de outra pessoa

Esta ferramenta não envia o token para lugar nenhum. Ainda assim, um token dentro da validade é uma credencial: cole num chat ou num sistema de chamados e quem ler pode usar. Se um vazar, revogue aquela sessão em vez de esperar a expiração.