Почему Amazon требует лексикографического упорядочения параметров строки запроса при подписании запросов?

Код заказа параметров запроса AWS можно увидеть в их репозитории на Github.

Я подумал о том, почему они могут потребовать от клиентов API подписывать запросы:

  • промежуточные прокси-серверы могут канонизировать URL-адреса и испортить исходный порядок строк запроса.
  • В URI RFC абсолютно ничего не указано о порядке параметров строки запроса или о том, что его следует сохранить.

Я предполагаю, что из-за RFC Amazon посчитала, что будет перестраховываться и потребует от обеих сторон подписать запрос ORDERED.

Однако я хотел бы получить последнее/официальное слово по этому поводу. Наверняка у разработчиков была веская причина для этого требования.


person opyate    schedule 10.09.2013    source источник


Ответы (1)


Подпись запроса гарантирует, что отправитель и получатель могут договориться о том, что именно было отправлено в запросе, и что никакие посредники не вмешались в него.

Многие части HTTP-запроса могут изменяться без изменения семантики запроса. Например, заголовки HTTP могут быть переупорядочены, как и параметры запроса, как вы правильно указали.

Таким образом, запрос должен быть канонизирован в форме, которая устраняет эти двусмысленности и которую обе стороны будут использовать для подписи. запрос. В противном случае каждая сторона может генерировать разные подписи для одного и того же запроса. Упорядочивание параметров запроса — лишь часть этого процесса. Amazon описывает свой процесс канонизации и мотивацию в документах. для формата подписи AWS V4.

person Greg Kempe    schedule 11.09.2013