23-Explicación Completa de JSON Web Token (JWT) | Definición, Uso, Cómo Funciona
https://www.youtube.com/watch?v=bVgmy5osPsY&t=188s
Tutorial: Explicación Completa de JSON Web Token (JWT) | Definición, Uso, Cómo Funciona
¡Hola! Te doy la bienvenida a este tutorial donde aprenderás todo sobre JSON Web Token (JWT). Te explicaré desde la lógica detrás del nombre hasta su definición, estructura, funcionamiento, beneficios y implementación práctica.
📋 Contenido
🔍 Lógica detrás del nombre
JSON Web Token se compone de tres palabras clave:
JSON (JavaScript Object Notation): Formato ligero para intercambio de datos. Fácil de leer y escribir para humanos y de interpretar para máquinas.
Ejemplo:
{ "employees": [ { "name": "Scott Phillip", "salary": 50000, "age": 35 } ] }Web: Se refiere a la red global de información (Internet), donde múltiples dispositivos y servidores están interconectados formando una "telaraña".
Token: Objeto digital firmado con claves secretas (públicas o privadas) que garantiza integridad y autenticidad. Similar a los tokens de seguridad bancarios.
📖 Definición simple
JWT es una forma segura y eficiente de transmitir información de autenticación y autorización entre sistemas y aplicaciones web, utilizando tokens en formato JSON.
JSON: Porque usa formato JSON.
Web: Porque se transmite mediante Internet.
Token: Porque es una clave digital para autenticación y autorización.
🧱 Estructura de un JWT
Un JWT típico se ve así:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5cSe compone de tres partes separadas por puntos:
Header: Especifica el algoritmo y tipo de token.
{ "alg": "HS256", "typ": "JWT" }Payload: Contiene los datos (claims) del usuario.
{ "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }Signature: Firma digital que garantiza la integridad del token.
HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
⚙️ ¿Cómo funciona JWT?
Flujo de autenticación:
Login: Usuario ingresa credenciales (usuario y contraseña).
Verificación: Servidor valida las credenciales.
Generación: Si son correctas, genera un JWT con datos del usuario.
Envío: JWT se envía al cliente y se almacena (ej. en cookies).
Uso: Cliente incluye JWT en cabeceras de solicitudes futuras.
Verificación: Servidor valida firma y datos del JWT en cada solicitud.
Acceso: Si es válido, permite acceso a recursos; si no, pide reautenticación.
🚂 Ejemplo de proyecto real
Imagina una plataforma de venta de tickets de tren donde solo usuarios registrados pueden:
Comprar tickets.
Ver tickets comprados.
Modificar o cancel tickets.
Solución: Implementar JWT para autenticar y autorizar usuarios.
Empresas que usan JWT: Netflix, Google (Drive, Calendar), Microsoft (Azure Active Directory), etc.
💻 Implementación en C# y .NET
Ejemplo de implementación en una app web con .NET:
Configuración: Instalar paquete NuGet
System.IdentityModel.Tokens.Jwt.Generar token:
var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes(_appSettings.Secret); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new[] { new Claim("id", user.Id.ToString()) }), Expires = DateTime.UtcNow.AddDays(7), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) }; var token = tokenHandler.CreateToken(tokenDescriptor); return tokenHandler.WriteToken(token);Validar token en cada solicitud mediante middleware.
Prueba:
Sin token: Error
401 Unauthorized.Con token válido: Acceso permitido.
✅ Beneficios de usar JWT
Seguridad: Resistente a falsificación gracias a firma digital.
Portabilidad: Autónomo y usable en múltiples sistemas sin replicar datos.
Eficiencia: Ligero y compacto, ideal para apps web/móviles.
Escalabilidad: Maneja grandes volúmenes de usuarios y solicitudes.
Flexibilidad: Personalizable con datos adicionales (ej. edad, permisos).
📦 Resumen
JSON: Formato de datos.
Web: Medio de transmisión (Internet).
Token: Clave digital para autenticación/autorización.
JWT es una forma segura, portátil, eficiente, escalable y flexible de transmitir información de autenticación y autorización en aplicaciones web y móviles.
¡Espero que este tutorial te haya sido útil! 🚀
Comentarios
Publicar un comentario