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. 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”.
Clique em “Colar”, acima da caixa da esquerda, para inserir o JWT que você copiou. Pode deixar o “Bearer” na frente ou as aspas em volta. Se quiser só testar, clique em “Testar um exemplo”.
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.
Acima da caixa da direita 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; clique em “Copiar payload” para copiar o JSON já formatado.
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.
Em “Verificar a assinatura”, no canto inferior esquerdo, 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.
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.
Mais ferramentas
- Converter largura total e meia largura
Converta de uma vez letras, números e katakana entre largura total e meia largura.
- Conversor hiragana ⇔ katakana
Converte hiragana, katakana e katakana de meia largura de uma vez. Kanji, letras e números ficam como estão.
- Contador de caracteres para redes (X, Instagram, YouTube)
Mostra quantos caracteres faltam até o limite do X, Instagram, YouTube e outras redes, contando do jeito de cada uma. Também palavras e linhas.
- Formatar JSON
Deixe o JSON fácil de ler ou compacte-o em uma linha. Se houver um erro, mostra onde.
- Codificar e decodificar URL
Converte acentos, espaços e símbolos para o formato de URL (como %C3%A3) ou volta ao texto original.
- Gerador de senhas
Escolha o tamanho e os caracteres e crie na hora senhas difíceis de adivinhar.