Cálculo da assinatura HMAC-SHA para o Amazon SWF - Amazon Simple Workflow Service

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

Toda solicitação ao Amazon SWF deve ser autenticada. Os SDKs do AWS assinam automaticamente suas solicitações e gerenciam sua autenticação baseada em token. 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. Para obter a implementação AWS SDK for Java da assinatura da Versão 3, consulte a classe AWSSigner.java.

Criação de uma assinatura de solicitação

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

É possível usar SHA1 ou SHA256 para assinar 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

  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.

    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.

    2. 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.

    3. 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
    4. Insira uma nova linha (U+000A) após cada string convertida, incluindo a última string.

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

  2. Crie um valor "string-to-sign" 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.

    • O corpo da solicitação, não seguido por uma nova linha.

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

  4. Calcule e codifique em Base64 o HMAC-SHA usando um resumo SHA256 ou SHA1 (dependendo do método que você usou) do valor resultante da etapa anterior e da chave de acesso secreta temporária do AWS Security Token Service usando a ação da API GetSessionToken.

    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 outros serviços AWS, consulte Serviços do AWS que funcionam com o IAM no Guia do usuário do IAM.

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

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