¿Qué significa "firmar un JWT" y por qué importa?
Un JWT tiene tres partes: header, payload, signature. Las dos primeras son base64 plano (cualquiera las lee); la tercera es una firma criptográfica que prueba que nadie manipuló los datos por el camino.
Aquí firmas un JWT o verificas la firma de uno existente. Soportamos todos los algoritmos estándar: HS256/384/512 (simétrico, basado en secreto), RS256/384/512 (RSA), ES256/384/512 (ECDSA), PS256/384/512 (RSA-PSS).
Todo se ejecuta en local. Tu secreto o clave privada no sale del navegador. Es una herramienta distinta del Decodificador de JWT (que solo decodifica, sin firmar).
Cómo usar
- Modo Firmar: JSON del header a la izquierda, JSON del payload a la derecha. Elige un algoritmo en la primera fila de pastillas.
- HMAC (HS256/384/512): pasa un secreto compartido (string); el mismo secreto se usa luego para verificar. Setup más simple, la mayoría de APIs usa HS256.
- Asimétrico (RS/ES/PS): pega una clave privada PEM (PKCS#8). Le das la clave pública a los consumidores del token. Más seguro porque quien emite el token no conoce los secretos del consumidor.
- Helper exp: añade un claim "expira en 1h/1d/30d" al payload. Un JWT sin exp es peligroso (no expira nunca).
- Modo Verificar: pega un JWT y la clave/secreto. Check verde = todo bien. X roja = firma inválida, token expirado u otro problema.
Cuándo usarlo
Cinco situaciones comunes en las que firmas o verificas un JWT:
- Crear una sesión de usuario en tu API. Tras el login, genera un JWT con user_id, role, exp y fírmalo con HS256 + secreto.
- Clave de API para integración con partner. Emite un JWT de larga duración (exp = +1 año), el partner lo añade a cada petición.
- Reset de contraseña. Envía un correo con un enlace que contiene un JWT (exp = +1h, payload = user_id); el usuario pulsa y tú verificas.
- Firmas de webhook. Tu API firma el payload del webhook; el partner verifica con una clave pública antes de fiarse.
- Single Sign-On (SSO). Un proveedor de identidad (Auth0, Okta) emite un JWT y cada app de la organización lo verifica con la clave pública.
Para solo decodificar un JWT (sin firmar), usa el Decodificador de JWT. Para generar un par de claves para firmar, usa el Generador de pares de claves JWT.