Saltar a contenido

05.-Tipos de autenticación web

La autenticación web es el proceso mediante el cual un sistema verifica si un cliente es realmente quien dice ser antes de otorgarle acceso a un aplicativo web. Existen diversos tipos de autenticación utilizados en los aplicativos web, los cuales se describen a continuación:

Autenticación basada en credenciales

Es el método más común y se basa en la validación de un usuario y contraseña. El usuario debe identificarse en el aplicativo introduciendo sus credenciales, que luego son verificadas por el servidor.

Autenticación Básica (Basic Auth)

  • Es la forma más simple de autenticación HTTP.

  • Las credenciales se envían codificadas en Base64 a través de la cabecera "Authorization: Basic".

  • No es segura porque las credenciales pueden ser interceptadas en ataques Man in The Middle (MitM).

  • Ejemplo de una cabecera de autenticación básica:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

(Decodificado: Usuario "Aladdin" y contraseña "open sesame")

Autenticación Digest

  • Funciona de manera similar a la autenticación básica, pero de forma más segura.

  • Las contraseñas se almacenan cifradas y se transmiten en una cabecera "Authorization: Digest".

  • Evita la exposición directa de las credenciales.

Ejemplo de cabecera Digest Auth:

  GET /dir/index.html HTTP/1.0
  Host: localhost
  Authorization: Digest username="Mufasa",
  realm="testrealm@host.com",
  nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
  uri="/dir/index.html",
  qop=auth,
  nc=00000001,
  cnonce="0a4f113b",
  response="6629fae49393a05397450978507c4ef1",
  opaque="5ccc069c403ebaf9f0171e9517f40e41"

Autenticación basada en cookies

  • Es el método tradicional de autenticación en aplicaciones web.
  • Al iniciar sesión, el servidor genera un identificador de sesión (session ID) y lo almacena en una cookie.
  • En cada petición, el navegador envía la cookie para que el servidor valide la sesión.
  • Flujo de autenticación:
  • Usuario ingresa sus credenciales.
  • Servidor valida los datos y genera una sesión.
  • Se envía una cookie con el session ID al navegador.
  • En futuras peticiones, el navegador envía la cookie automáticamente.
  • La sesión se destruye cuando el usuario cierra sesión o expira el session ID.

Autenticación basada en tokens

  • Alternativa moderna a las cookies.

  • Una vez autenticado, el servidor genera un token y lo envía al usuario.

  • En cada petición posterior, el usuario envía el token en la cabecera Authorization.

  • Normalmente, los tokens tienen una fecha de expiración.

  • Ejemplo con JWT (JSON Web Token):

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI1NGE4Y2U2

API Keys

  • Utilizadas para autenticación en APIs.

  • Es un valor único que el cliente debe enviar en cada petición.

  • Métodos de envío:

  • Como parámetro en la URL:

    GET /something?api_key=abcdef12345

  • En una cabecera específica:

    GET /something HTTP/1.1 X-API-Key: abcdef12345

  • A través de una cookie:

    GET /something HTTP/1.1 Cookie: X-API-KEY=abcdef12345

  • Desventaja: Si una API Key es robada, puede ser reutilizada hasta que se revoque.

Autenticación basada en certificado

  • Se basa en el uso de certificados digitales para autenticar usuarios.
  • Común en aplicaciones gubernamentales y financieras.
  • Ejemplo: Uso del DNI electrónico o un certificado emitido por la FNMT.

Autenticación de doble factor (2FA)

  • Añade una capa adicional de seguridad.

  • Requiere que el usuario proporcione un segundo factor además de la contraseña:

  • Código SMS o llamada telefónica.

  • Token físico o virtual.
  • Datos biométricos (huella dactilar, reconocimiento facial).

  • Beneficio: Previene el acceso no autorizado en caso de que las credenciales sean robadas.

Autoevaluación

  1. El método de autenticación más común es la autenticación HTTP Básica.
    • Falso – Se desaconseja su uso debido a sus vulnerabilidades.
  2. El tipo de autenticación multifactor previene la suplantación de identidad en caso de robo de credenciales.
    • Verdadero – Un atacante necesitaría tanto la contraseña como el segundo factor para acceder.

Esta clasificación permite elegir el método de autenticación más adecuado según el nivel de seguridad requerido en cada aplicación web.