我想了解在通过websockets将MQTT代理映射到浏览器时保护Mosquitto的最佳方法.我正在使用Lighttpd作为websocket层,根据这篇博客文章.
我的用例是单向的.我只需要向浏览器发送消息.因此,我可以使用ACL来防止恶意分子发布消息.
但是,我怎样才能阻止歹徒订阅,或者更好的是,首先建立连接?
我知道我可以使用ID/pw进行MQTT连接.所以,我猜我的应用服务器可以在用户自己验证后将凭据发送到浏览器,然后Javascript客户端可以使用这些凭据来建立MQTT/WS连接.但是,如果我有数千个客户端,我该如何管理ID和密码?或者我应该只有一些ID并定期回收它们?我是否应该根据mosquitto-auth-plug将此位移至Redis或类似位置?
通过保护webserver层中的连接,我想知道是否有更好的方法.Lighttpd 的mod_secdownload插件似乎提供了一个模型,可以根据共享密钥(保留服务器端)和时间戳的哈希动态生成URL.用户通过身份验证后,应用服务器将向下传递此URL,然后客户端将使用它来建立到MQTT代理的连接.过了一会儿,URL将过期,Javascript客户端可以捕获此异常,如果用户仍然经过身份验证,则可以请求新的WS连接URL.这与许多API身份验证类似.它有价值吗?
有更好的方法吗?
谢谢,J.
现在您可以使用libwebsockets支持构建mosquitto,然后为TLS支持创建X.509证书,而不是Lighttpd方法.
在jpmens的博客文章中,您可以找到一步一步的程序,还可以找到通过Websockets连接Mosquitto代理的Paho MQTT JavaScript客户端. http://jpmens.net/2014/07/03/the-mosquitto-mqtt-broker-gets-websockets-support/