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
algdel 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
expdel 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
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.