

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Cálculo da assinatura HMAC-SHA para o Amazon SWF
<a name="HMACAuth-swf"></a>

Toda solicitação ao Amazon SWF deve ser autenticada. Eles assinam AWS SDKs automaticamente suas solicitações e gerenciam sua autenticação baseada em tokens. No entanto, se você quiser escrever suas próprias solicitações HTTP `POST`, precisará criar um valor `x-amzn-authorization` para o conteúdo HTTP `POST Header` como parte da autenticação da sua solicitação.

Para obter mais informações sobre cabeçalhos de formatação, consulte [Conteúdo de cabeçalho HTTP](UsingJSON-swf.md#HTTPHeader). Para a AWS SDK para Java implementação da assinatura da AWS versão 3, consulte a classe [ AWSSigner.java.](https://github.com/aws/aws-sdk-java/blob/master/aws-java-sdk-core/src/main/java/com/amazonaws/auth/AWS3Signer.java)

## Criação de uma assinatura de solicitação
<a name="AuthProcess"></a>

Antes de criar uma assinatura de solicitação HMAC-SHA, você deve obter suas credenciais da AWS (o ID de chave de acesso e a chave secreta).

**Importante**  
Você pode usar um SHA1 ou SHA256 para assinar suas solicitações. No entanto, certifique-se de usar o mesmo método por todo o processo de assinatura. O método escolhido deve corresponder ao valor do nome `Algorithm` no cabeçalho HTTP. 

### Para criar a assinatura de solicitação
<a name="swf-create-request-signature-steps"></a>

1. Crie uma forma canônica dos cabeçalhos de solicitação HTTP. A forma canônica do cabeçalho HTTP inclui o seguinte:
   + `host`
   + Qualquer elemento de cabeçalho que comece com `x-amz-`

   Para obter mais informações sobre os cabeçalhos incluídos, consulte [Conteúdo de cabeçalho HTTP](UsingJSON-swf.md#HTTPHeader).

   1. Para cada par de nome/valor de cabeçalho, converta o nome do cabeçalho (mas não o valor do cabeçalho) em letras minúsculas.

   1. Construa um mapa do nome do cabeçalho para valores de cabeçalho separados por vírgula.

      ```
      x-amz-example: value1
      x-amz-example: value2  =>  x-amz-example:value1,value2
      ```

      Para obter mais informações, consulte a [Seção 4.2 da RFC 2616](http://tools.ietf.org/html/rfc2616).

   1. Converta cada par de nome/valor de cabeçalho em uma string no formato `headerName:headerValue`. Remova todos os espaços em branco do início e do final de `headerName` e `headerValue`, sem espaços em cada lado dos dois pontos.

      ```
      x-amz-example1:value1,value2
      x-amz-example2:value3
      ```

   1. Insira uma nova linha (`U+000A`) após cada string convertida, incluindo a última string.

   1. Classifique a coleção de strings convertidas em ordem alfabética, por nome de cabeçalho.

1. Crie um string-to-sign valor que inclua os seguintes itens:
   + Linha `1`: o método HTTP (`POST`), seguido por uma nova linha.
   + Linha `2`: o URI da solicitação (`/`), seguido por uma nova linha.
   + Linha `3`: uma string vazia seguida por uma nova linha.
**nota**  
Normalmente, a string de consulta aparece aqui, mas o Amazon SWF não usa uma string de consulta.
   + Linhas `4–n`: a string que representa os cabeçalhos de solicitação canônicos que você calculou na Etapa 1, seguida por uma nova linha. Essa nova linha cria uma linha em branco entre os cabeçalhos e o corpo da solicitação HTTP. Para obter mais informações, consulte [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html).
   + O corpo da solicitação, *não* seguido por uma nova linha.

1. Calcule o SHA1 resumo SHA256 ou resumo do string-to-sign valor. Use o mesmo método SHA por todo o processo.

1. Compute e codifique em Base64 o HMAC-SHA usando um SHA256 ou um SHA1 resumo (dependendo do método usado) do valor resultante da etapa anterior e da chave de acesso secreta temporária do Security Token Service usando a ação da AWS API. `[GetSessionToken](https://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingSessionTokens.html)`
**nota**  
O Amazon SWF espera um sinal de igual (`=`) no final do valor HMAC-SHA codificado em Base64. Se a sua rotina de codificação em Base64 não incluir o sinal de igual acrescentado, acrescente um ao final do valor.

   Para obter mais informações sobre o uso de credenciais de segurança temporárias com o Amazon SWF e AWS outros serviços, [AWS consulte Serviços que funcionam com o IAM no Guia](https://docs.aws.amazon.com/STS/latest/UsingSTS/UsingTokens.html) do usuário *do IAM*.

1. Coloque o valor resultante como o valor do nome `Signature` no cabeçalho `x-amzn-authorization` da solicitação HTTP para o Amazon SWF.

1. O Amazon SWF verifica a solicitação e executa a operação especificada.