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:
Obtenga el valor de la serie de cabecera.
Normalice la serie de cabecera de solicitud en formato canónico.
Genere un HMAC con un algoritmo de hash SHA-1 .
Codifique el resultado de
hmaccomo base-64.
Normalizando cabecera
Normalice la cabecera en formato canónico.
Obtener todas las cabeceras
content-.Elimine todas las cabeceras
content-exceptocontent-typeycontent-md5.Asegúrese de que los nombres de cabecera de
content-estén en minúsculas.Ordene las cabeceras
content-lexicográficamente.Asegúrese de que tiene una cabecera AND de
Datey asegúrese de que la fecha especificada utiliza GMT y no un desplazamiento.Obtenga todas las cabeceras que empiezan por
x-amz-.Asegúrese de que las cabeceras
x-amz-estén todas en minúsculas.Ordene las cabeceras
x-amz-lexicográficamente.Combine varias instancias del mismo nombre de campo en un único campo y separe los valores de campo con una coma.
Sustituya el espacio en blanco y los saltos de línea en los valores de cabecera por un único espacio.
Elimine el espacio en blanco antes y después de los dos puntos.
Añada una nueva línea después de cada cabecera.
Vuelva a fusionar las cabeceras en la cabecera de solicitud.
Sustituya HASH_OF_HEADER_AND_SECRET por la serie HMAC codificada base-64 .