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

  1. Lógica detrás del nombre

  2. Definición simple

  3. Estructura de un JWT

  4. ¿Cómo funciona JWT?

  5. Ejemplo de proyecto real

  6. Implementación en C# y .NET

  7. Beneficios de usar JWT

  8. Resumen


🔍 Lógica detrás del nombre

JSON Web Token se compone de tres palabras clave:

  1. 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:

    json
    {
      "employees": [
        {
          "name": "Scott Phillip",
          "salary": 50000,
          "age": 35
        }
      ]
    }
  2. Web: Se refiere a la red global de información (Internet), donde múltiples dispositivos y servidores están interconectados formando una "telaraña".

  3. 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í:

text
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Se compone de tres partes separadas por puntos:

  1. Header: Especifica el algoritmo y tipo de token.

    json
    {
      "alg": "HS256",
      "typ": "JWT"
    }
  2. Payload: Contiene los datos (claims) del usuario.

    json
    {
      "sub": "1234567890",
      "name": "John Doe",
      "iat": 1516239022
    }
  3. Signature: Firma digital que garantiza la integridad del token.

    text
    HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)

⚙️ ¿Cómo funciona JWT?

Flujo de autenticación:

  1. Login: Usuario ingresa credenciales (usuario y contraseña).

  2. Verificación: Servidor valida las credenciales.

  3. Generación: Si son correctas, genera un JWT con datos del usuario.

  4. Envío: JWT se envía al cliente y se almacena (ej. en cookies).

  5. Uso: Cliente incluye JWT en cabeceras de solicitudes futuras.

  6. Verificación: Servidor valida firma y datos del JWT en cada solicitud.

  7. 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:

  1. Configuración: Instalar paquete NuGet System.IdentityModel.Tokens.Jwt.

  2. Generar token:

    csharp
    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);
  3. Validar token en cada solicitud mediante middleware.

Prueba:

  • Sin token: Error 401 Unauthorized.

  • Con token válido: Acceso permitido.


✅ Beneficios de usar JWT

  1. Seguridad: Resistente a falsificación gracias a firma digital.

  2. Portabilidad: Autónomo y usable en múltiples sistemas sin replicar datos.

  3. Eficiencia: Ligero y compacto, ideal para apps web/móviles.

  4. Escalabilidad: Maneja grandes volúmenes de usuarios y solicitudes.

  5. 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

Entradas más populares de este blog

1-Autenticación JWT en PHP: Explicación y Ejemplo

8-JWT en 10 minutos - ¿Qué es JWT? ¿Para que sirve? ¿Cuando usarlo? ¿Cómo se usa?

2-JSON Web Tokens