0

我已经通过 Azure IoT DPS 自动配置了一堆 IoT 设备。这些设备已在我的 IoT 中心注册。所有设备都具有 X.509 证书身份验证。

我现在要做的是向设备发送消息。所有证书都可用,我可以使用 DeviceClient 连接到集线器上的设备。这是我正在使用的 Azure IoT Java 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 设备。在连接字符串中,我使用了来自集线器的共享访问策略中的共享访问密钥,但出现异常:

未经授权:IotHub 'yyy' 上的设备 'xxx' 没有 PrimaryKey 或 SecondaryKey

我认为这只有在我使用对称密钥注册设备时才有效。但是,这些设备无法通过 Azure DPS 自动注册。我只能使用 X.509 或 TPM 注册设备。

那么如何获得通过单个 AMQPS 连接连接多个 X.509 设备的技巧呢?

4

1 回答 1

0

适用于 Java 的 Azure IoT Hub SDK 似乎不支持 X.509 设备的多路复用。

您可以在 github ( https://github.com/Azure/azure-iot-sdk-java/issues ) 上发布对此功能的要求。

于 2018-07-03T07:33:01.533 回答