我正在寻找一种限制用户仅访问专用主题的方法,例如:
user1 应该只能访问 user1 /#主题, 所以他可以订阅/发布 user1 / sensor / 1 或 user1 / conf / mode 但不能 user2 / sensor / 2 等。
类似地, user2 应该只能访问包含所有子主题的 user2 /#。
我可以通过使用ACL设置在eMQTT代理中完成,但我在RabbitMQ中找不到相似内容。我已经在我的项目中使用了AMQP,所以我想避免安装额外的eMQTT代理,特别是当RabbitMQ可以支持MQTT时。
答案 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代理文档并检查它们支持的安全功能。