Decodificador JWT (conteúdo, expiração e assinatura)

Cole um JWT para ler o cabeçalho e o payload e ver a expiração como data e hora. Com a chave, também verifica a assinatura.

JWT

0 caracteres · 0 linhas

Tudo é processado neste dispositivo. O que você digita não é enviado a lugar nenhum.

Um JWT pode funcionar como a chave do seu login. Não cole em outros sites em que você não confia.

Conteúdo decodificado

O resultado aparece aqui

Foi útil? Adoraríamos que você compartilhasse

Algo não funcionou ou tem uma ideia para melhorar?

Como usar

  1. 1. Cole o JWT

    Toque em “Colar”, acima da caixa de cima, para inserir o JWT que você copiou. Pode deixar o “Bearer” na frente ou as aspas em volta. Se quiser só testar, toque em “Exemplo”.

  2. 2. Veja o conteúdo

    Em “Conteúdo decodificado”, mais abaixo, aparece uma etiqueta como “Válido” ou “Expirado” e, logo abaixo, a expiração e a data de emissão no horário deste aparelho, com textos como “daqui a 2 anos” ou “há 3 horas”. Mais abaixo vêm o JSON do cabeçalho e do payload; toque em “Copiar payload” para copiar o JSON já formatado.

  3. 3. Verifique a assinatura

    Em “Verificar a assinatura”, bem no final, coloque a chave secreta se for HS256 ou parecido, ou a chave pública se for RS256, ES256 etc. Assim que você coloca, aparece “A assinatura está correta” ou “A assinatura não confere”. A chave do token de exemplo é papatto-sample-secret.

Ideal para

  • Descobrir por que o login cai de repente

    Cole o token e veja a expiração (exp) e a data de emissão (iat) no horário deste aparelho, com textos como “há 5 minutos”. Se tiver expirado, a etiqueta mostra na hora, o que facilita achar um relógio fora de hora ou uma validade curta demais.

    Desenvolvedores web e equipes de suporte

  • Conferir o que tem dentro de um token

    Leia em JSON formatado o usuário (sub), o emissor (iss), o destinatário (aud) e claims próprias, como permissões. Também dá para colar direto o texto com “Bearer” copiado das ferramentas de desenvolvedor.

    Quem cria ou testa APIs

  • Conferir se a chave de assinatura é a certa

    Coloque a chave secreta do HS256 ou a chave pública (PEM ou JWK) do RS256 ou ES256 e veja na hora se a assinatura foi feita com essa chave. Ajuda a descartar um erro de configuração de chaves quando a autenticação não passa.

    Quem desenvolve a parte de autenticação

  • Não deixar tokens reais saírem do aparelho

    Tanto a leitura quanto a verificação acontecem dentro do navegador deste aparelho. Tokens e chaves não são enviados a nenhum servidor, então você não entrega suas credenciais ao servidor de ninguém.

    Quem se preocupa com segurança

Bom saber

  • O conteúdo de um JWT não é criptografado: qualquer pessoa pode ler. Não coloque nele senhas ou nada que não possa ser visto.
  • Não é possível ler o conteúdo de um JWT criptografado (JWE). Só dá para ler o cabeçalho.
  • Não busca chaves públicas automaticamente (pela URL de um JWKS). Cole a chave você mesmo (esta página não se conecta a nada externo).

Sobre o JWT

O JWT (JSON Web Token) é um texto que representa os dados e as permissões de quem fez login, em 3 partes: “cabeçalho.payload.assinatura”. O cabeçalho e o payload são só JSON passado para a forma URL-safe do {tool:base64}, então qualquer pessoa consegue reverter e ler. O que impede a adulteração é a assinatura no final.

Esta ferramenta mostra o exp (expiração), o nbf (vale a partir de) e o iat (emissão) do payload como data e hora no fuso deste aparelho, com textos como “daqui a 3 horas”, e avisa com uma etiqueta se já expirou. Datas que são só um número também podem ser convertidas no {tool:unix-time}. Se você colocar a chave, ela também verifica se a assinatura HS256, RS256, PS256, ES256, EdDSA etc. está correta, só dentro do navegador.

As 3 partes de um JWT
O que contémDá para ler?
CabeçalhoO método de assinatura (alg), o tipo (typ) e o ID da chave (kid)Qualquer pessoa lê
PayloadClaims como o usuário (sub), a expiração (exp) e as permissõesQualquer pessoa lê
AssinaturaUm valor feito com a chave a partir do cabeçalho e do payloadSem a chave, não dá para verificar

Perguntas frequentes

Respostas para as dúvidas mais comuns antes de começar.

O JWT que eu colo é enviado para algum lugar?

Não. Tanto a leitura quanto a verificação da assinatura são feitas só no navegador do seu aparelho, e nem o JWT nem a chave são enviados a um servidor. Um JWT pode funcionar como a chave do seu login, então não cole em outros sites se você não sabe o que eles fazem com ele.

Como vejo a expiração (exp)?

A etiqueta acima de “Conteúdo decodificado” mostra “Válido”, “Expirado”, “Ainda não vale” ou “Sem expiração”. Na lista abaixo, a data de expiração aparece no fuso deste aparelho, junto com quanto falta ou quanto já passou, como “daqui a 3 horas” ou “há 2 dias”.

Dá para verificar a assinatura?

Dá. Para HS256, HS384 e HS512, coloque a chave secreta (em texto ou Base64); para RS256, PS256, ES256, EdDSA e outros, a chave pública. Na hora aparece “A assinatura está correta” ou “A assinatura não confere”.

Que formatos de chave pública são aceitos?

São aceitos PEM que começa com “-----BEGIN PUBLIC KEY-----”, “-----BEGIN RSA PUBLIC KEY-----”, certificados (-----BEGIN CERTIFICATE-----), JWK e JWK Set ({"keys": […]}). Com um JWK Set, é escolhida a chave com o mesmo kid do cabeçalho.

Funciona mesmo com o “Bearer” na frente?

Funciona. A ferramenta tira automaticamente o “Authorization: Bearer”, os espaços, as quebras de linha e as aspas em volta antes de ler.

Apareceu “JWT sem assinatura (alg: none)”

É um token sem assinatura, cujo conteúdo qualquer pessoa pode alterar. Se não for para testes, revise a configuração do servidor. Um servidor que o use para login ou coisas do tipo não deve aceitar JWT com alg none.

Apareceu “JWT criptografado (JWE)”

Um JWT dividido em 5 partes por “.” é um JWE, com o conteúdo criptografado. Sem a chave privada de quem recebe, não dá para ler, então esta ferramenta mostra só o cabeçalho (o método de criptografia etc.).

Aparece “Não é possível ler como JWT”

Uma parte se perdeu na hora de copiar, ou há caracteres que não podem ser usados em um JWT. A ferramenta mostra qual parte não pôde ser lida e marca o lugar em laranja na caixa, então confira ali.

O conteúdo de um JWT é criptografado?

Não. O cabeçalho e o payload só são trocados por caracteres segundo uma tabela fixa (base64url), então qualquer pessoa consegue ler. Não coloque senhas nem dados pessoais neles.

É grátis?

Sim, é grátis. Sem cadastro e sem anúncios.