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.

Verificar a assinatura de um JWT com uma chave pública

Esta ferramenta verifica um JWT assinado com RS256 ou ES256 diante de uma chave pública em PEM no formato SPKI. Mostra o cabeçalho e a carga útil decodificados ao lado da expiração. Tudo o que você inserir é processado dentro do navegador e nunca é enviado a lugar algum.

**Vale sublinhar que uma assinatura válida e um token válido são duas coisas distintas.** Que uma assinatura se verifique prova unicamente que o conteúdo não foi reescrito desde a emissão. A autenticação real exige além disso conferir que `exp` para a expiração, `nbf` para o momento a partir do qual vale, `iss` para o emissor e `aud` para o destinatário previsto concordam com o que você espera. **O outro tropeço bem conhecido na implementação consiste em deixar que o próprio cabeçalho do token decida com que algoritmo verificar.** Se o servidor não fixar de antemão o `alg` aceitável, deixa essa escolha ao alcance de um atacante.

Como verificar

  1. Cole o JWT É uma cadeia de três partes separadas por pontos.
  2. Cole a chave pública em formato PEM **É a chave pública que se precisa, não a privada.** RS256 toma uma chave RSA e ES256 uma chave sobre a curva P-256.
  3. Verifique a assinatura A ferramenta informa se a chave e a assinatura concordam.
  4. Confira o conteúdo decodificado e a expiração **Um token cuja assinatura se verifica igualmente não deve ser usado depois de expirado.** Olhe as duas coisas.

Dicas para aproveitar melhor

  • 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).

Quando é útil

Ao inspecionar o conteúdo de um token de identidade

Um token emitido por um provedor de identidade pode ser confrontado com sua chave pública.

Ao distinguir uma chave errada de uma assinatura quebrada

**Quando a verificação falha, você pode estabelecer localmente qual das duas tem culpa.**

Ao testar uma rotação de chaves

Ensaiar por vez a chave velha e a nova confirma que a troca se dará conforme o previsto.

Ao rastrear a causa de uma falha

Diante de um aviso de que a autenticação falha, você pode estabelecer primeiro se o próprio token é o responsável.

Termos da verificação de JWT

RS256
Um esquema de assinatura que usa uma chave RSA com SHA-256. **Assinar exige a chave privada; verificar, a pública.**
ES256
Um esquema de assinatura que usa a curva P-256 com SHA-256. Tanto a chave quanto a assinatura saem mais curtas do que com RSA.
SPKI
A forma padrão em que se transporta uma chave pública. Em PEM abre com `-----BEGIN PUBLIC KEY-----`.
Exp
A reivindicação que dá a expiração. **Por impecável que seja a assinatura, um token passado esse instante não deve ser aceito.**
Nbf
A reivindicação que indica a partir de que momento o token é utilizável. Antes dele ainda não está em vigor.
Confusão de algoritmos
**Uma fraqueza das implementações que verificam com o algoritmo que o cabeçalho do token apontar.** O esquema aceito deve ser fixado no lado que verifica.

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.
Tool-kun

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.