Desenvolvedor 🔒 Roda no seu navegador — nenhum dado é enviado

Gerador de JWT

Assine um JSON Web Token seu para testar um endpoint, com os mesmos doze algoritmos que um emissor de verdade usa — e sem que a chave saia do seu navegador.

Token JWT
Segredo ou chave pública
A chave é usada no seu navegador e nunca é enviada a lugar nenhum.
Decodificado
Cabeçalho

          
        
Payload

        
Assinatura

Assine um token seu para testar um endpoint. Tudo é calculado nesta página.

Chave de assinatura

A chave e o token pronto ficam no seu navegador: nada é enviado a lugar nenhum e nada disso vai em um link compartilhado.

Criar um JSON Web Token assinado

Quase todo trabalho com tokens é ler tokens, que é o que o decodificador de JWT faz. Às vezes é preciso o caminho inverso: um token que ainda não existe, para ver como um serviço reage. Uma API de staging que recusa tudo, um middleware que você está escrevendo, um fixture de teste que precisa expirar em cinco minutos — todos precisam de um token sob o seu controle, e é isso que esta página assina.

Ela abre na aba Criar um token. Tudo ali — o menu de algoritmos, o payload, a chave — é montado e assinado pelo seu próprio navegador com crypto.subtle.sign. Em nenhum momento há uma requisição a um servidor, então a chave que você cola fica tão privada quanto a aba em que foi digitada.

Diagrama: um JWT dividido nos dois pontos em cabeçalho, payload e assinatura; cabeçalho e payload viram JSON legível e a assinatura é um HMAC dos dois.eyJhbGciOiJIUzI1NiIs….eyJzdWIiOiIxMjM0NTY3….2N-E3ZkgLmbR…CabeçalhoPayload (claims)Assinatura{ "alg": "HS256", "typ": "JWT"}{ "sub": "1234567890", "name": "Ada Lovelace", "iat": 1700000000, "exp": 1700003600}HMACSHA256( header + "." + payload, secret)JSON em Base64URL: qualquer um lêJSON em Base64URL: qualquer um lêVerificada com a chave secreta
Um JWT são três strings Base64URL unidas por pontos. O cabeçalho e o payload são JSON comum que qualquer pessoa pode decodificar, então um token nunca deve carregar segredos. Só a assinatura, verificada com a chave, mostra que o token não foi alterado.

O que o cabeçalho e o payload acabam contendo

O cabeçalho é escrito para você: o algoritmo escolhido e typ: "JWT", mais um kid se você preencher aquele campo. O identificador de chave importa quando o serviço que recebe guarda várias chaves e escolhe uma pelo nome; deixe o campo vazio e o cabeçalho fica com dois campos.

O payload é seu. Duas claims não são: ao assinar, iat sempre recebe a hora atual e exp vem do menu Expira em — cinco minutos, uma hora, um dia, trinta dias, ou nada. Quando o token aparece, a caixa do payload é reescrita com exatamente o que foi assinado, então os carimbos de tempo que você vê são os que estão dentro dele. Se essas duas claims são o que importa no seu teste, o verificador de expiração explica como um servidor as lê.

Escolher o algoritmo

Os doze algoritmos se dividem em duas famílias, e a diferença não é força, é quem precisa guardar a chave.

FamíliaChave que você colaUse quando
HS256 / HS384 / HS512Um segredo compartilhado, em texto ou Base64Um mesmo serviço emite e verifica os próprios tokens
RS256 / RS384 / RS512Chave privada PKCS#8 (PEM) ou JWKMuitos serviços verificam; eles só veem a metade pública
PS256 / PS384 / PS512A mesma chave privada RSARSA com o preenchimento PSS mais novo, quando o receptor pede
ES256 / ES384 / ES512Uma chave privada EC, P-256 / P-384 / P-521Você quer assinaturas curtas e chaves pequenas

HS256 vem selecionado porque costuma ser o que as pessoas estão testando: um segredo numa variável de ambiente, um serviço dos dois lados. No momento em que mais de um serviço precisa conferir o token, um algoritmo de chave pública é o formato melhor, porque quem verifica nunca precisa receber algo capaz de emitir tokens.

Para que serve um token gerado — e para que não

Um token assinado aqui é um token real: cole-o no decodificador acima, clique em Verificar com a mesma chave e a assinatura confere, porque a página a calcula do mesmo jeito que qualquer biblioteca. Isso o torna útil para fixtures, para reproduzir um bug com um token expirado ou ainda não válido, e para descobrir se o seu middleware valida aud de fato ou apenas o lê.

O que ele não é: uma porta de entrada. Um token só é aceito por um serviço que tenha a chave correspondente, então assinar um com um segredo seu não prova nada a mais ninguém. É disso que trata a assinatura, e é por isso que a diferença entre um token e um cookie de sessão se resume a quem precisa guardar o quê.

Chaves, formatos e os erros que eles causam

Para a família HS, cole o segredo como texto puro, ou marque O segredo está em Base64 se a sua configuração o guarda codificado: a mesma string crua e decodificada gera assinaturas completamente diferentes, motivo comum de um token funcionar num lugar e falhar em outro.

Para RS, PS e ES o navegador aceita um PEM PKCS#8 — o bloco que começa com -----BEGIN PRIVATE KEY----- — ou um JWK, a forma JSON em que um conjunto de chaves é distribuído. Um bloco antigo -----BEGIN RSA PRIVATE KEY----- é PKCS#1 e precisa ser convertido antes. Se você colar uma chave pública por engano, a página avisa em vez de falhar com um erro enigmático, porque uma chave pública confere uma assinatura mas nunca a cria.

Guias relacionados