Создание необходимого ключа SAS для связи с Azure IoT-Hub

В настоящее время мы используем Azure IoT-Hub для получения данных с наших устройств IoT. В настоящее время они используют REST API для отправки своих данных, поэтому они будут отправлять данные по адресу, например https://<iothubname>.azure-devices.net/devices/<deviceID>/messages/events.

с заменой <iothubname> и <deviceID> их конкретными определениями. Для авторизации я добавил поле "Authorization" в заголовок и вставил токен SAS устройства, созданный с помощью подключаемого модуля Azure IoT для VS Code. Пока это работает, но теперь я хотел бы создать токен самостоятельно для дальнейшей автоматизации.

MS объясняет, как создать токен на их сайте, но у меня это не работает (я пробовал реализацию на python).

Для URI я бы использовал указанный выше, для ключа я бы использовал ключ от устройства в IoT-Hub, но я не уверен, что использовать для policy_name. Я попробовал «iothubowner» по умолчанию и имя устройства.

Кроме того, структура созданного ключа SAS отличается от структуры, созданной подключаемым модулем Azure IoT.

Первая содержит части sr, sig, se и skn, более поздняя sr, sig и se

В этом вопросе неясно, пытаетесь ли вы создать токен SAS для устройства или для службы. Оба требуют разных значений для политики и resourceURI.

Matthijs van der Veer 21.03.2022 21:08

Устройство, я обновил вопрос соответственно.

MichaelA 22.03.2022 09:24
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
2
42
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы используете пример Python, на который вы ссылались, вот параметры, которые вам нужно использовать:

  • УРИ: <iothubname>.azure-devices.net/devices/<deviceID>/messages/events?api-version=2020-03-13

Не указывайте протокол, указывайте версию API

  • ключ: <primary/secondary key>
  • имя_политики: None

Вам не нужно имя политики при подключении в качестве устройства |

Это создаст правильную подпись SharedAccesSignature, которую вы можете использовать для POST для https://<iothubname>.azure-devices.net/devices/<deviceID>/messages/events?api-version=2020-03-13

спасибо, отлично работает. Я чувствую себя немного глупо теперь, когда я пропустил опцию policy_name is None в коде, хотя...

MichaelA 23.03.2022 12:59

Другие вопросы по теме