BrowserTools
Publicidade
Início / Codificadores / Gerador de JWT (HS256)

Gerador de JWT (HS256)

Cria JSON Web Token assinados com HS256 localmente no teu navegador, sem enviar nada.

A carregar Gerador de JWT (HS256)… Se nada acontecer, ativa o JavaScript.

Um JSON Web Token, ou JWT, é um formato de token compacto e assinado usado por todo o lado na autenticação e autorização modernas. Um JWT empacota um cabeçalho e uma carga útil de reivindicações em dois segmentos codificados em Base64url e depois acrescenta uma assinatura que prova que o token não foi adulterado. Este gerador constrói para ti um token HS256 totalmente válido: monta o cabeçalho padrão, codifica a tua carga útil e assina o resultado com HMAC-SHA256 usando um segredo que tu forneces. É a contraparte natural de um descodificador de JWT, permitindo-te criar os tokens que de outro modo apenas conseguirias inspecionar.

Perguntas frequentes

O meu segredo ou a minha carga útil são enviados para algum lado?
Não. O token é construído e assinado inteiramente no teu navegador usando a API Web Crypto nativa. A tua carga útil e o teu segredo de assinatura nunca saem do teu dispositivo, nunca são registados e nunca são transmitidos, o que é essencial porque o segredo é o que mantém um token HS256 seguro.
O que é o HS256 e como funciona a assinatura?
HS256 é HMAC com SHA-256, um esquema de assinatura simétrico. A ferramenta junta o cabeçalho e a carga útil codificados em Base64url com um ponto, calcula um HMAC-SHA256 sobre essa cadeia usando o teu segredo como chave e codifica o resultado em Base64url como a assinatura. Qualquer pessoa que tenha o mesmo segredo pode recalculá-la e verificá-la.
O que devo colocar na carga útil?
A carga útil é um objeto JSON de reivindicações. As reivindicações registadas incluem sub (sujeito), iss (emissor), aud (audiência), iat (emitido em), exp (expiração) e nbf (não antes de), todas usando marcas temporais Unix para os campos de tempo. Podes também acrescentar quaisquer reivindicações personalizadas de que a tua aplicação precise, como um papel de utilizador ou um id de inquilino.
Como adiciono um tempo de expiração?
Inclui uma reivindicação exp com uma marca temporal Unix em segundos (não milissegundos) para o momento em que o token deve deixar de ser válido. Por exemplo, um token válido durante uma hora a partir de agora usaria o tempo Unix atual mais 3600. Os verificadores que respeitam o exp vão rejeitar o token após esse momento.
O HS256 é suficientemente seguro para produção?
O HS256 é seguro quando o segredo é longo, aleatório e mantido confidencial, razão pela qual se recomenda usar um segredo de pelo menos 256 bits (32 bytes). A sua limitação é que o mesmo segredo assina e verifica, por isso qualquer parte que consiga verificar também consegue forjar tokens. Quando o emissor e o verificador são partes diferentes, um algoritmo assimétrico como o RS256 costuma encaixar melhor.
Porque é que recebi um erro de JSON inválido?
A caixa da carga útil tem de conter JSON válido. Os erros comuns são vírgulas finais, aspas simples em vez de duplas à volta das chaves e dos valores de cadeia, ou chaves sem aspas. Corrige o JSON para que seja analisado sem problemas e o gerador vai assiná-lo. A mensagem de erro indica onde a análise falhou.
Posso descodificar o token que acabei de gerar?
Sim. A saída é um JWT padrão, por isso podes colá-lo em qualquer descodificador de JWT, incluindo a ferramenta descodificadora complementar, para inspecionar o cabeçalho e a carga útil. Para verificar a assinatura vais precisar do mesmo segredo que usaste para o assinar aqui.
O gerador funciona offline?
Sim. Depende apenas da API Web Crypto que vem integrada nos navegadores modernos, sem bibliotecas externas. Depois de a página carregar não há pedidos de rede, por isso podes gerar tokens sem qualquer ligação à internet.

Sobre Gerador de JWT (HS256)

HS256 é o algoritmo de JWT mais utilizado. É simétrico, o que significa que o mesmo segredo é usado tanto para criar como para verificar a assinatura, o que mantém as coisas simples quando um único serviço emite e verifica os seus próprios tokens. Para usar a ferramenta, cola uma carga útil JSON com as tuas reivindicações (as comuns incluem sub para o sujeito, iat para o momento de emissão e exp para a expiração), introduz o teu segredo de assinatura e clica em Gerar. A ferramenta valida que a tua carga útil é JSON bem formado, comunica um erro claro se não for, e produz um token na conhecida forma cabeçalho.carga útil.assinatura pronto a copiar.

A assinatura acontece inteiramente no teu navegador através da API Web Crypto nativa, sem biblioteca externa e sem pedido de rede. A tua carga útil e, sobretudo, o teu segredo nunca saem do teu dispositivo, nunca são registados e nunca são transmitidos. Como o segredo é a única coisa que deve permanecer confidencial para que o HS256 seja seguro, fazer o trabalho localmente é exatamente a abordagem certa. A ferramenta também funciona totalmente offline depois de a página carregar.

O formato de token escondido à vista de todos

Os JWT foram padronizados no RFC 7519 em 2015, parte de uma família de especificações JOSE (JavaScript Object Signing and Encryption). O formato é deliberadamente seguro para URL: cada um dos três segmentos é codificado em Base64url, que troca os caracteres mais e barra por traço e sublinhado para que um token possa viajar num URL, num cabeçalho HTTP ou num cookie sem mais escapes.

Um detalhe que surpreende muitos programadores é que a carga útil de um JWT assinado não está cifrada, apenas codificada. Qualquer pessoa que intercete o token pode descodificar em Base64url o segmento do meio e ler todas as reivindicações lá dentro. A assinatura garante a integridade e a autenticidade (que o token foi emitido por alguém que possui o segredo e não foi alterado), mas não faz nada para esconder o conteúdo. É por isso que nunca deves colocar palavras-passe ou outros segredos na carga útil de um JWT.

A vulnerabilidade de JWT mais célebre envolvia o campo do algoritmo no cabeçalho. Algumas bibliotecas iniciais confiavam no valor alg cegamente, permitindo a um atacante defini-lo como 'none' e remover a assinatura por completo, ou trocar um token de um algoritmo assimétrico para um simétrico e forjá-lo usando a chave pública como segredo HMAC. As bibliotecas modernas defendem-se disto exigindo que o algoritmo esperado seja especificado à partida, uma lição que moldou a forma como os JWT são validados hoje.

Publicidade
Publicidade
Publicidade