JSON Web Tokens explicados
Los JWT están en todos los inicios de sesión y API modernos. Esta guía explica cómo se construyen, cómo leerlos y cómo usarlos con seguridad.
Abrir la herramienta: Decodificador JWT
Las tres partes
Un JWT tiene la forma xxxxx.yyyyy.zzzzz. La primera parte es el encabezado, un objeto JSON con el algoritmo (alg) y el tipo (typ). La segunda es el payload con los claims. La tercera es la firma, calculada sobre las dos primeras con un secreto o una clave privada. Cada parte está en base64url para que sea segura en URL y cabeceras HTTP.
Claims registrados
- iss (emisor): quién creó y firmó el token.
- sub (sujeto): el usuario o servicio al que se refiere.
- aud (audiencia): qué aplicación debe aceptarlo.
- exp (caducidad): cuándo deja de ser válido.
- nbf (no antes de): cuándo empieza a ser válido.
- iat (emitido el): cuándo se creó.
- jti (ID del JWT): un ID único que sirve para bloquear reutilizaciones.
Tokens de acceso y tokens de ID
En OpenID Connect, un token de ID indica a la aplicación cliente quién inició sesión e incluye claims de perfil como el nombre y el correo. Un token de acceso se envía a una API para demostrar qué puede hacer quien llama, a menudo con un claim scope. Los tokens de acceso deben durar poco, normalmente de minutos a una hora, y renovarse con un token de actualización.
Errores que hay que evitar
- Decodificar un token sin verificarlo y confiar en sus claims.
- Aceptar el algoritmo que indica el token en lugar del que espera tu servidor.
- Usar un secreto HMAC corto o fácil de adivinar. Usa al menos 32 bytes aleatorios.
- Guardar datos sensibles en el payload.
- Emitir tokens que nunca caducan o tokens de acceso de muy larga duración.