Generador y verificador de JWT
Crea y verifica JSON Web Tokens con HS256, RS256, PS256, ES256 o EdDSA. Edita los claims, fija exp e iat y comprueba firmas en tu navegador.
Las claves y los tokens son secretos. Todo se firma y verifica localmente con la API Web Crypto de tu navegador: no se sube nada.
Crear un JWT firmado
Este navegador no admite Ed25519 en Web Crypto, así que EdDSA no está disponible.
Las claves de prueba se generan en tu navegador y se rellenan abajo. Guarda para ti la clave privada o el secreto; comparte solo la clave pública.
Verificar un JWT
Cómo crear un JWT firmado
- Elige el Algoritmo: HS256/384/512 (secreto compartido), RS256/384/512 o PS256/384/512 (RSA), ES256/384/512 (ECDSA sobre P-256, P-384 o P-521) o EdDSA (Ed25519, si tu navegador lo admite).
- Edita la Cabecera (JSON) y la Carga útil (claims JSON). El campo
algsiempre sigue al algoritmo seleccionado ytypvaleJWTpor defecto. - Usa los botones de claims de tiempo para añadir fechas: iat = ahora, nbf = ahora, o elige un plazo como «dentro de 1 hora» y pulsa Fijar exp. Los valores son NumericDate: segundos desde el 1 de enero de 1970 UTC.
- Introduce el Secreto (algoritmos HS, como texto o Base64/Base64url según el Formato del secreto) o la Clave privada (PEM o JWK). ¿Aún no tienes clave? Pulsa Generar clave de prueba.
- Pulsa Firmar token y después Copiar el resultado, o pulsa Verificar este token para comprobarlo al momento.
Cómo verificar un JWT
- Pega el token en Token que verificar.
- Elige el Algoritmo esperado. Si lo dejas en «El de la cabecera del token», se acepta lo que diga la cabecera, salvo
none; si eliges un algoritmo concreto, la herramienta rechaza cualquier token firmado de otra forma, como debería hacer un servidor real. - Introduce el secreto o la Clave pública (PEM o JWK): un bloque PEM
PUBLIC KEY,RSA PUBLIC KEYoCERTIFICATE, un JWK o un JWK Set (se usa la clave cuyokidcoincide con la cabecera). - Si quieres, define un Margen de reloj (segundos) para tolerar pequeñas diferencias de hora y pulsa Verificar token.
El resultado indica si la firma es válida y después comprueba exp (expiración) y nbf (no antes de) con la hora actual de tu ordenador. Un token con la firma correcta pero con la expiración en el pasado se muestra como expirado, no como válido.
Claves y formatos
Para firmar, la herramienta acepta bloques PKCS#8 PRIVATE KEY, PKCS#1 RSA PRIVATE KEY y SEC1 EC PRIVATE KEY (convertidos internamente a PKCS#8), además de JWK privados. Las claves protegidas con contraseña deben exportarse antes sin contraseña. Generar clave de prueba crea un secreto aleatorio del tamaño del hash para los algoritmos HS, un par RSA de 2048 bits para RS y PS, la curva correspondiente para ES o un par Ed25519. Recibes las claves en PEM y JWK, y se rellenan en ambos lados para que el ciclo completo funcione de inmediato.
Las firmas siguen las RFC 7515 y RFC 7518: RSA-PSS usa una sal tan larga como el hash y las firmas ECDSA son la concatenación bruta r||s. La implementación reproduce el ejemplo HS256 del apéndice A.1 de la RFC 7515.
Notas de seguridad
- Todo se ejecuta en tu navegador con la API Web Crypto. Ni los tokens ni las claves se envían a ningún sitio, pero aun así es preferible usar claves de prueba en lugar de secretos de producción.
alg: nonenunca se firma ni se acepta.- Los secretos HMAC deberían ser al menos tan largos como el hash (32 bytes para HS256). Un secreto más corto genera un aviso.
- Una firma demuestra la integridad y el origen, no que los claims sean adecuados: los servidores también deben comprobar
iss,audy los permisos (scopes).
Preguntas frecuentes
¿Qué diferencia hay entre HS256 y RS256?
HS256 usa un único secreto compartido tanto para firmar como para verificar, así que cualquier verificador podría también falsificar tokens. RS256 (y PS256, ES256, EdDSA) firma con una clave privada y verifica con una clave pública que se puede publicar sin riesgo.
¿Por qué una firma válida sigue mostrando un error?
Porque el token está fuera de su periodo de validez: exp está en el pasado o nbf en el futuro. La comprobación de la firma y la del tiempo se muestran por separado.
¿Por qué se rechaza alg «none»?
Cualquiera puede crear un token sin firmar. Aceptarlos fue una vulnerabilidad clásica de las bibliotecas JWT, así que esta herramienta los rechaza tanto al firmar como al verificar.
¿Puedo usar mi propia clave RSA o EC?
Sí. Pega la clave privada en PEM o JWK para firmar y la clave pública para verificar. La herramienta comprueba que el tipo de clave y la curva coincidan con el algoritmo seleccionado.
¿Por qué EdDSA está desactivado?
Tu navegador todavía no admite Ed25519 en Web Crypto. Las versiones recientes de Chrome, Edge, Firefox y Safari sí lo hacen.
Herramientas relacionadas
- Decodificador JWT Decodifica la cabecera y la carga útil de un JWT, lee exp, iat y nbf como fechas y verifica firmas HS256, RS256, ES256 o EdDSA en tu navegador.
- Generador HMAC Calcula un HMAC-SHA1, SHA-256, SHA-384 o SHA-512 con una clave en texto, hex o Base64, obtén la salida en hex y Base64 y verifica firmas de webhook.
- Conversor de timestamp Unix Convierte timestamps Unix en segundos o milisegundos a fechas legibles en hora local, UTC e ISO 8601, y pasa cualquier fecha a tiempo epoch.
- Formateador y validador JSON Formateador y validador JSON gratuito que embellece, minifica y comprueba JSON en tu navegador, con los errores de sintaxis indicados por línea y columna.