【问题标题】:Isolated topic namespace for MQTTMQTT 的独立主题命名空间
【发布时间】:2022-07-19 13:06:08
【问题描述】:

考虑到 MQTT 的发布/订阅行为,主题命名空间不是孤立的,任何用户都可以访问其他用户在主题上的数据。 我见过像 flespi 这样的服务声称它们提供隔离的名称空间,但其中一些使用容器来隔离用户...... 是否可以修改 MQTT 代理,例如蚊子,为了那个目的?还是有这样的开源经纪人?

【问题讨论】:

  • mount_point 选项可能满足您的需求(但您需要为每个“命名空间”使用不同的侦听器/端口)。或者,这可以作为一个插件来实现(修改主题名称;example that modifies message body)。但是,您正在尝试的是在 MQTT Spec 之外,所以我不希望它成为一个常见功能。

标签: mqtt iot mosquitto broker


【解决方案1】:

Mosquitto 可以根据认证用户名设置对主题的访问控制。这允许管理员限制对主题的访问,并限制哪些客户端可以订阅、发布或接收特定主题的消息。这记录在Mosquitto’s documentation 中。

为了获得更大的灵活性,您还可以使用dynamic security pluginmosquitto-go-auth plugin,它允许您使用各种不同的数据源进行授权和ACL 配置。

【讨论】:

  • 感谢您抽出宝贵时间...但我要寻找的不是限制对主题的访问。我希望客户能够订阅相同的主题,但只接收他们发布的消息。就像用户 A 和 B 订阅了主题 C 一样,B 不会收到 A 在主题 C 上发布的消息,反之亦然。我不知道是否可以识别出哪个用户发布了消息,因为显然发布 MQTT 包中没有发送令牌...
  • 这通常通过在主题名称中嵌入用户名或客户端 ID 来完成。如果您需要订阅者查看从设备发送到这些主题的所有消息,则该设备使用通配符主题名称,并确保您的 ACL 仅允许访问该订阅者。不过,我不得不想知道你所描述的重点是什么。如果他们无法看到彼此的消息,为什么他们都使用相同的主题名称很重要?
  • 重点是让每个用户毫无问题地选择他们选择的主题,这样他们就不需要关注限制......
猜你喜欢
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多