Мультиплексирование трансляции протокола IoT Azure через пограничный шлюз - PullRequest
0 голосов
/ 19 марта 2019

В среде Azure Internet of Things при попытке подключения любых устройств, которые не поддерживают использование эталонной архитектуры Microsoft рекомендуется преобразование протокола .

Я реализовал шлюз трансляции, который мультиплексирует соединения и функционирует аналогично этой реализации , которая использует политику доступа «подключение устройства» для отправки сообщений в Cloud IoT Hub как любое устройство через один AMQP подключение. Например, сообщения отправляются по следующей ссылке '/devices/' + deviceIdentifier + '/messages/events';

Это полностью функционально для соединения, образованного device -> my middleware -> Cloud IoT Hub, и для обратного направления. Я хотел бы реализовать то же самое с введением прозрачного шлюза, то есть device -> my middleware -> Edge IoT Hub -> Cloud IoT Hub

Моя проблема возникает из-за того, что Edge Hub, по-видимому, не принимает ключ политики доступа "подключение устройства".

В качестве аутентификации я создаю SharedAccessSignature, как видно из примера репозитория и ниже, однако, насколько я могу судить, в отличие от SharedAccessKeyAuthenticationProvider.fromConnectionString, нет способа указать gatewayHostName.

this.sas = SharedAccessSignature.create(
    encodeURIComponent(this.endpoint), this.keyName, this.key,
    Math.ceil((Date.now() / 1000) + this.KEY_TIMEOUT)
);

Короче говоря, я пытаюсь, чтобы мое промежуточное ПО "олицетворяло" любое из устройств в концентраторе, через одно соединение TLS, используя ключ политики доступа "соединение устройства", через прозрачный пограничный шлюз IoT, однако я вижу, нет места для указания параметра gatewayHostName для SharedAccessSignature или для поиска способа поиска и настройки общих политик доступа уровня IoT на концентраторе IoT Edge.

...