Подписанные запросы AWS не работают в Google App Engine с использованием java.net.URL - PullRequest
1 голос
/ 04 марта 2012

All,

Я занимаюсь разработкой простого веб-приложения на Java с использованием инфраструктуры Play (v 1.2.4).Приложение выполняет подписанный запрос ItemLookup с помощью API рекламы продуктов Amazon.Я развертываю приложение в Google App Engine (GAE), в чем и заключается моя проблема.

Подробности: В локальном режиме / режиме тестирования подписанный запрос AWS отлично работает с использованием обоих apache.commons.httpclient и более простой java.net.URL.После развертывания в GAE и обнаружения того, что соединение HTTPClient не поддерживается из-за использования SocketConnection, я изменил вызовы AWS для использования java.net.URL .Запросы AWS ItemLookup не только продолжали работать в локальном режиме, но я больше не получал никаких исключений в Google App Engine (GAE).

Проблема: Однако проблема, с которой я столкнулся, заключается в том, чточто все мои запросы AWS ItemLookup возвращаются с сообщением о том, что подписанная подпись не соответствует ожидаемой AWS.См. Фактическое сообщение в конце этого вопроса.

Поэтому я довольно не уверен в том, что происходит.Я регистрирую запросы, которые выходят как из локального режима, так и из GAE, и формат подписанного URL-запроса не вызывает каких-либо проблем.Я проверил и дважды / трижды проверил;мои запросы отправляются с правильным ключом AWS.Эти вызовы работают с одинаковыми ключами в локальном режиме, поэтому не должны ли они работать и через GAE?Например, пример запроса на GAE (с удаленным ключом / тегом AWS):

    SIGNED REQUEST=http://ecs.amazonaws.com/onca/xml?AWSAccessKeyId=<removed>&AssociateTag=<removed>&ItemId=B0051VVOB2&Operation=ItemLookup&ResponseGroup=Large&Service=AWSECommerceService&Timestamp=2012-03-04T00%3A52%3A23Z&Version=2011-08-01&Signature=<removed>

Итак, я начинаю думать, что HmacSHA256 на GAE может работать некорректноили, может быть, мне нужно использовать другой алгоритм в GAE?

Возможно, я столкнулся с какой-то проблемой с использованием AWS в GAE?Я мог бы действительно помочь с этой проблемой.

Спасибо за вашу помощь.

Ошибка ответа ItemLookup (пример):

    <ItemLookupErrorResponse xmlns="http://ecs.amazonaws.com/doc/2011-08-01/">
    <Error>
    <Code>SignatureDoesNotMatch</Code>
    <Message>The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.</Message>
    </Error>
    <RequestID>aa42318e-9c2c-4f04-9905-670866223bc5</RequestID>
    </ItemLookupErrorResponse>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...