La autenticación básica HTTP (autorización básica) es un método de autenticación definido en RFC7617-IETF . Utiliza pares de ID de usuario / contraseña codificados en Base64 como credenciales de identidad del usuario. Dado que la autenticación HTTP básica transmite el ID de usuario y la contraseña en texto sin formato (Base64 es un método de codificación reversible), no es seguro usarlo sin HTTPS.
La autenticación HTTP básica se implementa principalmente a través de WWW-Authenticate
encabezados de respuesta HTTP y Authorization
encabezados de solicitud. El proceso es aproximadamente el siguiente:
- El cliente solicita recursos restringidos sin proporcionar credenciales de usuario;
- El servidor acepta la solicitud y devuelve una
WWW-Authenticate
respuesta con un encabezado de respuesta401 Unauthorized
; - El cliente obtiene el ID de usuario y la contraseña y envía una
Authorization
solicitud con el encabezado de la solicitud después de la codificación ; - El servidor devuelve el recurso solicitado o devuelve un error basado en la credencial de identidad proporcionada por la solicitud.
WWW-Authenticate
Encabezado de respuesta
WWW-Authenticate
El encabezado de respuesta se usa para decirle al cliente qué método de autenticación usar, y generalmente se Unauthorized
devuelve con la respuesta 401 ( ). WWW-Authenticate
El formato es el siguiente:
WWW-Authenticate: <type> [realm=<realm>] [charset=<charset>]
WWW-Authenticate
Los comandos que se pueden configurar son:
type
: El tipo de autenticación, con un valor comúnBasic
,Bearer
,OAuth
y similares, pueden ser más valores de referencia los HTTP los esquemas de autenticación - la IANA . ElBasic
valor se utilizará en este artículo .realm
: La descripción del área protegida. Si no se especifica, el cliente mostrará el nombre de host formateado por defecto. Cuando se usa laBasic
autenticación,realm
es una instrucción necesaria.charset
: Dígale al cliente el método de codificación preferido para el nombre de usuario y la contraseña, el único valor permitido no distingue entre mayúsculas y minúsculasUTF-8
.
El siguiente es un ejemplo del encabezado de respuesta devuelto por el servidor cuando se usa la autenticación básica:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Protect Space" charset="UTF-8"
Authorization
Encabezado de solicitud
Authorization
Se utiliza para establecer la credencial de identidad requerida por el servidor para autenticar al usuario. Por lo general, se envía en la solicitud después de que el servidor devuelve una WWW-Authenticate
respuesta con un encabezado de respuesta 401 Unauthorized
.
Authorization: <type> <credentials>
Authorization
Los comandos que se pueden configurar son:
type
: Ese es el tipo de verificación mencionado anteriormente,Authorization
el valor establecido en el encabezado seráWWW-Authenticate
coherente con el tipo devuelto, que se encuentra en este artículoBasic
.credentials
: Las credenciales de identidad del usuario.
Entre ellos, cuando se usa la autenticación básica, la credencial de identidad es un :
nombre de usuario y una contraseña para la conexión, y Base64 se usa para la codificación.
El siguiente es un ejemplo de una solicitud implementada en JavaScript:
const username = 'user';
const password = 'pass';
const credentials = btoa(username + ':' + password);
console.log(credentials);
// dXNlcjpwYXNz
fetch(url, {
headers: {
Authorization: `Basic ${
credentials}`
}
});
Ejemplos de encabezados de solicitud enviados son:
GET / HTTP/1.1
Authorization: Basic dXNlcjpwYXNz
Un ejemplo simple de interacción de verificación
Primero, el cliente /
inicia una solicitud GET a los recursos del servidor :
GET / HTTP/1.1
Después de que el servidor recibe la solicitud, devuelve una respuesta con un estado de 401 y WWW-Authenticate
le dice al cliente que use la autenticación básica a través del encabezado de respuesta:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Protected space"
Una vez que el cliente recibe la respuesta, obtiene el nombre de usuario y la contraseña a través de la entrada del usuario u otros métodos, codifica las credenciales de identidad de la manera mencionada anteriormente y las Authorization
envía al servidor a través del encabezado de la solicitud.
GET / HTTP/1.1
Authorization: Basic dXNlcjpwYXNz
Una vez que el servidor recibe la solicitud con las credenciales de identidad, devolverá recursos o errores según las credenciales de identidad del usuario. Por ejemplo, cuando se verifica el certificado de identidad, devuelve 200 correspondientemente:
HTTP/1.1 200 OK
O devuelva una respuesta 403 cuando falle la autenticación del certificado de identidad.
HTTP/1.1 403 Forbidden