Estudio de Tokens
Privacy FirstInspecciona y genera JWT/JWK/JWKS.
Header
Payload
Signature
¿Qué es un JWT?
Un JSON Web Token (JWT) es una forma compacta y segura para URL de representar claims que se transfieren entre dos partes. Un JWT consta de tres partes codificadas en Base64URL separadas por puntos: el Header (algoritmo y tipo), el Payload (claims) y la Signature. La firma garantiza que el token no ha sido manipulado. Los JWT se usan habitualmente para la autenticación y el intercambio de información en API web. Los claims estándar incluyen sub (sujeto), iss (emisor), aud (audiencia), exp (expiración), nbf (no antes de), iat (emitido en) y jti (ID de JWT).
Algoritmos JWT
HS256/384/512 usa HMAC con SHA-2 y un secreto compartido: simple, pero ambas partes deben tener la misma clave. RS256/384/512 usa firmas asimétricas RSA PKCS#1 v1.5: ideal para arquitecturas de microservicios donde los servicios solo necesitan la clave pública. ES256/384/512 usa ECDSA con curvas NIST para firmas más pequeñas que RSA con seguridad equivalente. PS256/384/512 usa RSA-PSS, una variante probabilística preferida sobre RS* en sistemas modernos.
JWK y JWKS
Un JSON Web Key (JWK) es una estructura JSON que representa una clave criptográfica. Un JWK Set (JWKS) es una estructura JSON que contiene un array de JWK bajo la propiedad keys. Los servicios publican su JWKS en una URL bien conocida (por ejemplo, /.well-known/jwks.json), lo que permite a los clientes obtener claves públicas para verificar JWT sin un intercambio de claves fuera de banda. Las claves de un JWKS se identifican mediante su kid (ID de clave), al que hacen referencia los headers de los JWT.
Buenas prácticas de seguridad
Valida siempre los claims exp, nbf, iss y aud en el servidor. Nunca uses el algoritmo alg: none en producción; elimina toda la protección de la firma. Prefiere los algoritmos asimétricos (RS*, ES*, PS*) sobre HMAC cuando varios servicios necesiten verificar tokens. Rota las claves regularmente y usa kid para identificar qué clave se usó para firmar cada token. Almacena las claves privadas de forma segura; nunca las subas al control de versiones. Usa tiempos de expiración cortos y tokens de actualización (refresh tokens) en lugar de JWT de larga duración.