TK TaskKit
Herramientas para desarrolladores

Codificador JWT

Firma JSON Web Tokens localmente con algoritmos HS, RS, PS o ES. Header, payload y clave de firma nunca salen de tu navegador.

Algoritmo
Header
Claims personalizados
Payload
Claims personalizados
Header (crudo)
Payload (crudo)
Clave de firmaHS256
Token firmado

Elige un algoritmo, edita el header y el payload, pega tu clave de firma y tu token firmado aparecerá aquí.

Las entradas se quedan en este dispositivo. Cada herramienta para desarrolladores en TaskKit corre por completo en tu navegador. Tokens, payloads y texto pegado no se transmiten ni a TaskKit ni a terceros.

Qué hace esta herramienta

Este codificador de JWT firma un JSON Web Token en tu navegador. Eliges el algoritmo, editas el header y el payload como JSON, pegas la clave de firma y obtienes un token compacto JWS (header.payload.firma) listo para enviar a una API.

Los algoritmos cubiertos son los mismos que el decodificador: HS256/384/512 (HMAC con secreto compartido), RS256/384/512 (RSA-PKCS#1 v1.5), PS256/384/512 (RSA-PSS), ES256/384/512 (ECDSA sobre P-256/P-384/P-521) y EdDSA (Ed25519). Las claves privadas se aceptan como JWK con d, PKCS#8 PEM (BEGIN PRIVATE KEY), PEM PKCS#1 RSA (BEGIN RSA PRIVATE KEY) o — para Ed25519 — 64 hex / 43 base64url.

Cuándo la usarías

  • Generar un token de prueba para llamar a tu propia API en local.
  • Reproducir un escenario de cliente sin levantar todo tu emisor de auth.
  • Crear tokens de ejemplo para tests de integración o documentación.
  • Validar que tu verificador rechaza correctamente un token con exp en el pasado o un alg inesperado.

Cómo funciona

La firma se produce íntegramente con crypto.subtle.sign (HS, RS, PS, ES) o @noble/ed25519 (EdDSA). El header se serializa como JSON canónico con alg y typ, el payload como JSON normal, ambos se codifican en base64url y se concatenan con un punto. Ese mensaje canónico se firma; la firma se anexa también en base64url.

Los campos del payload con valores temporales (iat, nbf, exp) se introducen como segundos Unix, con accesos rápidos para "ahora", "+1h", "+24h" y "+7d". Cualquier claim personalizado se añade como pares clave/valor; si pegas JSON crudo en el campo Payload, ese contenido manda y los campos estructurados se ignoran.

Nada de esto va a un servidor. La clave privada que pegues se queda en memoria de la pestaña hasta que cierres o limpies. No hay logging.

Notas

¿Es seguro pegar mi clave privada aquí? Es tan seguro como cualquier otra cosa que ejecutes en tu navegador. La clave nunca sale de la pestaña. Si te incomoda, usa solo claves de desarrollo desechables — buena práctica en general.

¿Por qué alg: none muestra una advertencia? Porque produce un token sin firma, cuyo payload puede modificar cualquiera. Lo permitimos para reproducir bugs concretos, pero la advertencia es deliberada.

¿Y RS256 vs PS256? RS256 usa relleno PKCS#1 v1.5 (heredado, ampliamente compatible). PS256 usa PSS con hashing aleatorio (recomendación moderna NIST). Salvo que tu verificador sea antiguo, PS256 es la mejor opción.

¿Soporta JWE? No. Esta herramienta solo emite JWS. JWE (tokens cifrados) tiene un perfil de uso muy distinto y no encaja con el resto de la suite.

Herramientas relacionadas