如何限制用户访问发布的消息

问题描述:

我有四辆卡车连接到一个mqtt经纪人,我有四个应用程序/设备。卡车发布消息和应用程序订阅这些消息如何限制用户访问发布的消息

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

:所有的卡车和应用程序连接到同一个经纪人,并让我们假设它是Mosquitto

大多数MQTT代理支持给定用户的主题级别的ACL所以假设每辆卡车消息发布到独特的主题(或主题前缀,因为ACL往往支持通配符),每个卡车和应用都有自己的用户,因此您应该能够安排所需的任何访问隔离。

每个代理有不同的管理这些ACL的机制,例如这里是蚊子的详细信息。

为mosquitto的ACL格式的文档中可以找到它的人页面在这里:https://mosquitto.org/man/mosquitto-conf-5.html

您的ACL文件添加到mosquitto.conf与acl_file选项:

acl_file /path/to/acl/file 

ACL文件格式看起来像这样:

user <username> 
topic [read|write|readwrite] <topic> 

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

如何启用用户身份验证的详细信息也位于手册页中。

+0

任何特定的投票原因,这回答了这个问题? – hardillb