En el contexto de una transacción HTTP , la autenticación de acceso básica es un método para que un agente de usuario HTTP (por ejemplo, un navegador web ) proporcione un nombre de usuario y una contraseña al realizar una solicitud. En la autenticación HTTP básica, una solicitud contiene un campo de encabezado en el formato Authorization: Basic <credentials>
, donde <credentials>
es la codificación Base64 de ID y contraseña unidas por dos puntos :
.
Fue implementado originalmente por Ari Luotonen en el CERN en 1993 [1] y definido en la especificación HTTP 1.0 en 1996. [2] Está especificado en el RFC 7617 de 2015, que deja obsoleto el RFC 2617 de 1999.
La implementación de la autenticación básica (BA) HTTP es la técnica más simple para aplicar controles de acceso a los recursos web porque no requiere cookies , identificadores de sesión o páginas de inicio de sesión; en cambio, la autenticación básica HTTP utiliza campos estándar en el encabezado HTTP .
El mecanismo BA no ofrece protección de confidencialidad para las credenciales transmitidas. Estas simplemente se codifican con Base64 en tránsito y no se cifran ni se codifican de ninguna manera. Por lo tanto, la autenticación básica se suele utilizar junto con HTTPS para brindar confidencialidad.
Debido a que el campo BA debe enviarse en el encabezado de cada solicitud HTTP, el navegador web debe almacenar en caché las credenciales durante un período de tiempo razonable para evitar solicitar constantemente al usuario su nombre de usuario y contraseña. La política de almacenamiento en caché difiere entre los navegadores.
HTTP no proporciona un método para que un servidor web le ordene al cliente que "cierre la sesión" del usuario. Sin embargo, existen varios métodos para borrar las credenciales almacenadas en caché en ciertos navegadores web. Uno de ellos es redirigir al usuario a una URL en el mismo dominio, utilizando credenciales que son intencionalmente incorrectas. Sin embargo, este comportamiento es inconsistente entre varios navegadores y versiones de navegador. [3] Microsoft Internet Explorer ofrece un método JavaScript dedicado para borrar las credenciales almacenadas en caché: [4]
< script > documento . execCommand ( '' );</ script >
En los navegadores modernos, las credenciales almacenadas en caché para la autenticación básica suelen borrarse al borrar el historial de navegación. La mayoría de los navegadores permiten a los usuarios borrar específicamente solo las credenciales, aunque la opción puede ser difícil de encontrar y, por lo general, borra las credenciales de todos los sitios visitados. [5] [6]
La fuerza bruta de credenciales no se previene ni se detecta activamente (a menos que se utilice un mecanismo del lado del servidor).
Cuando el servidor desea que el agente de usuario se autentique ante el servidor después de recibir una solicitud no autenticada, debe enviar una respuesta con una línea de estado HTTP 401 No autorizado [7] y un campo de encabezado WWW-Authenticate . [8]
El campo de encabezado WWW-Authenticate para la autenticación básica se construye de la siguiente manera:
WWW-Authenticate: Basic realm="User Visible Realm"
El servidor puede optar por incluir el parámetro charset de RFC 7617: [3]
WWW-Authenticate: Basic realm="User Visible Realm", charset="UTF-8"
Este parámetro indica que el servidor espera que el cliente utilice UTF-8 para codificar el nombre de usuario y la contraseña (ver a continuación).
Cuando el agente de usuario desea enviar credenciales de autenticación al servidor, puede utilizar el campo de encabezado Autorización .
El campo de encabezado de Autorización se construye de la siguiente manera: [9]
Por ejemplo, si el navegador utiliza Aladdin como nombre de usuario y open sesame como contraseña, el valor del campo es la codificación Base64 de Aladdin:open sesame o QWxhZGRpbjpvcGVuIHNlc2FtZQ== . Entonces, el campo de encabezado de Autorización aparecerá como:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Borrar historial reciente->Inicios de sesión activos (en los detalles) se utiliza para borrar la autenticación.
Datos que se pueden eliminar[...]Contraseñas: Se eliminan los registros de las contraseñas que hayas guardado.