如何将MQTT用户限制为仅一个主题

时间:2017-06-08 12:04:47

标签: rabbitmq mqtt

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

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

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

我可以通过使用ACL设置在eMQTT代理中完成,但我在RabbitMQ中找不到相似内容。我已经在我的项目中使用了AMQP,所以我想避免安装额外的eMQTT代理,特别是当RabbitMQ可以支持MQTT时。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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