Decodificador de JWT

Cole um JSON Web Token e leia o header e o payload como JSON formatado — com os prazos de expiração convertidos em datas legíveis. Totalmente offline.

1.177 visualizações

Como Funciona

Um JSON Web Token é uma string compacta formada por três partes codificadas em Base64URL unidas por pontos: header.payload.signature. Base64URL é uma variante do Base64 segura para uso em URLs, que troca +// por -/_ e remove o preenchimento = do final, de modo que o resultado possa aparecer dentro de uma URL ou de um cabeçalho HTTP sem precisar de escape. O header é um pequeno objeto JSON que indica o algoritmo de assinatura e o tipo de token — normalmente {"alg":"HS256","typ":"JWT"}. O payload é um objeto JSON de "claims": pares chave/valor arbitrários que descrevem quem o token representa e o que ele tem permissão para fazer, além de algumas claims de tempo padronizadas — iat (emitido em), nbf (não válido antes de) e exp (expiração), todas armazenadas como timestamps Unix. A assinatura é calculada sobre as duas primeiras partes usando o algoritmo indicado no header e uma chave que só o servidor emissor possui.

Cole um token aqui e a ferramenta o divide pelos seus dois pontos, decodifica o header e o payload em Base64URL e formata cada um como JSON indentado. Quaisquer valores exp/iat/nbf também são convertidos para uma data legível, com um selo que mostra rapidamente se o token está expirado no momento.

JWTs são a espinha dorsal da maior parte da autenticação moderna: tokens de acesso OAuth 2.0, tokens de identidade do OpenID Connect e sistemas de sessão personalizados usam esse formato porque ele permite que um servidor emita uma credencial autocontida que outros serviços conseguem ler sem consultar um banco de dados — desde que consigam verificar a assinatura. Os algoritmos mais comuns são HS256 (HMAC com segredo compartilhado) e RS256/ES256 (assinaturas assimétricas RSA ou de curva elíptica, em que o emissor guarda uma chave privada e qualquer um pode verificar com a chave pública correspondente).

O Que Você Precisa Saber

Decodificar não é o mesmo que validar. O header e o payload estão apenas codificados, não criptografados, então qualquer pessoa pode lê-los sem chave nenhuma — e qualquer pessoa também pode forjar um token com as claims que quiser. O que torna um JWT confiável é exclusivamente sua assinatura, e verificar uma assinatura exige o segredo (algoritmos HMAC) ou a chave pública do emissor (algoritmos RSA/ECDSA). Essa verificação deve ser feita em um servidor que guarde a chave; ela não pode ser feita com segurança dentro de uma ferramenta de navegador, já que expor um segredo ali anularia todo o propósito. Trate este decodificador estritamente como um auxiliar de depuração — nunca como prova de que um token é genuíno ou ainda válido.

Também tome cuidado com o que você cola aqui: um JWT carrega dados de sessão ou de autorização, então trate-o como uma senha e evite colar tokens reais de produção em qualquer ferramenta em uma máquina compartilhada. Tokens com cinco partes separadas por ponto são JWE (criptografado), não JWS (assinado) — este decodificador lida com a variante assinada, muito mais comum. E nunca confie cegamente no campo alg no seu próprio código de verificação — um ataque conhecido engana implementações ingênuas para que aceitem alg: none ou troquem RS256 por HS256, e é por isso que a verificação de assinatura deve ficar em bibliotecas testadas, não em código feito à mão.

Perguntas Frequentes

Decodificar verifica se o token é válido?

Não — decodificar apenas lê o conteúdo. A verificação de assinatura exige o segredo de assinatura ou a chave pública e é responsabilidade do seu servidor. Qualquer pessoa pode montar um token com qualquer payload; só a assinatura comprova a autenticidade.

É seguro colar um token real de produção aqui?

A ferramenta nunca transmite o token — a decodificação é local. Ainda assim, trate tokens de produção como senhas: prefira tokens expirados ou de teste ao depurar em ambientes compartilhados.

Por que meu token não decodifica?

Verifique se você copiou as três partes separadas por ponto e se nenhuma quebra de linha foi inserida. Tokens criptografados (JWE, cinco partes) não podem ser lidos sem a chave — esta ferramenta lida com tokens assinados (JWS), o tipo comum.

Qual é a diferença entre um token JWS e um JWE?

JWS (JSON Web Signature) é o formato assinado que esta ferramenta decodifica — três partes, legível mas à prova de adulteração. JWE (JSON Web Encryption) tem cinco partes e o próprio payload é criptografado, então não pode ser lido de forma alguma sem a chave de decriptação; se seu token não decodificar aqui e tiver quatro pontos em vez de dois, provavelmente é um JWE.

O que significam as claims exp, iat e nbf?

As três são timestamps Unix (segundos desde 01/01/1970). iat registra quando o token foi emitido, nbf marca o momento mais cedo em que ele passa a ser válido, e exp marca o momento em que deixa de ser válido. Um servidor que se comporta corretamente rejeita qualquer token cujo horário atual esteja fora da janela nbf-exp.

Comentários

Ainda não há comentários — seja o primeiro a escrever um!

Ferramentas Semelhantes