Autenticación de acceso básico - Basic access authentication

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 forma de Authorization: Basic <credentials>, donde credenciales es la codificación Base64 de ID y contraseña unidas por dos puntos :.

Se especifica en RFC  7617 de 2015, que deja obsoleto a RFC  2617 de 1999.

Características

La implementación de la autenticación básica HTTP (BA) es la técnica más simple para hacer cumplir los controles de acceso a los recursos web porque no requiere cookies , identificadores de sesión o páginas de inicio de sesión; más bien, la autenticación HTTP básica utiliza campos estándar en el encabezado HTTP .

Seguridad

El mecanismo BA no proporciona protección de confidencialidad para las credenciales transmitidas. Ellos simplemente están codificados con Base64 en tránsito y no encriptados o hash de ninguna manera. Por lo tanto, la autenticación básica generalmente se usa junto con HTTPS para brindar confidencialidad.

Debido a que el campo BA debe enviarse en el encabezado de cada solicitud HTTP, el navegador web necesita almacenar en caché las credenciales durante un período de tiempo razonable para evitar que el usuario solicite constantemente 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 indique 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 intencionalmente incorrectas. Sin embargo, este comportamiento es inconsistente entre varios navegadores y versiones de navegadores. Microsoft Internet Explorer ofrece un método de JavaScript dedicado para borrar las credenciales almacenadas en caché:

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

En los navegadores modernos, las credenciales almacenadas en caché para la autenticación básica generalmente se borran 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.

Protocolo

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 y un campo de encabezado WWW-Authenticate .

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 :

WWW-Authenticate: Basic realm="User Visible Realm", charset="UTF-8"

Este parámetro indica que el servidor espera que el cliente use UTF-8 para codificar el nombre de usuario y la contraseña (ver más abajo).

Lado del cliente

Cuando el agente de usuario desea enviar credenciales de autenticación al servidor, puede usar el campo de encabezado Autorización .

El campo del encabezado de autorización se construye de la siguiente manera:

  1. El nombre de usuario y la contraseña se combinan con dos puntos (:). Esto significa que el nombre de usuario en sí no puede contener dos puntos.
  2. La cadena resultante se codifica en una secuencia de octetos. El conjunto de caracteres que se utilizará para esta codificación no está especificado por defecto, siempre que sea compatible con US-ASCII, pero el servidor puede sugerir el uso de UTF-8 enviando el parámetro charset .
  3. La cadena resultante se codifica utilizando una variante de Base64 (+ / y con relleno).
  4. El método de autorización y un espacio (por ejemplo, "Básico") se anteponen a la cadena codificada.

Por ejemplo, si el navegador usa Aladdin como nombre de usuario y open sésamo como contraseña, entonces el valor del campo es la codificación Base64 de Aladdin: open sesame , o QWxhZGRpbjpvcGVuIHNlc2FtZQ == . Luego, el campo del encabezado de Autorización aparecerá como:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Ver también

Referencias y notas

enlaces externos