有没有办法限制设备访问卡车发布的消息?换句话说,让我们假设truck1发布以下消息(truck1_msg1,truck1_msg2,truck1_msg)我希望App1只能订阅和收听来自truck1的消息,而且永远无法订阅并查看其他卡车发布的任何其他消息。可能吗?你能让我告诉我怎么办?
注意:所有卡车和应用程序都连接到同一个经纪人,并假设它是Mosquitto
答案 0 :(得分:1)
大多数MQTT代理支持给定用户的主题级ACL,因此假设每辆卡车都将消息发布到不同的主题(或主题前缀,因为ACL倾向于支持通配符),并且每辆卡车和应用程序都拥有自己的用户,您应该能够安排您需要的任何访问隔离。
每个代理都有不同的机制来管理这些ACL,例如这里有mosquitto的详细信息。
mosquitto的ACL格式的文档可以在这里的手册页中找到:https://mosquitto.org/man/mosquitto-conf-5.html
使用acl_file
选项将一个ACL文件添加到mosquitto.conf:
acl_file /path/to/acl/file
ACL文件格式如下所示:
user <username>
topic [read|write|readwrite] <topic>
每个用户可以有多个主题行。
手册页中还提供了有关如何启用用户身份验证的详细信息。