Codificador de JWT (Generar y Firmar)
Genera un JWT (JSON Web Token) firmado con HMAC (HS256, HS384 o HS512) a partir del JSON del encabezado y la carga útil, directamente en tu navegador. Nada, ni siquiera la clave secreta, se envía a un servidor.
Algoritmos de firma HMAC compatibles
| Algoritmo | Función hash | Longitud de firma | Descripción |
|---|---|---|---|
| HS256 | SHA-256 | 256 bits (32 bytes) | La firma HMAC predeterminada más utilizada. Es el estándar en muchas implementaciones, incluidos los tokens de ID de OAuth 2.0 y OpenID Connect. |
| HS384 | SHA-384 | 384 bits (48 bytes) | Una opción intermedia cuando se desea una firma más larga que HS256 para un margen de seguridad adicional. |
| HS512 | SHA-512 | 512 bits (64 bytes) | Tiene la mayor longitud de firma y suele combinarse con una clave secreta aleatoria suficientemente larga. |
Crear y firmar un JWT
Esta herramienta arma un JWT en el acto a partir del JSON de la cabecera y de la carga útil, firmándolo con HMAC mediante HS256, HS384 o HS512. Todo lo que introduzca, la clave secreta incluida, se maneja únicamente dentro del navegador y jamás se envía a un servidor.
**Lo que más se malinterpreta aquí es que la firma existe para detectar manipulaciones y no es un cifrado.** La cabecera y la carga útil de un JWT están simplemente codificadas en Base64URL, de modo que **cualquiera que tenga el token puede leer su contenido sin más.** Por eso las contraseñas y los datos personales no pintan nada en una carga útil. El otro punto atañe a la naturaleza de la clave: la familia HS funciona **haciendo que quien firma y quien verifica compartan el mismo secreto.** Si la verificación ha de delegarse en otra parte, querrá un esquema de clave pública como RS256 o ES256, que le ahorra tener que entregar el secreto.
Cómo crear uno
- Introduzca el JSON de la cabecera Toma la forma `{"alg":"HS256","typ":"JWT"}`. Manténgalo acorde con el algoritmo que elija.
- Introduzca el JSON de la carga útil Escriba las reclamaciones que necesite, como `sub`, `iat` y `exp`. **Deje fuera todo aquello que deba permanecer secreto.**
- Elija el algoritmo de firma Dispone de HS256, HS384 y HS512; el número indica la longitud en bits del resumen.
- Aporte el secreto y recoja el token El resultado es una cadena de tres partes unidas por puntos.
Consejos para aprovecharla mejor
- El JWT se firma enteramente con la Web Crypto API de tu navegador: el encabezado, la carga útil y la clave secreta nunca se envían al servidor de toolbase.cc.
- Al cambiar el algoritmo de firma (HS256/HS384/HS512) se actualiza automáticamente el campo
algdel encabezado JSON. Edita el encabezado directamente si quieres añadir otras reclamaciones comokid. - Esta herramienta solo admite algoritmos HMAC (clave simétrica). Si necesitas un algoritmo de clave pública como RS256 o ES256, utiliza una librería del lado del servidor, como un paquete JWT de Node.js.
- Tras editar el encabezado o la carga útil, recuerda pulsar de nuevo "Generar JWT"; de lo contrario, el token mostrado seguirá firmado con la entrada anterior.
- Para comprobar el contenido de un JWT recién generado, pégalo en la herramienta complementaria Decodificador de JWT y verifica el encabezado y la carga útil.
Cuándo resulta útil
Al probar el comportamiento de una API
**Poder acuñar un token con las reclamaciones que se le antojen agiliza recorrer las ramas de una regla de autorización.**
Al comprobar cómo se trata la caducidad
Cree un token cuyo `exp` quede en el pasado y confirme que un token caducado se rechaza como corresponde.
Al preparar tokens para pruebas
Puede producir un token de contenido fijo que sirva de material en una prueba automatizada.
Al aprender la estructura de un JWT
Generar una y otra vez variando la entrada permite ver en qué parte del token acaba cada pieza.
Términos de JWT
- Cabecera
- La primera parte, que declara el algoritmo y el tipo. Lleva `alg` y `typ`.
- Carga útil
- La segunda parte, que alberga las reclamaciones. **Solo está codificada en Base64URL y no está cifrada en modo alguno.**
- Firma
- La tercera parte, calculada a partir de la cabecera y la carga útil con una clave. **Sirve para detectar manipulaciones y nada hace por ocultar el contenido.**
- Reclamación
- Cada entrada dentro de la carga útil. Entre las estándar figuran `sub` para el sujeto, `iat` para la hora de emisión y `exp` para la caducidad.
- HMAC
- Un esquema de autenticación de mensajes con clave compartida. **Tanto quien firma como quien verifica han de tener el mismo secreto.**
- Base64URL
- Base64 con los símbolos cambiados para poder viajar en una URL: `+` y `/` pasan a `-` y `_`, y se suprime el relleno final.
Preguntas frecuentes
alg, otra implementación que verifique el token podría rechazarlo con un error, así que asegúrate de que ambos coincidan siempre.
A propósito — Por qué la firma de un JWT puede hacerse enteramente en el navegador
Los algoritmos de firma de JWT se dividen en dos grandes familias: los algoritmos de "clave simétrica" (HMAC, es decir HS256/HS384/HS512), donde el emisor y el receptor comparten la misma clave secreta, y los algoritmos de "clave pública" (como RS256 y ES256), donde una clave privada firma y una clave pública verifica. Como los primeros pueden calcularse enteramente con crypto.subtle.sign() de la Web Crypto API (SubtleCrypto) estandarizada por el W3C, sin necesidad de ninguna librería externa, esta herramienta se limita deliberadamente a los algoritmos HMAC.
La seguridad de una firma HMAC depende por completo de lo difícil que sea adivinar la clave secreta, no del contenido del encabezado o la carga útil. El RFC 7518 (JSON Web Algorithms) recomienda una longitud de clave de al menos 256 bits (32 bytes) para HS256; usar una palabra corta o una cadena de diccionario como clave secreta supone el riesgo de que la firma se falsifique por fuerza bruta. En entornos de producción reales, debe usarse una cadena aleatoria suficientemente larga generada por un generador de números aleatorios.
Esta herramienta es una utilidad para desarrolladores pensada para comprobar el comportamiento de una API durante el desarrollo o probar la lógica de verificación de firmas de webhooks. La clave secreta que introduces se gestiona solo en la memoria de tu navegador y nunca se transmite externamente, pero el riesgo de que un equipo compartido o una extensión del navegador recopile el portapapeles o los datos introducidos no es nulo. Recomendamos encarecidamente no introducir nunca una clave que uses realmente en producción en una herramienta como esta, ni siquiera solo para comprobar que funciona.