¿Cómo sabe el servidor tras el inicio de sesión que 'tú eres tú'? Las aplicaciones web modernas utilizan ampliamente JWT para transmitir información de identidad. Comprender la estructura y los principios del JWT es muy importante para desarrollar y depurar sistemas de autenticación. Este tutorial te guiará para entender el JWT de una manera sencilla.
¿Qué es JWT?
JWT significa JSON Web Token, es un formato de token compacto utilizado para transmitir información de forma segura entre las partes. Su uso más común es la autenticación: tras el inicio de sesión del usuario, el servidor emite un JWT, y el cliente lo lleva consigo en cada solicitud posterior para demostrar su identidad.
Estructura de tres partes
Un JWT consta de tres partes, conectadas por puntos: Header (cabecera), Payload (carga útil) y Signature (firma), con el formato xxxxx.yyyyy.zzzzz.
El Header describe el tipo de token y el algoritmo de firma; el Payload almacena las declaraciones (claims), como el ID del usuario, la hora de emisión (iat) y la hora de expiración (exp); y la Signature utiliza una clave para firmar las dos primeras partes, evitando así la manipulación.
El Payload no está cifrado
Un error común: tanto el Header como el Payload solo están codificados en Base64Url, no cifrados. Cualquiera que obtenga el JWT puede decodificarlo y ver el contenido del Payload.
Por lo tanto, nunca debes almacenar contraseñas, números de tarjetas bancarias u otra información sensible en el Payload. La firma solo garantiza que el contenido no ha sido alterado, no que sea confidencial.
Cómo la firma previene la manipulación
La firma se calcula utilizando una clave conocida solo por el servidor sobre el Header y el Payload. Si alguien altera el Payload (por ejemplo, cambiando el ID de usuario por el de otra persona), la firma recalculada no coincidirá, y el servidor determinará que el token es inválido.
Precisamente porque la verificación de la firma requiere una clave, las herramientas del lado del cliente solo pueden 'decodificar para ver' pero no 'verificar la firma'. Este es un diseño normal y seguro.
Método práctico para depurar JWT
Durante la depuración, a menudo es necesario ver qué contiene un JWT. Con la herramienta de análisis JWT de qktools, puedes pegar el token para decodificar localmente el Header y el Payload, convirtiendo automáticamente el tiempo de expiración a una hora legible e indicando si ha expirado, sin subir el token.
Si deseas comprender mejor la codificación Base64Url utilizada, puedes leer nuestro artículo sobre Base64 o probar la herramienta de codificación y decodificación de Base64.

