【问题标题】:How to limit MQTT user to only one topic如何将 MQTT 用户限制为一个主题
【发布时间】:2017-06-20 23:42:48
【问题描述】:

我正在寻找一种方法来限制用户仅访问专用主题,例如:

user1 应该只能访问 user1/# 主题, 所以他可以订阅/发布 user1/sensor/1user1/conf/mode 但不能订阅/发布 user2/sensor/2 等。

类似地,user2 应该只能访问具有所有子主题的 user2/#

我可以通过使用 ACL 设置在 eMQTT 代理中执行此操作,但在 RabbitMQ 中找不到类似的。我已经在我的项目中使用了 AMQP,所以我想避免安装额外的 eMQTT 代理,尤其是当 RabbitMQ 可以支持 MQTT 时。

【问题讨论】:

    标签: rabbitmq mqtt


    【解决方案1】:

    据我所知,基于主题的身份验证是 RabbitMQ 正在进行的一项工作。查看这两个讨论以了解更多背景信息:

    https://github.com/rabbitmq/rabbitmq-server/issues/505

    https://github.com/rabbitmq/rabbitmq-mqtt/issues/95

    看起来它将包含在未来的版本中,但从更改日志的快速浏览来看,它似乎尚未实施。

    我没用过,但 Antione Galataud 的主题授权插件看起来可能会为您提供临时解决方案,直到官方存在:https://antoine-galataud.github.io/messaging/rabbitmq/mqtt/stomp/authorization/2015/10/15/rabbit-topic-auth.html

    【讨论】:

      【解决方案2】:

      我们已经实施了它,并将其投入生产。我们使用 IBM IMA 消息代理,在主题中有 {groupId} 占位符。这个 {groupId} 您可以在 IMA 中与外部 LDAP 链接。

      我会建议使用 RabbitMQ 代理文档并检查他们支持的安全功能。

      【讨论】:

        猜你喜欢
        • 2020-07-25
        • 2018-08-14
        • 2021-02-15
        • 1970-01-01
        • 1970-01-01
        • 2020-10-08
        • 1970-01-01
        • 2015-10-30
        • 2017-03-20
        相关资源
        最近更新 更多