1001Ferramentas
🔏Segurança

Construtor de JWT (HS256)

Monte um JWT preenchendo header, payload e segredo. Assinatura HS256 calculada no navegador via SubtleCrypto.

Um token de teste assinado em tempo real

Na hora de depurar uma API você quase sempre precisa de um JWT com claims específicas: um sub diferente, um exp já vencido, um campo a mais no payload. Ficar subindo o backend só para emitir um token de teste é lento. Aqui você edita o header e o payload como JSON, digita o segredo, e o token HS256 aparece montado e assinado na tela em tempo real, com as três partes coloridas para você enxergar onde termina uma e começa a outra.

As três partes são base64url, não base64 comum: '+' vira '-', '/' vira '_' e o '=' de padding some, por isso colar um JWT num decodificador base64 qualquer costuma falhar. A assinatura é um HMAC-SHA256 calculado sobre os bytes exatos de header.payload. Uma pegadinha proposital: mudar o campo alg no header não muda nada aqui, a ferramenta sempre assina com HS256. Nos servidores vale a mesma lição: confiar cegamente no alg que vem dentro do token é uma vulnerabilidade clássica.

Use segredo de teste, nunca o de produção, ainda que a assinatura seja calculada pela SubtleCrypto no próprio navegador, sem enviar nada. Lembre que JWT é assinado, não criptografado: qualquer pessoa decodifica o payload sem saber o segredo, então nada de senha ou dado sensível nas claims. E o erro mais comum de todos: exp e iat são segundos Unix, não milissegundos; um Date.now() colado sem dividir por 1000 produz um token que só expira daqui a milhares de anos.

Perguntas frequentes

Por que o servidor rejeita o token que eu montei aqui?
As causas mais comuns: segredo diferente do que o servidor usa (um espaço a mais já muda tudo), exp em milissegundos em vez de segundos, ou o servidor esperando outro algoritmo, como RS256, enquanto o token é HS256.
Mudei o alg no header para RS256. O token virou RS256?
Não. O header é só texto: a assinatura desta ferramenta é sempre HMAC-SHA256. É um bom lembrete de que um servidor jamais deve escolher o algoritmo de verificação com base no que o próprio token declara.
Dá para ver o que tem dentro de um JWT sem o segredo?
Dá: header e payload são apenas base64url, qualquer um decodifica. O segredo só é necessário para gerar ou conferir a assinatura, ou seja, ele garante integridade, não sigilo.

Leia mais sobre isso

Ferramentas Relacionadas