Json Web Token
parentesys

Json Web Token

Explicación de la tecnología JWT, que permite transferir datos entre dos partes de manera segura, ya que incluye una firma que garantiza la integridad del token.

PARENTESYS | 3 dic 2024


1. ¿Qué es un JWT?

Un JWT es un estándar (RFC 7519) para crear tokens que contienen información en formato JSON, codificados de forma segura para ser transmitidos entre dos partes: por ejemplo, un cliente (navegador) y un servidor.

Un JWT consta de tres partes separadas por puntos (.):

Header.Payload.Signature 

Ejemplo de un JWT:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjEyMywibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNjcwMDAwMDB9.4B_3iQNsCBTcnPf1dq2Xb-8ArN7ysDkJBaZKn5Ow2p4 


2. Partes de un JWT

Header (Encabezado): Define el tipo de token y el algoritmo de firma usado.

      { 
        "typ": "JWT", // Tipo: JSON Web Token  
        "alg": "HS256", // Algoritmo: HMAC-SHA256 
      } 

          Codificado en Base64:

     eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 

Payload (Carga útil):  Contiene los datos (o claims) del token, como información del usuario o permisos. Estos datos no están cifrados, solo codificados en Base64, por lo que cualquier persona que tenga el token puede leerlos.

            Ejemplo de payload:

      { 
        "sub": 123, // ID del usuario 
        "name": "John Doe", // Nombre del usuario 
        "iat": 1670000000, // Emitido en (timestamp) 
        "exp": 1670003600 // Expira en (timestamp) 
      } 

            Codificado en Base64:

      eyJzdWIiOjEyMywibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNjcwMDAwMDB9 

Signature (Firma): Garantiza la integridad del token y confirma que no ha sido alterado. Se genera usando:

  Signature = HMACSHA256( base64UrlEncode(Header) + "." + base64UrlEncode(Payload), secret_key ) 

Ejemplo de firma:

  4B_3iQNsCBTcnPf1dq2Xb-8ArN7ysDkJBaZKn5Ow2p4 


3. ¿Cómo funciona JWT?

Autenticación inicial:

  • El cliente (por ejemplo, una aplicación web o móvil) envía sus credenciales (usuario/contraseña) al servidor.
  • Si las credenciales son válidas, el servidor genera un JWT y lo envía al cliente.

Almacenar el JWT:

  • El cliente guarda el token en un lugar seguro, como:
    • Local Storage (en navegadores).
    • Cookies (opcionalmente protegidas con HttpOnly y Secure).

Usar el JWT para solicitudes subsecuentes:

  • En solicitudes futuras, el cliente envía el JWT al servidor como parte del encabezado de autorización:
    Authorization: Bearer  

Validación del token:

  • El servidor valida:
    • La firma del token usando la clave secreta.
    • Que el token no esté expirado (exp).
    • Otros datos según sea necesario.

Procesar la solicitud:

  • Si el token es válido, el servidor procesa la solicitud. Si no es válido, devuelve un error (por ejemplo, 401 Unauthorized).


4. ¿Para qué se utiliza JWT?

Autenticación

Inicio de sesión sin estado (stateless):

  • Los JWT eliminan la necesidad de mantener sesiones en el servidor. Toda la información del usuario está en el token.
  • Esto es útil en aplicaciones escalables o distribuidas.

Autorización

  • JWT puede contener información sobre los permisos del usuario, como roles (admin, usuario básico, etc.).
  • Ejemplo de payload con roles:
    { 
       "sub": 123, 
       "name": "John Doe", 
       "role": "admin" 
    } 
    

Intercambio de información

  • JWT permite transferir datos entre dos partes de manera segura, ya que incluye una firma que garantiza la integridad del token.


5. Ventajas y desventajas

Ventajas

  1. Sin estado: No se necesita mantener sesiones en el servidor.
  2. Autocontenido: Todo lo necesario está en el token (datos del usuario, permisos, etc.).
  3. Escalable: Ideal para microservicios y aplicaciones distribuidas.
  4. Seguridad: La firma garantiza que el token no ha sido alterado.

Desventajas

  1. No cifrado: A menos que se use junto con un canal seguro (HTTPS), los datos del payload son visibles para cualquiera que intercepte el token.
  2. Revocación: No hay una forma directa de invalidar un token antes de su expiración (por ejemplo, al cerrar sesión).
  3. Tamaño: Los JWT suelen ser más grandes que un simple identificador de sesión.


6. Mejores prácticas con JWT

  1. Usa HTTPS: Protege el token en tránsito.
  2. Define tiempos de expiración (exp) cortos: Minimiza el impacto en caso de que el token sea comprometido.
  3. Guarda los tokens de forma segura:
    • - Usa cookies con HttpOnly y Secure para mitigar riesgos como XSS.
    • - Evita guardar tokens en localStorage si la aplicación es vulnerable a XSS.
  4. Revocación:
    • - Implementa una lista negra de tokens revocados en el servidor, si es necesario.
  5. No confíes en los datos del token directamente:
    • - Aunque están firmados, verifica siempre su validez antes de usarlos.

¡Suerte con tu proyecto usando JWT! 😊

Temas relacionados:

jwt

json web token

Opiniones de este contenido

Esta web se reserva el derecho de suprimir, por cualquier razón y sin previo aviso, cualquier contenido generado en los espacios de participación en caso de que los mensajes incluyan insultos, mensajes racistas, sexistas... Tampoco se permitirán los ataques personales ni los comentarios que insistan en boicotear la labor informativa de la web, ni todos aquellos mensajes no relacionados con la noticia que se esté comentando. De no respetarse estas mínimas normas de participación este medio se verá obligado a prescindir de este foro, lamentándolo sinceramente por todos cuantos intervienen y hacen en todo momento un uso absolutamente cívico y respetuoso de la libertad de expresión.




 No hay opiniones. Sé el primero en escribir.


Tu opinión

Contenidos Indexados
El Arte del Bonsái Ficus - Variedades

 3
  
 237275

English Adverbios de Frecuencia

 10
  
 220490

Informática Generador de códigos de barras en PHP

 13
  
 182799

Quejas denuncias estafas Descubre quién te visita en Facebook?

 16
  
 158195

English Something - Anything

 2
  
 149185

Marketing digital Cómo ganar dinero con un periódico o revista digital

 2
  
 147203

Informática Mejores herramientas para Eventos Virtuales

 1
  
 117224

Actualidad Las profesiones que van a desaparecer.

 0
  
 104106

Informática Periodista digital, ¿cuánto vale tu tiempo?

 0
  
 103347

Autores

Admin

Este autor tiene 31 artículos publicados.

PARENTESYS

Este autor tiene 22 artículos publicados.

MILES

Este autor tiene 3 artículos publicados.


Newsletter

Suscríbete a nuestros boletines