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

  1. Introduzca el JSON de la cabecera Toma la forma `{"alg":"HS256","typ":"JWT"}`. Manténgalo acorde con el algoritmo que elija.
  2. 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.**
  3. Elija el algoritmo de firma Dispone de HS256, HS384 y HS512; el número indica la longitud en bits del resumen.
  4. 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 alg del encabezado JSON. Edita el encabezado directamente si quieres añadir otras reclamaciones como kid.
  • 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

No, no lo recomendamos. Aunque la firma en sí se realiza de forma segura dentro de tu navegador, introducir una clave secreta de producción en una herramienta del navegador no es una buena práctica desde el punto de vista de la seguridad. Esta herramienta está pensada para comprobar el comportamiento de una API durante el desarrollo o con fines de aprendizaje.

HS256 es un algoritmo de clave simétrica en el que el emisor y el receptor comparten la misma clave secreta, mientras que RS256 es un algoritmo de clave pública (asimétrica) en el que una clave privada firma y una clave pública verifica. Esta herramienta solo admite la familia HMAC —HS256, HS384 y HS512— y no admite algoritmos de clave pública como RS256 o ES256.

Sí, puedes editar el encabezado JSON directamente. Sin embargo, si el algoritmo seleccionado (el que realmente se usa para calcular la firma) no coincide con el valor del campo alg, otra implementación que verifique el token podría rechazarlo con un error, así que asegúrate de que ambos coincidan siempre.

Puedes pegar la cadena JWT generada en la herramienta complementaria "Decodificador de JWT" para comprobar al instante el contenido del encabezado y la carga útil. Aun así, la validez real de la firma solo puede confirmarse de forma definitiva mediante la lógica de verificación del lado del servidor que posea la misma clave secreta.
Tool-kun

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.