Cabecera
Suele incluir typ (tipo, a menudo "JWT") y alg (algoritmo). Puede llevar kid para elegir la clave pública en un JWKS u otros metadatos.
RFC 7519 · JSON Web Signature
JSON Web Token (JWT) es un estándar abierto (RFC 7519) para representar claims como una cadena compacta y segura para URL. Se usa mucho con OAuth 2.0 y OpenID Connect, pero el formato es genérico: quien tenga el material de verificación adecuado puede comprobar la firma y razonar sobre los claims, dentro de los límites de la gestión de claves y relojes.
Esta página explica cómo se construye un JWT, cómo leer cada parte y qué garantías puedes —y no puedes— esperar solo del token.
Forma compacta: tres segmentos Base64URL, separados por puntos.
En la forma habitual (JSON Web Signature, JWS), un JWT tiene tres segmentos separados por puntos: cabecera, payload y firma. Los dos primeros son objetos JSON codificados en Base64URL (no Base64 clásica): a menudo sin padding y con caracteres seguros para URL.
Base64URL no es cifrado. La cabecera y el payload son legibles para quien tenga la cadena. La firma prueba que las dos primeras partes las produjo quien controla la clave; no oculta su contenido.
Cada segmento tiene un papel en la forma compacta JWS:
Suele incluir typ (tipo, a menudo "JWT") y alg (algoritmo). Puede llevar kid para elegir la clave pública en un JWKS u otros metadatos.
Objeto JSON con claims: sujeto, ventana de validez, audiencia y campos propios. Se permiten objetos anidados si el emisor lo define.
Valor criptográfico sobre los bytes de "cabecera.payload" (los dos segmentos codificados y el punto), con el algoritmo de la cabecera y secreto compartido (HMAC) o clave privada asimétrica (RSA, ECDSA, EdDSA).
Los claims son pares nombre/valor. Su significado depende del contexto, pero RFC 7519 define nombres registrados para interoperar.
Ejemplos: iss, sub, aud, exp, nbf, iat, jti. exp y nbf son timestamps Unix; validarlos bien requiere un reloj de confianza en el verificador.
Los nombres pueden registrarse en IANA cuando buscas interoperabilidad amplia. Siguen siendo convenciones hasta que productor y consumidor acuerden.
Nombres acordados entre emisor y consumidor (p. ej. roles internos). Evita colisiones con nombres registrados salvo que controles ambos lados.
El valor alg en la cabecera define cómo se calcula la firma. Elegir mal el modelo afecta quién puede verificar y cómo se comparten secretos.
Una firma válida muestra que el token lo emitió quien controla la clave y que cabecera y payload no se alteraron. Por sí sola no cifra nada.
No pongas contraseñas, API keys ni secretos de larga duración en el payload. Para confidencialidad además de firma, usa TLS y considera JWE —otro formato y flujo.
Los servidores deben validar la firma con la clave o JWKS esperados, comprobar exp (y suele nbf), aplicar aud e iss si la arquitectura lo requiere, y usar vidas cortas y refresh cuando corresponda.
Los JWT suelen usarse para:
Restricciones útiles al diseñar con JWT: