Autenticación básica de la autenticación HTTP

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-Authenticateencabezados de respuesta HTTP y Authorizationencabezados 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-Authenticaterespuesta con un encabezado de respuesta 401 Unauthorized;
  • El cliente obtiene el ID de usuario y la contraseña y envía una Authorizationsolicitud 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-AuthenticateEncabezado de respuesta

WWW-AuthenticateEl encabezado de respuesta se usa para decirle al cliente qué método de autenticación usar, y generalmente se Unauthorizeddevuelve con la respuesta 401 ( ). WWW-AuthenticateEl formato es el siguiente:

WWW-Authenticate: <type> [realm=<realm>] [charset=<charset>]

WWW-AuthenticateLos comandos que se pueden configurar son:

  • type: El tipo de autenticación, con un valor común Basic, Bearer, OAuthy similares, pueden ser más valores de referencia los HTTP los esquemas de autenticación - la IANA . El Basicvalor 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 la Basicautenticación, realmes 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úsculas UTF-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"

AuthorizationEncabezado de solicitud

AuthorizationSe 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-Authenticaterespuesta con un encabezado de respuesta 401 Unauthorized.

Authorization: <type> <credentials>

AuthorizationLos comandos que se pueden configurar son:

  • type: Ese es el tipo de verificación mencionado anteriormente, Authorizationel valor establecido en el encabezado será WWW-Authenticatecoherente con el tipo devuelto, que se encuentra en este artículo Basic.
  • 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

Client Server GET / HTTP/1.1 HTTP/1.1 401 Unauthorized WWW-Authenticate: Basic realm="Protect Space" GET / HTTP/1.1 Authorization: Basic dXNlcjpwYXNz HTTP/1.1 200 OK Client Server

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-Authenticatele 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 Authorizationenví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

Referencia

Supongo que te gusta

Origin blog.csdn.net/ghosind/article/details/109395004
Recomendado
Clasificación