Sobre: Decodificador e verificador de JWT
Um JSON Web Token (JWT) é uma string compacta de três partes em base64url separadas por pontos: um cabeçalho que indica o algoritmo de assinatura, um payload com claims como o ID do usuário e a data de expiração, e uma assinatura. Qualquer pessoa pode decodificar as duas primeiras partes – elas são codificadas, não criptografadas –, mas só a assinatura diz se o token foi realmente emitido por alguém que tem a chave.
Esta ferramenta decodifica o cabeçalho e o payload, transforma os timestamps exp, nbf e iat em datas legíveis e diz se o token já expirou. Se você colar o segredo de assinatura ou a chave pública do emissor, ela também verifica a assinatura. Tokens e chaves são processados no seu navegador e nunca são enviados para um servidor, o que importa porque tokens de acesso dão acesso a contas reais.
Como usar
- Cole o token na caixa “Token”. Um "Bearer " no início e as quebras de linha são removidos automaticamente.
- Leia o “Cabeçalho” e o “Payload” decodificados e confira na tabela “Claims” o emissor, o titular, o destinatário e o período de validade.
- Para verificar a assinatura, vá até “Verificar assinatura”. Para HS256, HS384 ou HS512, digite o segredo compartilhado; marque “O segredo está codificado em base64” se for o caso.
- Para tokens RS, PS, ES ou EdDSA, cole a chave pública como um bloco PEM, um certificado X.509, um JWK ou um JWKS inteiro.
- Clique em “Verificar”. O resultado mostra se a assinatura é válida.
Recursos
- Claims legíveis: Os horários de expiração, de início da validade e de emissão aparecem em UTC, no seu fuso horário e em relação a agora, com um status atualizado ao vivo.
- Verificação de assinatura: Oferece suporte a HS256/384/512, RS256/384/512, PS256/384/512, ES256/384/512 e EdDSA (Ed25519) usando a Web Crypto API do seu navegador.
- Entrada de chave flexível: Aceita chaves públicas SPKI em PEM, certificados X.509, JWKs avulsos e conjuntos de JWKs, nos quais a chave é escolhida pelo kid.
- Mensagens de erro claras: Diz se um token tem o número errado de partes, base64url ou JSON inválido, ou se é um JWE criptografado.
- Privacidade desde a concepção: Nada é enviado nem armazenado. As chaves ficam nesta aba do navegador e desaparecem quando você a fecha.
Exemplos
Por que a API retorna 401?
Cole o token de acesso da requisição que falhou. A tabela “Claims” mostra “Expirado” e o horário de expiração no seu fuso horário, então você sabe que o cliente não renovou o token.
Verificar um ID token de um provedor de identidade
Copie o documento JWKS do provedor (do jwks_uri dele) e cole-o como chave. A ferramenta escolhe a chave com o kid correspondente e verifica a assinatura RS256.
Depurar uma integração HS256
Cole um token e o seu segredo compartilhado. Se a assinatura não conferir, verifique se o segredo está codificado em base64 de um lado e em texto simples do outro.
Limitações e observações
- Tokens criptografados (JWE, com cinco partes) não podem ser descriptografados.
- As chaves não são baixadas de uma URL de JWKS – copie o JSON dessa URL e cole-o aqui.
- Blocos PKCS#1 "BEGIN RSA PUBLIC KEY" não são aceitos; converta-os antes para um bloco SPKI "BEGIN PUBLIC KEY".
- A verificação confere só a assinatura. Se o emissor, o destinatário e as outras claims são aceitáveis depende da sua aplicação.
- Navegadores mais antigos podem não oferecer suporte a EdDSA (Ed25519); a ferramenta avisa se uma chave ou um algoritmo não for suportado.
Perguntas frequentes
É seguro colar um token aqui?
O token é decodificado por JavaScript no seu navegador e não é enviado para lugar nenhum. Mesmo assim, trate tokens de produção como senhas: prefira tokens expirados ou de teste sempre que puder.
Qualquer pessoa consegue ler o conteúdo de um JWT?
Sim. O cabeçalho e o payload são apenas codificados em base64url. Nunca coloque segredos no payload de um JWT; a assinatura só protege contra alterações, não contra leitura.
O que significa “Assinatura inválida”?
O token foi alterado depois de assinado, ou foi assinado com uma chave diferente da que você informou. Confira se está usando o segredo certo ou a chave pública que corresponde ao kid do cabeçalho.
Preciso da chave privada para verificar um token?
Não. Tokens RS, PS, ES e EdDSA são verificados com a chave pública. A ferramenta recusa chaves privadas para que elas não sejam coladas por engano.
Por que um token com "alg": "none" não é verificado?
Um token assim não tem assinatura, então não há nada para conferir. Servidores devem rejeitar tokens sem assinatura, a menos que esperem explicitamente por eles.