DevToolPal
ES

Codificador y firmador de JWT

Crea y firma un JSON Web Token a partir de un payload JSON con HS256/384/512, o con RS, PS y ES usando una clave privada PEM.

Se ejecuta en local, nunca se sube

Opciones

Formato del secreto

Payload (JSON)

0 caracteres · 0 B

JWT

0 caracteres · 0 B

Qué hace

Un JSON Web Token (JWT, RFC 7519) es una cadena compacta y apta para URL con tres partes separadas por puntos: una cabecera que indica el algoritmo de firma, un payload con las claims y una firma sobre las dos primeras. Las API usan JWT como tokens bearer y los proveedores de identidad como ID tokens.

Esta herramienta crea y firma un token a partir de un payload JSON. Admite:

  • HS256, HS384, HS512: HMAC con un secreto compartido, en texto o Base64.
  • RS256, RS384, RS512 y PS256, PS384, PS512: firmas RSA con una clave privada PEM.
  • ES256, ES384, ES512: firmas ECDSA con una clave privada EC.

Cómo usarla

  1. Escribe el payload como un objeto JSON o pulsa Ejemplo.
  2. Elige el Algoritmo y escribe el secreto o pega la clave privada PEM en la parte superior del cuadro de entrada.
  3. Si quieres, pon iat a la hora actual, añade una caducidad (exp) o campos extra de cabecera como un ID de clave.
  4. Copia el token de la salida. Pégalo en el decodificador de JWT para inspeccionarlo.

Ejemplo

Con el secreto your-256-bit-secret, el siguiente payload firmado con HS256 da el conocido token de ejemplo de jwt.io:

{"sub":"1234567890","name":"John Doe","iat":1516239022}

La cabecera siempre se escribe como {"alg":"HS256","typ":"JWT"} seguida de los campos extra que añadas; alg siempre sigue al algoritmo elegido.

Buenas prácticas

Mantén los tokens de vida corta con una claim exp y define iss y aud para que un token de un servicio no pueda reutilizarse en otro. En el servidor, verifica siempre la firma con una lista explícita de algoritmos permitidos y rechaza none. Los secretos HMAC deben ser largos y aleatorios, al menos tan largos como la salida del hash (32 bytes para HS256).

Preguntas frecuentes

› ¿Qué algoritmo elijo?

El que verifique tu servidor. HS256 usa un secreto compartido y es habitual dentro de un mismo sistema. RS256 y ES256 firman con una clave privada y cualquiera puede verificar con la pública, lo que encaja con tokens que comprueban varios servicios. ES256 produce firmas mucho más cortas que RS256.

› ¿Qué formatos de clave privada se aceptan?

Claves PEM en PKCS#8 (BEGIN PRIVATE KEY), PKCS#1 RSA (BEGIN RSA PRIVATE KEY) y SEC1 EC (BEGIN EC PRIVATE KEY). Las claves cifradas deben exportarse antes sin frase de paso. Para ES256, ES384 y ES512 la clave debe estar en la curva P-256, P-384 o P-521 respectivamente.

› ¿El payload de un JWT es secreto?

No. La cabecera y el payload solo están codificados en Base64URL y cualquiera con el token puede leerlos. La firma impide cambios, no la lectura. Nunca pongas contraseñas ni otros secretos en el payload de un JWT.

› ¿Se guarda o se envía mi secreto o clave privada?

No. La firma se hace en tu navegador con la Web Crypto API. El secreto o la clave solo viven en la memoria de esta página: no se guardan, no se escriben en la barra de direcciones ni se incluyen en los enlaces para compartir. Aun así, evita pegar claves de producción en páginas web que no controles.