Comprender la autenticación web detrás de la pantalla de inicio de sesión

La autenticación es el proceso de verificar la identidad de un usuario o información. La autenticación de usuario es el proceso de verificar la identidad del usuario cuando ese usuario inicia sesión en un sistema informático.

El artículo trata brevemente sobre la autenticación en las aplicaciones web modernas.

Los dos tipos principales de autenticación son:

  • Autenticación sin estado

  • Autenticación con estado

Para comprender la diferencia significativa entre los dos, consulte el artículo Diferencia entre el protocolo sin estado y con estado . Ambos de estos dos tipos de autenticaciones se pueden entender al comprender su flujo.

Autenticación con estado: uso de ID de sesión y cookies.

Flujo de autenticación:

  1. El usuario envía las credenciales de inicio de sesión, es decir, el nombre de usuario y la contraseña.
  2. Esto es verificado por el servidor contra la base de datos.
  3. A continuación, el servidor genera una sesión de usuario temporal.
  4. El servidor emite una cookie con el ID de sesión.
  5. El usuario/cliente puede enviar la cookie con cada solicitud.
  6. El servidor lo valida contra el almacén de sesiones y otorga acceso.
  7. Cuando un usuario cierra la sesión, el servidor destruye la sesión y borra la cookie.

Nota: una ID de sesión no es más que una string aleatoria que el servidor puede identificar en el almacén de la sesión para validar las requests del usuario. Por lo tanto, ningún tercero puede extraer ningún dato/información de esa sesión.

Características de la autenticación con estado: cada sesión de usuario se almacena en el lado del servidor (con estado) .

  • En memoria, es decir, Sistemas de Archivos (Menos común).
  • Caché (Redis o Memcached)
  • En la base de datos (los de uso común incluyen Postgres y MongoDb)

Cada usuario se identifica mediante el ID de sesión.

  1. Referencia opaca:
    • Ningún tercero puede extraer ningún dato.
    • Solo el emisor (servidor) puede mapear los datos.
  2. Almacenado en la cookie:
    • Firmado con un secreto. Además, a menudo las cookies están protegidas con banderas para que los clientes no puedan manipularlas. El proceso de firma criptográfica de la cookie en el lado del servidor también se realiza con el propósito de evitar/detectar cualquier manipulación de la cookie en el lado del cliente y, por lo tanto, el lado del servidor puede estar seguro de que la cookie no ha sido manipulada. .

Autenticación sin estado: uso de tokens, JWT, OAuth y otros.

Flujo de autenticación usando tokens:

  • El usuario envía las credenciales de inicio de sesión, es decir, el nombre de usuario y la contraseña.
  • El servidor verifica las credenciales contra la base de datos.
  • Luego, el servidor genera un token temporal e incorpora los datos del usuario en él.
  • El servidor responde con el token (en cuerpo o encabezado).
  • El usuario almacena el token en el almacenamiento del cliente [localStorage o SessionStorage].
  • El usuario envía el token junto con cada solicitud.
  • El servidor verifica el token y otorga acceso.
  • Cuando el usuario cierra la sesión, el token se borra del almacenamiento del cliente.

Características de los sistemas de autenticación sin estado:

  • Los tokens no se almacenan en el lado del servidor, solo en el cliente. (Sin estado)
  • Firmado con un secreto contra la manipulación.
  • Verificado y el servidor puede confiar en él.
  • Los tokens pueden ser opacos o autónomos.
  • Los tokens pueden transportar todos los datos de usuario requeridos en su carga útil.
  • Esto puede reducir las búsquedas en la base de datos, pero expone los datos a ataques XSS.
  • Los tokens generalmente se envían bajo el encabezado de Autorización.
  • Cuando un token está a punto de caducar, se puede actualizar, ya que el cliente recibe tanto el token de acceso como el token de actualización.
  • El token de actualización se puede usar para actualizar el token de acceso.
  • Se utiliza en aplicaciones web SPA, API web e incluso aplicaciones móviles.

Publicación traducida automáticamente

Artículo escrito por akashchouhan16 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *