SimpleDB HMAC подписи - PullRequest
       3

SimpleDB HMAC подписи

2 голосов
/ 29 ноября 2010

Я пишу базовый клиент для доступа к сервису Amazon SimpleDB, и у меня возникают некоторые проблемы с пониманием логики подписания запроса.

Вот пример запроса:

https://sdb.amazonaws.com/?Action=PutAttributes
&DomainName=MyDomain
&ItemName=Item123
&Attribute.1.Name=Color&Attribute.1.Value=Blue
&Attribute.2.Name=Size&Attribute.2.Value=Med
&Attribute.3.Name=Price&Attribute.3.Value=0014.99
&Version=2009-04-15
&Timestamp=2010-01-25T15%3A01%3A28-07%3A00
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&AWSAccessKeyId=<Your AWS Access Key ID>
Following is the string to sign.

Сообщение для подписи:

GET\n
sdb.amazonaws.com\n
/\n
AWSAccessKeyId=<Your AWS Access Key ID>
&Action=PutAttributes
&Attribute.1.Name=Color
&Attribute.1.Value=Blue
&Attribute.2.Name=Size
&Attribute.2.Value=Med
&Attribute.3.Name=Price
&Attribute.3.Value=0014.99
&DomainName=MyDomain
&ItemName=Item123
&SignatureMethod=HmacSHA256
&SignatureVersion=2
&Timestamp=2010-01-25T15%3A01%3A28-07%3A00
&Version=2009-04-15

Ниже приводится подписанный запрос.

https://sdb.amazonaws.com/?Action=PutAttributes
&DomainName=MyDomain
&ItemName=Item123
&Attribute.1.Name=Color&Attribute.1.Value=Blue
&Attribute.2.Name=Size&Attribute.2.Value=Med
&Attribute.3.Name=Price&Attribute.3.Value=0014.99
&Version=2009-04-15
&Timestamp=2010-01-25T15%3A01%3A28-07%3A00
&Signature=<URLEncode(Base64Encode(Signature))>
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&AWSAccessKeyId=<Your AWS Access Key ID>

Я не получаю сообщение для подписи.Почему я не понимаю?ну, порядок параметров все меняется между запросом и сообщением для подписи.В примере показано, что, возможно, параметры упорядочены в алфавитном порядке.

Кто-нибудь поиграл с SimpleDB, чтобы иметь возможность сказать мне, какая логика стоит за подписываемым сообщением, то есть порядок параметров и т. Д.быть очень конкретным здесь.

Ответы [ 2 ]

4 голосов
/ 29 ноября 2010

Чтобы ответить на мой собственный вопрос.

Ответ похоронен в документации.Я был прав, я должен сначала отсортировать параметры.

http://docs.amazonwebservices.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/index.html?Query_QueryAuth.html

1 голос
/ 29 ноября 2010

Для тех, кто читает этот вопрос позже, ниже приводится цитата из соответствующего раздела из документов. Этот раздел, похоже, исчез из документации SimpleDB, но все еще присутствует в документации SQS. Это все еще относится непосредственно к SimpleDB.

Ключевая проблема заключается в том, что необходимо правильно URL-кодировать все значения параметров HTTP.

  • Не кодируйте URL-адреса ни одного из зарезервированных символов, которые RFC 3986
    определяет.

  • Эти незарезервированные символы: A-Z, a-z, 0-9, дефис (-), подчеркивание (_), точка (.) И тильда (~).

  • Процентное кодирование всех других символов с% XY, где X и Y - шестнадцатеричные символы 0-9 и A-F в верхнем регистре.

  • Процентное кодирование расширенных символов UTF-8 в виде% XY% ZA

  • Процентное кодирование пробела в% 20 (а не +, как это делают обычные схемы кодирования).

Распространенной ошибкой является сбой кодирования символа звездочки (*), который может появляться как в значениях данных, так и в SelectExpressions.

...