Autenticación S3

Las solicitudes a la Ceph Object Gateway se pueden autenticar o no autenticar. Ceph Object Gateway presupone que las solicitudes no autenticadas las envía un usuario anónimo. Ceph Object Gateway da soporte a ACL conservadas.

En la mayoría de los casos de uso, los clientes utilizan bibliotecas de código abierto existentes como AmazonS3Client for Java del SDK de Amazon y Python Boto. Con las bibliotecas de código abierto, pasa la clave de acceso y la clave secreta y la biblioteca crea la cabecera de solicitud y la firma de autenticación. Sin embargo, puede crear solicitudes y firmarlas también.

La autenticación de una solicitud requiere incluir una clave de acceso y un HMAC (Código de autenticación de mensajes basado en hash) codificado en base 64 en la solicitud antes de que se envíe al servidor Ceph Object Gateway . Ceph Object Gateway utiliza un enfoque de autenticación S3-compatible .

Ejemplo

HTTP/1.1
PUT /buckets/bucket/object.mpeg
Host: cname.domain.com
Date: Mon, 2 Jan 2012 00:01:01 +0000
Content-Encoding: mpeg
Content-Length: 9999999

Authorization: AWS _ACCESS_KEY_:_HASH_OF_HEADER_AND_SECRET_

En el ejemplo, sustituya ACCESS_KEY por el valor del ID de clave de acceso seguido de dos puntos (:). Sustituya HASH_OF_HEADER_AND_SECRET por un hash de una serie de cabecera canonicalizada y el secreto correspondiente al ID de clave de acceso.

Generar un hash de serie de cabecera y secreto.

Para generar el hash de la serie de cabecera y el secreto:

  1. Obtenga el valor de la serie de cabecera.

  2. Normalice la serie de cabecera de solicitud en formato canónico.

  3. Genere un HMAC con un algoritmo de hash SHA-1 .

  4. Codifique el resultado de hmac como base-64.

Normalizando cabecera

Normalice la cabecera en formato canónico.

  1. Obtener todas las cabeceras content- .

  2. Elimine todas las cabeceras content- excepto content-type y content-md5.

  3. Asegúrese de que los nombres de cabecera de content- estén en minúsculas.

  4. Ordene las cabeceras content- lexicográficamente.

  5. Asegúrese de que tiene una cabecera AND de Date y asegúrese de que la fecha especificada utiliza GMT y no un desplazamiento.

  6. Obtenga todas las cabeceras que empiezan por x-amz-.

  7. Asegúrese de que las cabeceras x-amz- estén todas en minúsculas.

  8. Ordene las cabeceras x-amz- lexicográficamente.

  9. Combine varias instancias del mismo nombre de campo en un único campo y separe los valores de campo con una coma.

  10. Sustituya el espacio en blanco y los saltos de línea en los valores de cabecera por un único espacio.

  11. Elimine el espacio en blanco antes y después de los dos puntos.

  12. Añada una nueva línea después de cada cabecera.

  13. Vuelva a fusionar las cabeceras en la cabecera de solicitud.

Sustituya HASH_OF_HEADER_AND_SECRET por la serie HMAC codificada base-64 .