Autenticación de acceso básica

En el contexto de una transacción HTTP, la autenticación de acceso básica es un método diseñado para permitir a un navegador web, u otro programa cliente, proveer credenciales en la forma de usuario y contraseña cuando se le solicita una página al servidor.

Características editar

La autenticación básica, como su nombre lo indica, es la forma más básica de autenticación disponible para las aplicaciones Web. Fue definida por primera vez en la especificación HTTP en sí y no es de ninguna manera elegante, pero cumple su función. Este tipo de autenticación es el tipo más simple disponible pero adolece de importantes problemas de seguridad que no la hacen recomendable en muchas situaciones. No requiere el uso ni de cookies, ni de identificadores de sesión, ni de página de ingreso.

Seguridad editar

Ha sido diseñado con el fin de permitir a un navegador web o programa aportar credenciales basadas en nombre de usuario y contraseña, que le permitan autenticarse ante un determinado servicio. El sistema es muy sencillo de implementar, pero sin embargo no está pensado para ser utilizado sobre líneas públicas, debido a que las credenciales que se envían desde el cliente al servidor, aunque no se envían directamente en texto plano, se envían únicamente codificadas en Base64, lo que hace que se puedan obtener fácilmente debido a que es perfectamente reversible, es decir, una vez que se posee el texto codificado es posible obtener la cadena original sin ningún problema, por lo que la información enviada no es cifrada ni segura.

HTTP no proporciona un método para que un servidor web obligue al navegador a "desconectar" al usuario. Sin embargo, hay un número de métodos para despejar credenciales almacenadas en caché en ciertos navegadores web. Uno de ellos es redirigiendo al usuario a una URL en el mismo dominio que contiene credenciales que son intencionalmente incorrectas.

Por desgracia, este comportamiento no es coherente entre los distintos navegadores y versiones de navegadores[1]​ Microsoft Internet Explorer ofrece un método dedicado JavaScript para borrar las credenciales almacenadas en caché:[2]

 <script>document.execCommand('ClearAuthenticationCache', 'false');</script>

Protocolo editar

Lado Servidor editar

Cuando el servidor quiere que el agente de usuario se autentique hacia el servidor, debe responder de manera adecuada a las solicitudes no autenticadas.

Las solicitudes no autenticadas deben devolver un código de respuesta HTTP 401 No Autorizado[3]​ containing a WWW-Authenticate HTTP header.[4]​ que contiene una cabecera HTTP WWW-Authenticate. [5]

La cabecera WWW-Authenticate para la autenticación básica (utilizado más a menudo) se construye de la siguiente manera:[5]

WWW-Authenticate: Basic realm="nmrs_m7VKmomQ2YM3:"

Lado Cliente editar

Cuando el agente de usuario quiere enviar las credenciales de autenticación al servidor, puede utilizar el encabezado de autorización.[6]

La cabecera de Autorización se construye como sigue:[6]

  1. Nombre de usuario y la contraseña se combinan en una cadena "usuario:contraseña".
  2. La cadena resultante se codifica utilizando la variante RFC2045-MIME de Base64, excepto que no limitado a 76 caracteres por línea.[3]
  3. El método de autorización y un espacio, es decir, "Basic " se pone a continuación, antes de que la cadena codificada.

Por ejemplo, si el agente de usuario utiliza 'Aladdin' como nombre de usuario y 'open sesame' como contraseña entonces la cabecera está formada de la siguiente manera:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Véase también editar

Referencias editar