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
-
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.
-
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.
-
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
. -
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 deheaderName
eheaderValue
, sem espaços em cada lado dos dois pontos.x-amz-example1:value1,value2 x-amz-example2:value3
-
Insira uma nova linha (
U+000A
) após cada string convertida, incluindo a última string. -
Classifique a coleção de strings convertidas em ordem alfabética, por nome de cabeçalho.
-
-
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.
-
-
Calcule o resumo SHA256 ou SHA1 do valor de "string-to-sign". Use o mesmo método SHA por todo o processo.
-
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.
-
Coloque o valor resultante como o valor do nome
Signature
no cabeçalhox-amzn-authorization
da solicitação HTTP para o Amazon SWF. -
O Amazon SWF verifica a solicitação e executa a operação especificada.