Seguridad implementada - Web-Developers2-0/2025-Practica_Profesionalizante GitHub Wiki

Para nuestra tienda de cómics, queremos asegurarnos de que nuestros usuarios puedan acceder a la aplicación de manera segura y sin complicaciones, por eso elegimos usar JSON Web Tokens (JWT) para la autenticación. Esta elección no solo mejora la experiencia del usuario, sino que también fortalece la seguridad de nuestro sistema.

¿Por qué usar JWT?

JWT es una tecnología ligera y eficiente que nos permite autenticar a los usuarios sin tener que gestionar sesiones complicadas en el servidor. A diferencia de los métodos tradicionales, donde se guarda información de sesión en el servidor, JWT lleva toda la información necesaria dentro del propio token. Esto hace que nuestra aplicación sea más rápida y fácil de escalar, especialmente cuando crecemos y necesitamos que múltiples servidores manejen las solicitudes sin perder tiempo sincronizando datos de sesión.

Cómo funciona la autenticación con JWT en nuestra tienda de cómics:

  • Inicio de Sesión Seguro: Cuando un usuario inicia sesión, envía sus credenciales (usuario y contraseña) al servidor. El servidor valida esos datos y, si son correctos, genera un JWT. Este token incluye detalles clave del usuario, como su ID y sus permisos. Luego, el servidor firma el token para asegurar que no pueda ser manipulado y se lo envía de vuelta al usuario.
  • Uso del Token en las Solicitudes: Una vez que el usuario tiene su JWT, lo guarda de manera segura en su dispositivo y lo usa cada vez que necesita acceder a partes protegidas de la aplicación, como gestionar su cuenta o realizar una compra. En cada solicitud, el JWT va incluido en el encabezado de la solicitud, lo que le dice al servidor que el usuario ya está autenticado.
  • Seguridad y Expiración: Los JWT están diseñados para expirar después de un tiempo definido, lo cual es una medida importante para la seguridad. Esto evita que un token robado pueda ser utilizado indefinidamente. Si el token expira, el usuario deberá autenticarse de nuevo o utilizar un refresh token para obtener uno nuevo, manteniendo el acceso seguro y controlado.
  • Protección Adicional: Además, implementamos autenticación multifactor (MFA) para las cuentas que manejan información sensible, como administradores o personal autorizado. Esto añade una capa adicional de seguridad y garantiza que incluso si alguien obtuviera las credenciales de acceso, no podría ingresar sin ese segundo factor de autenticación.

Fundamentación de la Elección:

Elegimos JWT porque nos permite manejar la autenticación de manera más segura y eficiente. A continuación, algunos de los motivos clave:

  • Eficiencia y Rendimiento: Los tokens son ligeros y no sobrecargan la red, lo que resulta en una experiencia de usuario rápida y fluida. Seguridad sin comprometer la experiencia: Los JWT están firmados, lo que asegura que los datos no se puedan manipular. Además, su diseño permite que la autenticación sea "sin estado", es decir, no necesitamos guardar información en el servidor, lo que reduce los puntos vulnerables.
  • Escalabilidad: A medida que la tienda crece, JWT facilita la autenticación en múltiples servidores o microservicios sin la necesidad de gestionar bases de datos centralizadas de sesiones. Esto nos da flexibilidad y reduce la complejidad en la administración de usuarios.
  • Gestión de Roles y Permisos: Con JWT, podemos incluir dentro del token la información sobre qué permisos tiene cada usuario, asegurando que cada uno solo acceda a lo que le corresponde. Esto es especialmente útil para separar los roles de cliente, administrador y otros perfiles dentro de la tienda.