Verificador de assinatura JWT (RS256/ES256, verificação com chave pública)

Uma ferramenta para desenvolvedores que verifica JWTs (JSON Web Tokens) assinados com RS256 ou ES256 usando uma chave pública em formato PEM (SPKI), diretamente no seu navegador. Também decodifica o header/payload e verifica a data de expiração. Nada do que você digita é enviado a um servidor; tudo é processado no navegador.

Algoritmos de assinatura suportados

Algoritmo Tipo de chave Função hash Descrição
RS256 RSA (RSASSA-PKCS1-v1_5) SHA-256 Assinatura com criptografia de chave pública RSA. O algoritmo padrão para tokens de identidade emitidos por grandes provedores de OAuth 2.0/OpenID Connect, como Google, Auth0 e Okta.
ES256 ECDSA (curva P-256) SHA-256 Assinatura com criptografia de curva elíptica, que oferece segurança equivalente à RSA com chaves e assinaturas mais curtas — cada vez mais usada em apps móveis e dispositivos IoT.

Dicas

  • A chave pública precisa estar em formato PEM (SPKI, começando com "-----BEGIN PUBLIC KEY-----"). Colar diretamente um arquivo de chave privada ou um certificado (.crt) não funcionará.
  • O algoritmo de verificação é escolhido automaticamente com base no campo alg do header do JWT (RS256 ou ES256) — não é preciso selecionar manualmente.
  • Junto com a verificação da assinatura, a claim exp do payload também é verificada, avisando se o token expirou. Uma assinatura válida não significa que o token ainda deva ser aceito.
  • Esta ferramenta só é compatível com RS256 e ES256. Para conferir um JWT assinado com HS256, use a ferramenta complementar Codificador de JWT para assinar novamente com o mesmo segredo compartilhado e comparar o resultado.
  • A chave pública usada na verificação não é secreta, então é seguro colar uma obtida do endpoint público de um provedor de identidade (como um JWKS).

Perguntas frequentes

Não, apenas RS256 e ES256 são suportados. HS256, HS384 e HS512 dependem de um segredo compartilhado em vez de uma chave pública, portanto não podem ser verificados por uma ferramenta que só aceita chave pública. Para conferir uma assinatura HS256, use a ferramenta complementar Codificador de JWT para assinar novamente com o mesmo segredo e comparar o resultado.

Provedores de identidade (Google, Auth0, Okta, etc.) publicam suas chaves públicas por meio de um endpoint público chamado JWKS (JSON Web Key Set). Use uma ferramenta de conversão de JWKS para PEM, ou consulte a chave pública documentada pelo serviço específico com o qual você está integrando.

As causas mais comuns são: (1) a chave pública informada não corresponde à chave privada que assinou o JWT, (2) o header, o payload ou a assinatura foram alterados ou corrompidos durante o transporte, ou (3) caracteres foram perdidos ao copiar. Tente copiar novamente tanto a string do JWT quanto a chave pública diretamente da fonte original.

Atualmente só são suportados RS256 e ES256. Variantes que usam funções hash mais longas, como RS384/RS512 e ES384/ES512, são candidatas para suporte futuro.

Sim — a validade da assinatura e a expiração de exp são verificadas e exibidas de forma independente. Um token com assinatura válida mas exp expirado normalmente ainda deve ser rejeitado em sistemas reais, então verifique também o aviso de expiração exibido na tela.
ツールくん

Curiosidade — HMAC versus assinaturas de chave pública: qual é a diferença?

Os esquemas de assinatura de JWT se dividem em duas grandes famílias: segredo compartilhado (HMAC, ex.: HS256) e chave pública (RSA/ECDSA, ex.: RS256 e ES256). Com um segredo compartilhado, tanto quem assina quanto quem verifica precisam ter a mesma string secreta; com criptografia de chave pública, apenas quem assina possui uma chave privada, enquanto qualquer pessoa pode verificar usando a chave disponível publicamente. Essa distinção molda como as APIs são projetadas. A ferramenta complementar Codificador de JWT (HS256) serve para casos em que o mesmo servidor emite e verifica os tokens, enquanto RS256/ES256 — o foco desta ferramenta — servem para casos em que o emissor e o verificador pertencem a organizações ou servidores completamente diferentes.

Na prática, os tokens de identidade emitidos por grandes provedores de identidade, como Google OAuth 2.0, OpenID Connect, Auth0 e Okta, quase sempre são assinados com RS256 (com ES256 frequentemente disponível como alternativa). Isso permite que o provedor de identidade seja o único a possuir a chave privada, enquanto qualquer número de aplicações cliente verifica os tokens usando apenas a chave pública — eliminando a necessidade de distribuir um segredo para cada cliente e concentrando o risco de vazamento da chave em um único ponto: quem assina.

RS256 e ES256 usam SHA-256 para o hash, mas diferem na criptografia subjacente. RS256 usa RSA (normalmente chaves de 2048 bits ou mais), o que tende a gerar assinaturas maiores, mas se beneficia de bibliotecas maduras e amplamente suportadas. ES256 usa criptografia de curva elíptica (P-256), alcançando segurança comparável com chaves e assinaturas muito mais curtas — uma escolha cada vez mais popular para ambientes móveis e APIs em que o tamanho do payload importa.

→ Ver todas as curiosidades