O que é um JWT
JWT (JSON Web Token) é um formato compacto para transportar informações assinadas entre sistemas, muito usado em autenticação e autorização de APIs. Ele é uma string dividida em três partes separadas por ponto: o header, o payload e a assinatura, cada uma codificada em Base64URL. O header diz o algoritmo usado, o payload carrega os dados (chamados claims), como o usuário e a data de expiração, e a assinatura garante que nada foi alterado. Depois do login, o servidor entrega um JWT que o cliente envia a cada requisição para provar quem é, sem o servidor guardar sessão.
Como funciona a assinatura de um JWT
A assinatura é o que garante que um JWT não foi adulterado. O servidor calcula a assinatura sobre o header e o payload usando um algoritmo e uma chave: nos algoritmos HS (HMAC), um segredo compartilhado; nos RS, PS e ES, uma chave privada, cuja pública correspondente valida o token. Quem recebe recalcula a assinatura com a chave certa e compara; se bater, os dados são autênticos e íntegros. É importante entender que a assinatura protege contra alteração, não contra leitura. Qualquer pessoa com o token consegue ler o payload, porque ele é só codificado, não criptografado.
Dá para confiar no conteúdo de um JWT?
Você pode confiar que o conteúdo de um JWT não foi alterado, desde que verifique a assinatura, mas não deve tratá-lo como secreto. O payload é apenas codificado em Base64URL, não criptografado, então qualquer pessoa que tenha o token consegue decodificar e ler tudo que está dentro. Por isso, nunca coloque senhas, chaves ou dados sensíveis no payload. A assinatura garante autenticidade e integridade (o token veio de quem tem a chave e não foi mexido), não sigilo. Valide sempre a assinatura e a expiração antes de aceitar um token, e nunca confie em um JWT só porque ele decodifica.
Codificação, hash e criptografia no JWT
Um JWT reúne os três conceitos em uma peça só, o que ajuda a diferenciá-los. Codificação é o Base64URL do header e do payload: reversível e pública, serve só para transportar o texto com segurança em URLs, sem esconder nada. A assinatura usa hash e criptografia: nos algoritmos HS ela é um HMAC (hash com chave secreta), e nos RS, PS e ES é uma assinatura digital (criptografia assimétrica com chave privada e pública). Nenhuma dessas etapas criptografa o conteúdo em si, então lembre: o JWT prova origem e integridade, mas o payload continua legível para todos.
Como usar esta ferramenta
- Na aba Decodificar, cole o token no formato header.payload.assinatura para ver o conteúdo e a expiração.
- Informe o segredo (HS) ou a chave pública (RS, PS, ES) para conferir se a assinatura é válida.
- Na aba Gerar, escolha o algoritmo, edite header e payload, informe o segredo ou a chave privada e clique em Gerar token.
Perguntas Frequentes (FAQ)
- O meu token é enviado para algum servidor?
- Não. A decodificação, a verificação e a assinatura são feitas inteiramente no seu navegador, com a Web Crypto API, sem enviar nada a nenhum servidor. É seguro colar tokens, segredos e chaves aqui.
- Como funciona a verificação de assinatura?
- Para os algoritmos HS (HMAC) você informa o segredo compartilhado. Para RS, PS e ES você cola a chave pública no formato PEM (SPKI). A ferramenta recalcula a assinatura e diz se ela confere, provando que o token não foi adulterado.
- Quais algoritmos são suportados?
- HS256, HS384 e HS512 (HMAC), RS256/384/512 (RSA PKCS#1 v1.5), PS256/384/512 (RSA-PSS) e ES256/384/512 (ECDSA). É o mesmo conjunto usado na maioria dos serviços.
- Dá para confiar no que está dentro do JWT?
- O conteúdo é legível por qualquer pessoa que tenha o token, pois o payload não é criptografado, apenas codificado em Base64URL. A assinatura garante a autenticidade, não o sigilo. Nunca guarde senhas ou segredos dentro do payload.
