问题描述
因为IoT中心不是代理,所以我想使用Raspberry Pi作为可以与设备进行通信的代理,并且Raspberry Pi将收到的消息发送到IoT中心。 在Raspberry上安装Mosquitto之后,这是我的配置mosquitto文件:
connection iothub-bridge
log_type all
address your hub.azure-devices.net:8883
remote_username your hub.azure-devices.net/your device
remote_password sas token
remote_clientid your device
bridge_cafile /home/pi/baltimore.pem
try_private false
cleansession true
start_type automatic
bridge_insecure false
bridge_protocol_version mqttv311
bridge_tls_version tlsv1.2
notifications false
notification_topic events/
topic devices/Your device/messages/events/
问题是SAS令牌已使用了几个小时,并且将过期,我希望有一个替代SAS令牌的解决方案,并且可以永久使用。
解决方法
很高兴您喜欢我的博客文章:-)。
正如Matthijs所说,在SAS令牌生成中,设备浏览器或类似资源的最长期限为365天,但是使用Azure IoT CLI,您可以走得更长。例如,此命令创建一个10年(315,360,000秒)的
az iot集线器generate-sas-token -n [您的iot集线器] -d [您的设备ID] --du 315360000
正如Matthijs所说,您不能生成永不过期的。我尝试生成一个100年(3,153,600,000秒),它似乎奏效了
我要警告的是,我实际上并没有尝试将上述设备连接到IoT中心。
话虽如此,拥有SAS令牌这么长时间不是一个好的安全实践,但是只要您清楚所涉及的风险,我认为这在技术上是可行的。