AWS Signature v4 для HTTP-запроса к AWS IoT - PullRequest
0 голосов
/ 13 апреля 2019

У меня есть проект IoTs, связанный с AWS.В моем проекте мое устройство будет передавать необработанные данные в облако, а затем облако будет отправлять расшифрованную информацию в формате JSON в AWS IoT.Облако поддерживает протокол HTTP с использованием REST API как для восходящей / нисходящей линии связи, так что я думаю, что он будет работать с AWS IoT как [ссылка]: https://docs.aws.amazon.com/iot/latest/developerguide/protocols.html#http

Я хочу отправить HTTP-запрос, используя AWS Sig v4 сАутентификация в форме ниже:

AWS4-HMAC-SHA256 Credential = {1} / {2} / {3} / {4} / aws4_request, SignedHeaders = тип содержимого; хост; x-amz-date, Signature = {5}

Однако я не знаю, как создать подпись {5}.Я не могу использовать скрипты для генерации, потому что мое облако не поддерживает запущенные скрипты.Он содержит только несколько блоков заголовков и значений, которые я могу оставить в Авторизации и т. Д. (См. Скриншот здесь https://imgur.com/RI815EZ) Любой совет? Заранее спасибо,

1 Ответ

0 голосов
/ 16 апреля 2019

Доступ к брокеру сообщений IoT AWS через HTTP не использует AWS Sig v4 для аутентификации. Вместо этого он использует взаимную аутентификацию TLS, которая требует настройки сертификатов и ключей для аутентификации посредника сообщений.

Если предположить, что ваш облачный провайдер, не являющийся AWS, не поддерживает взаимную аутентификацию TLS (или альтернативу MQTT через веб-сокеты ), то вам остается добавить слой косвенности, который отправляет JSON в AWS IoT.

Один из способов сделать это - реализовать в AWS лямбду, которая берет ваш JSON и отправляет его брокеру IoT AWS. Лямбда позаботится об аутентификации с помощью AWS IoT. AWS SDK обычно обрабатывает эту аутентификацию для вас.

В Lambda должна быть реализована аутентификация, которую поддерживает ваш облачный провайдер, не являющийся AWS (например, он может использовать базовую аутентификацию).

...