Я автоматически подготовил группу устройств IoT через Azure IoT DPS. Устройства зарегистрированы на моем IoT-хабе. Все устройства имеют сертификат аутентификации X.509.
Теперь я хочу отправлять сообщения на устройства. Все сертификаты доступны, и я могу подключиться с DeviceClient к устройству в концентраторе. Это метод используемого в Java Azure IoT SDK:
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?