在将Azure IoT Edge用作透明网关的同时,下游设备是否可以使用共享访问策略密钥使用SAS令牌进行身份验证? (设备,iothubowner等?)。我们已经能够使用由设备主键签名的SAS令牌成功连接,但是尝试使用“共享访问策略”键进行连接似乎无效。
注意:设备正在使用MQTT
答案 0 :(得分:0)
是的,如果该设备不是IoTHub中边缘设备的子设备,则此方法应该起作用。查看这些链接,以了解有关如何将设备添加为边缘设备https://aka.ms/exofdocs和https://aka.ms/iot-edge-offline的子设备的更多信息。
这是因为,如果叶子设备是子设备,则EdgeHub将尝试在本地对其进行身份验证,并且它仅使用设备的密钥。
如果叶子设备不是边缘设备的子设备,则您应该能够使用设备/ iothub作用域键连接到EdgeHub,因为EdgeHub随后将使用IoTHub对设备进行身份验证。请注意,连接字符串应采用以下格式: HostName = .azure-devices.net; DeviceId =; SharedAccessKeyName =; SharedAccessKey =; GatewayHostName =
答案 1 :(得分:0)
我认为该脚本(这是一个eventhub脚本)无法为IoT中心创建正确的SAS令牌。最简单的方法是从Azure Cloud CLI进行操作(在azure门户中,单击顶部导航栏中的“> _”按钮。然后,您可以运行以下命令:
az iot集线器generate-sas-token -n [您的iothub名称] –策略设备--key-type primary –duration [您希望令牌有效的持续时间,以秒为单位]
尝试使用该SAS令牌。我今晚使用python paho.mqtt客户端对此进行了测试,并且工作正常。它连接到IoT Edge,并成功将消息发送到模块和IoT中心。