Verificador de firma JWT (RS256/ES256, verificación con clave pública)

Una herramienta para desarrolladores que verifica JWTs (JSON Web Tokens) firmados con RS256 o ES256 usando una clave pública en formato PEM (SPKI), directamente en tu navegador. También decodifica el header/payload y comprueba la fecha de expiración. Nada de lo que introduces se envía a un servidor; todo se procesa en el navegador.

Algoritmos de firma admitidos

Algoritmo Tipo de clave Función hash Descripción
RS256 RSA (RSASSA-PKCS1-v1_5) SHA-256 Firma con criptografía de clave pública RSA. El algoritmo predeterminado para los tokens de identidad emitidos por proveedores importantes de OAuth 2.0/OpenID Connect como Google, Auth0 y Okta.
ES256 ECDSA (curva P-256) SHA-256 Firma con criptografía de curva elíptica, que ofrece una seguridad equivalente a RSA con claves y firmas más cortas; cada vez más popular en apps móviles y dispositivos IoT.

Consejos

  • La clave pública debe estar en formato PEM (SPKI, comenzando con "-----BEGIN PUBLIC KEY-----"). Pegar directamente un archivo de clave privada o un certificado (.crt) no funcionará.
  • El algoritmo de verificación se elige automáticamente según el campo alg del header del JWT (RS256 o ES256); no hace falta seleccionarlo manualmente.
  • Junto con la verificación de la firma, también se comprueba la reclamación exp del payload y se avisa si el token ha expirado. Que la firma sea válida no significa que el token deba seguir aceptándose.
  • Esta herramienta solo admite RS256 y ES256. Para comprobar un JWT firmado con HS256, usa la herramienta complementaria Codificador de JWT para volver a firmarlo con el mismo secreto compartido y comparar el resultado.
  • La clave pública que usas para verificar no es secreta, así que puedes pegar sin problema una obtenida del endpoint público de un proveedor de identidad (como un JWKS).

Preguntas frecuentes

No, solo se admiten RS256 y ES256. HS256, HS384 y HS512 dependen de un secreto compartido en lugar de una clave pública, por lo que no pueden verificarse con una herramienta que solo acepta una clave pública. Para comprobar una firma HS256, usa la herramienta complementaria Codificador de JWT para volver a firmar con el mismo secreto y comparar el resultado.

Los proveedores de identidad (Google, Auth0, Okta, etc.) publican sus claves públicas a través de un endpoint público llamado JWKS (JSON Web Key Set). Usa una herramienta de conversión de JWKS a PEM, o consulta la clave pública documentada por el servicio específico con el que estés integrando.

Las causas más comunes son: (1) la clave pública introducida no corresponde a la clave privada que firmó el JWT, (2) el header, el payload o la firma fueron alterados o dañados en tránsito, o (3) se perdieron caracteres al copiar. Intenta copiar de nuevo tanto la cadena JWT como la clave pública directamente desde la fuente original.

Actualmente solo se admiten RS256 y ES256. Las variantes que usan funciones hash más largas, como RS384/RS512 y ES384/ES512, son candidatas para futuras versiones.

Sí: la validez de la firma y la expiración de exp se comprueban y muestran de forma independiente. Un token con firma válida pero con exp expirado normalmente debería seguir siendo rechazado en sistemas reales, así que asegúrate de revisar también el aviso de expiración que aparece en pantalla.
ツールくん

A propósito — HMAC frente a firmas de clave pública: ¿cuál es la diferencia?

Los esquemas de firma de JWT se dividen en dos grandes familias: de secreto compartido (HMAC, p. ej. HS256) y de clave pública (RSA/ECDSA, p. ej. RS256 y ES256). Con un secreto compartido, tanto el firmante como el verificador deben poseer la misma cadena secreta; con la criptografía de clave pública, solo el firmante posee una clave privada, mientras que cualquiera puede verificar usando la clave disponible públicamente. Esta distinción determina cómo se diseñan las APIs. La herramienta complementaria Codificador de JWT (HS256) encaja cuando el mismo servidor emite y verifica los tokens, mientras que RS256/ES256 —el foco de esta herramienta— encajan cuando el emisor y el verificador pertenecen a organizaciones o servidores completamente distintos.

En la práctica, los tokens de identidad emitidos por proveedores de identidad importantes como Google OAuth 2.0, OpenID Connect, Auth0 y Okta casi siempre se firman con RS256 (con ES256 a menudo disponible como alternativa). Esto permite que el proveedor de identidad sea el único que posee la clave privada, mientras que cualquier número de aplicaciones cliente verifica los tokens usando solo la clave pública, eliminando la necesidad de distribuir un secreto a cada cliente y confinando el riesgo de fuga de la clave a un único punto: el firmante.

RS256 y ES256 usan SHA-256 para el hash, pero difieren en la criptografía subyacente. RS256 usa RSA (típicamente claves de 2048 bits o más), lo que tiende a producir firmas más grandes pero se beneficia de bibliotecas maduras y ampliamente soportadas. ES256 usa criptografía de curva elíptica (P-256), logrando una seguridad comparable con claves y firmas mucho más cortas; una opción cada vez más popular para entornos móviles y APIs donde el tamaño del payload importa.

→ Ver todas las curiosidades