Descodificador e verificador JWT
Cole um JSON Web Token e leia-o como o seu servidor deveria: cabeçalho e carga descodificados para JSON legível, as declarações de tempo desenhadas como uma linha temporal — emitido, válido a partir de, expira, expirado — e, para HS256, HS384 e HS512, uma verificação de assinatura real contra um segredo que você fornece. Tudo acontece no seu navegador. Um token é uma credencial, e neste site as credenciais não se colam em chats de IA registados nem em servidores de desconhecidos.
O que é um token e o que a descodificação prova
Um JWT são três segmentos Base64URL unidos por pontos: um cabeçalho que nomeia o algoritmo de assinatura, uma carga de declarações e uma assinatura sobre os dois primeiros. O segmento do meio — aquele que toda a gente quer ler — é uma codificação, não uma cifragem: o descodificador Base64 abre-o sem qualquer chave, e é por isso que um token nunca deve transportar nada que você não imprimisse num cartaz. O que a assinatura acrescenta é proveniência: edite uma declaração e o HMAC deixa de corresponder, desde que o verificador verifique mesmo — as falhas que enchem os relatórios de incidentes são servidores que descodificaram e confiaram sem verificar, bibliotecas que deixaram o token escolher o seu próprio algoritmo e tokens «none» aceites como evangelho. Esta página espelha o fluxo honesto: descodificar e ler tudo, ler a linha temporal das declarações contra o relógio (um exp no passado é um token morto, por válida que seja a assinatura), prestar atenção aos avisos de algoritmo e só então verificar — localmente, com o segredo a ficar no mesmo separador do navegador que o token. Se o segredo com que está a depurar veio de um ficheiro de configuração, o validador .env verifica esse ficheiro sem o transmitir também; o artigo principal, nunca deixe um chatbot tratar dos seus segredos, explica por que toda a família de trabalhos se mudou para o navegador.
Perguntas frequentes
É seguro colar aqui um token de produção?
É o lugar mais seguro da internet para o fazer, e a razão de esta ferramenta existir. A descodificação acontece no seu navegador, no código desta página: o token nunca é transmitido, armazenado ou registado. Compare com as alternativas que as pessoas realmente usam — chats de IA, que guardam a conversa nos servidores de um terceiro, e «descodificadores JWT online» cujo servidor vê tudo o que colar. Um token é uma credencial viva até expirar; em qualquer lugar onde seja colado, pode ser reutilizado a partir daí. Aqui, não vai a lado nenhum — a mesma regra de só-local do validador .env.
Se qualquer pessoa pode descodificar um JWT, porque não é isso uma falha de segurança?
Porque descodificar nunca foi a proteção. Um JWT é uma declaração assinada, não cifrada: a carga é Base64URL — uma codificação, legível por qualquer pessoa que detenha o token — e a segurança vive na assinatura, que prova que a declaração foi emitida por quem detém a chave e não foi alterada. O desastre clássico é um programador tratar a carga como secreta, ou um servidor não verificar a assinatura para que uma carga editada à mão passe sem problemas. O artigo Base64 não é cifragem cobre a confusão de codificação por baixo de ambos.
Porque podem verificar HS256 aqui, mas não o meu token RS256?
O HS256 é simétrico: um segredo partilhado assina e verifica, por isso um segredo que escreva pode ser verificado localmente com HMAC. O RS256 é assimétrico: é assinado com uma chave privada e verificado com a chave pública correspondente, que esta página teria de lhe pedir — e uma página que convida a colar chaves ensina um hábito que termina numa chave privada vazada. Verifique tokens RS256 com o JWKS publicado pelo emissor no seu próprio código ou ferramentas, e nunca cole uma chave privada em qualquer site ou chat, incluindo este.
O que significa «alg: none» e porquê o aviso vermelho?
Significa que o token declara não estar assinado — e um servidor que honra essa declaração aceita qualquer carga de qualquer pessoa, sem chave. Foi uma classe de vulnerabilidade real e repetida: bibliotecas que confiavam no próprio campo alg do token podiam receber um token «none» com uma carga de administrador. O aviso é ruidoso porque a resposta correta é ruidosa: um token none é um dado não autenticado, e qualquer sistema que o aceite tem um desvio de autenticação por desenho.
A assinatura confere — terminei?
Provou que o token foi cunhado por um detentor do segredo e que o seu conteúdo não foi alterado. Não provou que é destinado a si (verifique a declaração aud), que está vigente (a linha temporal acima mostra exp e nbf), nem que o segredo em si é forte — HS256 com um segredo adivinhável como «secret» cai perante força bruta offline, após o que qualquer pessoa pode cunhar tokens que a sua verificação abençoará. A verificação é uma linha da auditoria, não a auditoria inteira.