Sobes.tech
Junior

¿Qué es la autenticación básica (Basic Auth)?

sobes.tech AI

Respuesta de la IA

La autenticación básica es la forma más sencilla de autenticar a un cliente HTTP, definida en el estándar RFC 7617.

Principio de funcionamiento:

  1. El cliente envía una solicitud HTTP a un recurso protegido.
  2. El servidor responde con un estado 401 Unauthorized y un encabezado WWW-Authenticate: Basic realm="<realm>", donde <realm> es una descripción textual del área protegida (recurso).
  3. El navegador o la aplicación cliente muestra un cuadro de diálogo para ingresar el nombre de usuario y la contraseña.
  4. El cliente codifica el nombre de usuario y la contraseña en una cadena en formato username:password.
  5. La cadena resultante se codifica usando Base64.
  6. El cliente repite la solicitud, agregando el encabezado Authorization: Basic <cadena_base64_codificada>, donde <cadena_base64_codificada> es el resultado de la codificación Base64.
  7. El servidor decodifica la cadena Base64, separa el nombre de usuario y la contraseña y verifica las credenciales.
  8. Si las credenciales son correctas, el servidor envía el recurso solicitado. De lo contrario, vuelve a responder con 401 Unauthorized.

Ejemplo de encabezado Authorization:

Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

donde YWxhZGRpbjpvcGVuc2VzYW1l es una cadena codificada en Base64 de aladdin:opensesame.

Características:

  • Simplicidad: Fácil de implementar tanto en el cliente como en el servidor.
  • Inseguridad: Las credenciales se transmiten, aunque en Base64, pero sin cifrar. Base64 es codificación, no cifrado. Al interceptar el tráfico, los datos se pueden decodificar fácilmente. Solo en combinación con HTTPS proporciona un nivel mínimo de seguridad.
  • Estado: No mantiene estado en el servidor entre solicitudes (sin estado). Cada solicitud requiere el encabezado Authorization.
  • Experiencia del usuario: La ventana de diálogo del navegador es menos flexible y amigable en comparación con formularios de autenticación personalizados.

Uso: Se emplea principalmente para proteger API, recursos estáticos o en sistemas internos simples donde la seguridad no es crítica, o siempre en combinación con SSL/TLS (HTTPS).