Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2022-11-07 GMT+08:00

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 el 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). El AK y el SK se usan juntos para obtener una firma cifrada a una solicitud. Ejamplo de formato: HCY8BGCN1YM5ZWYOK1MH
  • SK: clave de acceso secreta, que se utiliza junto con el AK para firmar solicitudes, identificar un remitente de solicitud e impedir que la solicitud sea modificada. Ejemplo de formato: 9zYwf1uabSQY0JTnFqbUqG7vcfqYBaTdXde2GUcq

Un usuario puede obtener el AK y el SK de IAM. Para más detalles, consulte 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 un URL y Autenticación de la firma transportada en la tabla cargada a través de 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.

Tabla 1 Procedimiento de cálculo y verificación de firmas

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 el AK y el SK.

AK: ******

SK: ******

4. Calcular Signature.

Signature = Base64( HMAC-SHA1( SecretAccessKeyID, UTF-8-Encoding-Of( StringToSign ) ) )

5. Agregue un encabezado de firma y envíe 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. Reciba 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. Obtiene el SK basado en el AK en la solicitud.

Obtener el AK de la cabecera de autorización y obtener el 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. Autentica 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.