Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2022-11-07 GMT+08:00

Autenticação de assinatura de usuário

O OBS assina uma solicitação usando AK/SK. Quando um cliente está enviando uma solicitação ao OBS, o cabeçalho da mensagem deve conter o SK, a hora da solicitação, o tipo de solicitação e outras informações da assinatura.

  • AK: ID da chave de acesso, que é um identificador exclusivo associado a uma chave de acesso secreta (SK). O AK e o SK são usados juntos para obter uma assinatura criptografada para uma solicitação. Exemplo de formato: HCY8BGCN1YM5ZWYOK1MH
  • SK: chave de acesso secreta, que é usada em conjunto com o AK para assinar solicitações, identificar o remetente da solicitação e impedir que a solicitação seja modificada. Exemplo de formato: 9zYwf1uabSQY0JTnFqbUqG7vcfqYBaTdXde2GUcq

Um usuário pode obter o AK e o SK do IAM. Para mais detalhes, consulte Obtenção de chaves de acesso (AK/SK).

O OBS fornece três métodos de cálculo de assinatura com base em cenários de aplicativos: Autenticação de assinatura em um cabeçalho, Autenticação de assinatura em um URL, e Autenticação de assinatura realizada na tabela carregada por meio de um navegador.

O SDK fornecido pelo OBS integra o cálculo da assinatura. É recomendável usar o SDK para desenvolvimento.

Tabela 1 mostra o processo de verificação de assinatura do usuário no qual uma assinatura é transportada em um cabeçalho. Para obter detalhes sobre os parâmetros e exemplos de código de autenticação de assinatura em um cabeçalho, consulte Autenticação de assinatura em um cabeçalho.

Tabela 1 Processo de cálculo e verificação da assinatura

Procedimento

Exemplo

Cálculo de assinatura

1. Construir uma mensagem HTTP.

PUT /object HTTP/1.1

Anfitrião: bucket.obs.region.myhuaweicloud.com

Data: Tue, 04 Apr 2019 06:54:59 GMT

Tipo de conteúdo: text/plain

Conteúdo-Comprimento: 5913

2. Calcule StringToSign com base na regra de assinatura.

StringToSign = HTTP-Verb + "\n" + Content-MD5 + "\n" + Content-Type + "\n" + Date + "\n" + CanonicalizedHeaders + CanonicalizedResource

3. Prepare o AK e o SK.

AK: ******

SK: ******

4. Calcule Signature.

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

5. Adicione um cabeçalho de assinatura e envie a solicitação para o OBS.

PUT /object HTTP/1.1

Anfitrião: bucket.obs.region.myhuaweicloud.com

Data: Tue, 04 Apr 2019 06:54:59 GMT

Tipo de conteúdo: text/plain

Conteúdo-Comprimento: 5913

Autorização: OBS AccessKeyID:Signature

Autenticação de assinatura

6. Receber a mensagem HTTP.

PUT /object HTTP/1.1

Anfitrião: bucket.obs.region.myhuaweicloud.com

Data: Tue, 04 Apr 2019 06:54:59 GMT

Tipo de conteúdo: text/plain

Conteúdo-Comprimento: 5913

Autorização: OBS AccessKeyID:Signature

7. Obtenha o SK com base no AK na solicitação.

Obtenha o AK do cabeçalho de autorização e obtenha o SK do usuário do IAM.

8. Calcule o StringToSign com base na regra de assinatura.

StringToSign = HTTP-Verb + "\n" + Content-MD5 + "\n" + Content-Type + "\n" + Date + "\n" + CanonicalizedHeaders + CanonicalizedResource

9. Calcule Signature.

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

10. Autentique a assinatura.

Verifique se o valor de Signature no cabeçalho de autorização é o mesmo que o valor de Signature calculado pelo servidor.

Se os dois valores forem os mesmos, a verificação de assinatura é sucedida.

Se os dois valores forem diferentes, a verificação da assinatura falhará.