如何限制订阅者对已发布消息的访问

时间:2017-08-17 19:57:09

标签: mqtt mosquitto

我有四辆卡车连接到mqtt经纪人,我有四个应用程序/设备。卡车发布消息,应用程序订阅这些消息

有没有办法限制设备访问卡车发布的消息?换句话说,让我们假设truck1发布以下消息(truck1_msg1,truck1_msg2,truck1_msg)我希望App1只能订阅和收听来自truck1的消息,而且永远无法订阅并查看其他卡车发布的任何其他消息。可能吗?你能让我告诉我怎么办?

注意:所有卡车和应用程序都连接到同一个经纪人,并假设它是Mosquitto

1 个答案:

答案 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>

每个用户可以有多个主题行。

手册页中还提供了有关如何启用用户身份验证的详细信息。