JSON Web Tokens (JWT)
Imagina que estás en un evento y debes mostrar tu identificación para ingresar. Este proceso de verificación es similar a cómo funcionan los tokens en la web: son credenciales digitales que autentican tu identidad y autorizan el acceso a recursos protegidos.
Un token es una firma digital única, como una contraseña o una clave. En el mundo de las APIs y aplicaciones modernas, los JSON Web Tokens (JWT) se han convertido en el estándar para manejar la autenticación y el intercambio seguro de información.

¿Qué es un JWT?
Un JWT (JSON Web Token) es un estándar definido por RFC 7519 que permite transmitir datos entre aplicaciones de forma compacta y segura. Está compuesto por un objeto JSON codificado en Base64 y firmado digitalmente, lo que garantiza su integridad.
Características clave:
- Compacto: Fácil de transmitir en URLs o encabezados HTTP.
- Autocontenido: Incluye toda la información necesaria (como identidad del usuario) sin necesidad de consultar una base de datos.
- Firmado: Puede verificarse su autenticidad usando claves públicas/privadas.
Estructura de un JWT
Un JWT se divide en tres partes, separadas por puntos:
-
Header (Encabezado)
Contiene el algoritmo de firma (ej: HS256) y el tipo de token (JWT).JavaScript{ "alg": "HS256", "typ": "JWT" }
-
Payload (Carga útil)
Almacena los datos del usuario (como email o id) y metadatos (fecha de expiración).JavaScript{ "email": "usuario@example.com", "exp": 1683241117 }
-
Signature (Firma)
Combina el header, payload y una clave secreta para validar la autenticidad del token.JavaScripteyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzdWFyaW9AZXhhbXBsZS5jb20ifQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Cómo Crear y Verificar un JWT
Creación (en Node.js con la librería jsonwebtoken):
const jwt = require('jsonwebtoken');
const token = jwt.sign(
{ email: "usuario@example.com" },
"clave-secreta",
{ expiresIn: "1h" }
);
console.log(token);
Verificación:
const decoded = jwt.verify(token, "clave-secreta");
console.log(decoded.email); // Muestra el email del usuario