Может ли нижестоящее устройство подключаться с использованием токена SAS, подписанного политикой общего доступа? - PullRequest
0 голосов
/ 12 октября 2018

При использовании Azure IoT Edge в качестве прозрачного шлюза, могут ли последующие устройства проходить проверку подлинности с использованием токенов SAS с использованием ключей политики общего доступа?(устройство, iothubowner и т. д.?).Нам удалось успешно подключиться с помощью токенов SAS, подписанных первичными ключами устройства, но попытка сделать это с помощью ключей политики общего доступа, похоже, не работает.

Примечание. Устройства используют MQTT

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Я не думаю, что скрипт (который является сценарием EventHub) создает правильные токены SAS для IoT Hub.Самый простой способ сделать это - это сделать из интерфейса командной строки Azure Cloud (на портале Azure нажмите кнопку «> _» вверху верхней навигационной панели .. затем вы можете выполнить эту команду:

az iot hub generate-sas-token -n [ваше имя iothub] --policy device --key-type primary --duration [продолжительность в секундах, в течение которой токен должен быть действительным]

Попробуйте использовать этот SASтокен. Я протестировал это сегодня вечером с клиентом python paho.mqtt, и он работал нормально. Он подключился к IoT Edge и успешно отправил сообщения как модулю, так и IoT Hub.

0 голосов
/ 16 октября 2018

Да, это должно работать, если устройство не является дочерним устройством пограничного устройства в IoTHub.Посмотрите эти ссылки, чтобы узнать больше о том, как добавить устройства в качестве дочернего устройства пограничного устройства https://aka.ms/exofdocs и https://aka.ms/iot-edge-offline.

Это потому, что, если конечное устройство является дочерним устройством,EdgeHub попытается аутентифицировать его локально, и для этого он использует только ключ устройства.

Если конечное устройство не является дочерним устройством пограничного устройства, вы должны иметь возможность подключиться к EdgeHub с помощью ключа области действия устройства / iothub, поскольку тогда EdgeHub выполнит проверку подлинности устройства с помощью IoTHub.Обратите внимание, что строка подключения должна иметь формат: HostName = .azure-devices.net; DeviceId =; SharedAccessKeyName =; SharedAccessKey =; GatewayHostName =

...