O que faz
Um JSON Web Token (JWT, RFC 7519) é uma string compacta e segura para URL com três partes separadas por pontos: um cabeçalho que indica o algoritmo de assinatura, um payload com as claims e uma assinatura sobre as duas primeiras. APIs usam JWTs como tokens bearer, e provedores de identidade como ID tokens.
Esta ferramenta cria e assina um token a partir de um payload JSON. Suporta:
- HS256, HS384, HS512: HMAC com segredo compartilhado, em texto ou Base64.
- RS256, RS384, RS512 e PS256, PS384, PS512: assinaturas RSA com chave privada PEM.
- ES256, ES384, ES512: assinaturas ECDSA com chave privada EC.
Como usar
- Escreva o payload como um objeto JSON ou clique em Exemplo.
- Escolha o Algoritmo e digite o segredo ou cole a chave privada PEM no topo da caixa de entrada.
- Se quiser, defina iat como agora, adicione uma expiração (exp) ou campos extras de cabeçalho, como um ID de chave.
- Copie o token da saída. Cole-o no decodificador de JWT para inspecioná-lo.
Exemplo
Com o segredo your-256-bit-secret, o payload abaixo assinado com HS256 gera o conhecido token de exemplo do jwt.io:
{"sub":"1234567890","name":"John Doe","iat":1516239022}
O cabeçalho é sempre escrito como {"alg":"HS256","typ":"JWT"} seguido dos campos extras que você adicionar; alg sempre segue o algoritmo escolhido.
Boas práticas
Mantenha os tokens de curta duração com uma claim exp e defina iss e aud para que um token de um serviço não possa ser reaproveitado em outro. No servidor, sempre verifique a assinatura com uma lista explícita de algoritmos permitidos e rejeite none. Segredos HMAC devem ser longos e aleatórios, pelo menos do tamanho da saída do hash (32 bytes para HS256).
Perguntas frequentes
› Qual algoritmo devo escolher?
O que o seu servidor verifica. HS256 usa um segredo compartilhado e é comum dentro de um único sistema. RS256 e ES256 assinam com uma chave privada e qualquer um pode verificar com a pública, o que serve para tokens checados por vários serviços. ES256 gera assinaturas bem mais curtas que RS256.
› Quais formatos de chave privada são aceitos?
Chaves PEM em PKCS#8 (BEGIN PRIVATE KEY), PKCS#1 RSA (BEGIN RSA PRIVATE KEY) e SEC1 EC (BEGIN EC PRIVATE KEY). Chaves criptografadas precisam ser exportadas antes sem frase-senha. Para ES256, ES384 e ES512 a chave deve estar na curva P-256, P-384 ou P-521, respectivamente.
› O payload de um JWT é secreto?
Não. O cabeçalho e o payload só estão codificados em Base64URL, e qualquer pessoa com o token pode lê-los. A assinatura impede alterações, não a leitura. Nunca coloque senhas ou outros segredos no payload de um JWT.
› Meu segredo ou chave privada é salvo ou enviado?
Não. A assinatura roda no seu navegador com a Web Crypto API. O segredo ou a chave fica apenas na memória desta página: não é salvo, não vai para a barra de endereços nem para os links de compartilhamento. Mesmo assim, evite colar chaves de produção em páginas que você não controla.