在Azure物联网环境中,尝试连接任何不支持使用Microsoft's reference architecture协议转换is recommended的设备时。
我已经实现了一个多路复用连接的转换网关,其功能类似于this implementation,该功能使用“设备连接”访问策略通过单个AMQP连接将消息作为任何设备发送到Cloud IoT中心。例如,通过以下链接'/devices/' + deviceIdentifier + '/messages/events';
这对于device -> my middleware -> Cloud IoT Hub
形成的连接和相反的方向都是完全有用的。我想通过引入透明网关device -> my middleware -> Edge IoT Hub -> Cloud IoT Hub
我的问题是由于Edge Hub似乎不接受“设备连接”访问策略密钥。
作为身份验证,我正在构建一个SharedAccessSignature
,如在示例存储库及以下示例中所示,但是据我所知,SharedAccessKeyAuthenticationProvider.fromConnectionString
与之不同,无法指定gatewayHostName。
this.sas = SharedAccessSignature.create(
encodeURIComponent(this.endpoint), this.keyName, this.key,
Math.ceil((Date.now() / 1000) + this.KEY_TIMEOUT)
);
简而言之,我试图让我的中间件通过透明的IoT Edge网关使用“设备连接”访问策略密钥通过单个TLS连接“模拟”集线器上的任何设备,但是我看到了没有地方可以在SharedAccessSignature上指定gatewayHostName
参数,也找不到在IoT Edge集线器上查找和配置IoT hub-level shared access policies的方法。