Azure IoT Hub Java SDK, подключение устройств X.509, мультиплексированных через одно соединение AMQP
Я автоматически подготовил несколько устройств IoT через Azure IoT DPS. Устройства зарегистрированы на моем IoT-хабе. Все устройства имеют сертификат аутентификации X.509.
Теперь я хочу отправлять сообщения на устройства. Все сертификаты доступны, и я могу подключиться с DeviceClient к устройству в концентраторе. Это метод Java SDK IoT Azure, который я использую:
public static DeviceClient createFromSecurityProvider(String uri, String deviceId, SecurityProvider securityProvider, IotHubClientProtocol protocol) throws URISyntaxException, IOException
Он принимает SecurityProviderX509Cert в качестве параметра.
Однако каждый DeviceClient имеет свое собственное физическое соединение. Я хочу использовать мультиплексирование AMQP с помощью этого конструктора:
public DeviceClient(String connString, TransportClient transportClient) throws URISyntaxException
Это не работает с устройствами X.509. В строке подключения я использовал ключ общего доступа из моей политики общего доступа из хаба, но получил исключение:
Несанкционировано: устройство 'xxx' на IotHub 'yyy' не имеет PrimaryKey или SecondaryKey
Я предполагаю, что это будет работать, только если я зарегистрирую устройство с симметричными ключами. Однако эти устройства не могут быть зарегистрированы автоматически через Azure DPS. Я могу регистрировать только устройства с X.509 или TPM.
Итак, как мне найти способ подключить несколько устройств X.509 через одно соединение AMQPS?
1 ответ
Похоже, что Azure IoT Hub SDK для Java не поддерживает мультиплексирование для устройств X.509.
Вы можете опубликовать требование для этой функции на github ( https://github.com/Azure/azure-iot-sdk-java/issues).