是否可以使用设备主键向Azure IOTHub设备发送D2C请求,而不使用设备ID或设备主机名?

w3nuxt5m  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(91)

我想使用设备主键向Azure IOTHub设备发送D2C请求,该设备主键存在于IOTHub中注册的每个设备的属性中,而不提及设备ID或设备主机名。
我尝试在Azure SDK的帮助下使用dotnetcore中的设备主键向Azure IoT Hub发送请求,而不使用设备ID或设备主机名,但我无法做到这一点。如果有人知道怎么做就告诉我。

eit6fx6z

eit6fx6z1#

根据您的问题,您似乎希望使用共享访问签名(SAS)令牌连接您的设备。SDK将对这个过程进行一点抽象,但下面是水下发生的事情:
SAS创建过程采用以下参数:
| 参数|注意|例如|
| --|--|--|
| 资源URI| IoT Hub ID和设备ID的组合|myiothub.azure-devices.net/devices/mydevice|
| 签名(主要或次要)|这些是与设备关联的密钥。这些不保证在设备之间是唯一的。|wc5FLbNggLJBY/sdGR/mC+XLPQZmjAOiX1TTDXhZl84=|
| 到期时间|这指示生成的SAS令牌的到期日期|1703492085|
| policyName|设备SAS令牌为空||
所有这些都是必需的,但SDK通常会处理过期时间。policyName仅用于IoT Hub级别的SAS令牌,与设备无关。所以简而言之,不,你不能只使用主键。您还需要提供设备ID。
重要️提示:两个对称共享访问密钥(主密钥和辅助密钥)都不能保证在设备之间是唯一的。它们不是唯一标识符的替代品。设备ID是IoT Hub中设备的唯一标识符。

备选:

如果由于某种原因阻止您使用设备ID,您可以查看Azure设备设置服务,但是在对称密钥证明的情况下,您仍然需要提供注册ID,这将返回设备ID作为结果。如果您使用的是X.509证书,则可以使用证书指纹而不是设备ID。

相关问题