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