Autenticación con la firma del usuario
OBS firma una solicitud usando AK/SK. Cuando un cliente está enviando una solicitud a OBS, el encabezado del mensaje debe contener la SK, la hora de la solicitud, el tipo de solicitud y otra información de la firma.
- AK: ID de clave de acceso, que es un identificador único asociado con una clave de acceso secreta (SK). Las AK y SK se usan juntas para obtener una firma cifrada a una solicitud. Ejemplo de formato: HCY8BGCN1YM5ZWYOK1MH
- SK: clave de acceso secreta, que se utiliza junta con la AK para firmar solicitudes, identificar un remitente de solicitud e impedir que la solicitud sea modificada. Ejemplo de formato: 9zYwf1uabSQY0JTnFqbUqG7vcfqYBaTdXde2GUcq
Un usuario puede obtener las AK y SK de IAM. Para obtener más información, véase Obtención de claves de acceso (AK/SK).
OBS proporciona tres métodos de cálculo de firma basados en escenarios de aplicación: Autenticación de la firma en un encabezado, Autenticación de la firma en una URL y Autenticación de la firma transportada en la tabla cargada con un navegador.
El SDK proporcionado por OBS integra el cálculo de firmas. Se recomienda utilizar el SDK para el desarrollo.
Tabla 1 muestra el proceso de verificación de firma de usuario en el que se lleva una firma en un encabezado. Para obtener detalles sobre los parámetros y ejemplos de código de autenticación de firma en un encabezado, consulte Autenticación de la firma en un encabezado.
Procedimiento |
Ejemplo |
|
---|---|---|
Cálculo de firma |
1. Construir un mensaje HTTP. |
PUT /object HTTP/1.1 Host: bucket.obs.region.myhuaweicloud.com Date: Tue, 04 Jun 2019 06:54:59 GMT Content-Type: text/plain Content-Length: 5913 |
2. Calcular StringToSign en función de la regla de firma. |
StringToSign = HTTP-Verb + "\n" + Content-MD5 + "\n" + Content-Type + "\n" + Date + "\n" + CanonicalizedHeaders + CanonicalizedResource |
|
3. Preparar las AK y SK. |
AK: ****** SK: ****** |
|
4. Calcular Signature. |
Signature = Base64( HMAC-SHA1( SecretAccessKeyID, UTF-8-Encoding-Of( StringToSign ) ) ) |
|
5. Agregar un encabezado de firma y enviar la solicitud a OBS. |
PUT /object HTTP/1.1 Host: bucket.obs.region.myhuaweicloud.com Date: Tue, 04 Jun 2019 06:54:59 GMT Content-Type: text/plain Content-Length: 5913 Authorization: OBS AccessKeyID:Signature |
|
Autenticación de firmas |
6. Recibir el mensaje de HTTP. |
PUT /object HTTP/1.1 Host: bucket.obs.region.myhuaweicloud.com Date: Tue, 04 Jun 2019 06:54:59 GMT Content-Type: text/plain Content-Length: 5913 Authorization: OBS AccessKeyID:Signature |
7. Obtener la SK según la AK en la solicitud. |
Obtener la AK del encabezado de autorización y obtener la SK del usuario de IAM. |
|
8. Calcular StringToSign en función de la regla de firma. |
StringToSign = HTTP-Verb + "\n" + Content-MD5 + "\n" + Content-Type + "\n" + Date + "\n" + CanonicalizedHeaders + CanonicalizedResource |
|
9. Calcular Signature. |
Signature = Base64( HMAC-SHA1( SecretAccessKeyID, UTF-8-Encoding-Of( StringToSign ) ) ) |
|
10. Autenticar la firma. |
Compruebe que el valor de Signature en el encabezado de autorización es el mismo que el valor de Signature calculado por el servidor. Si los dos valores son iguales, la verificación de la firma se realiza correctamente. Si los dos valores son diferentes, la verificación de firma falla. |