2012-09-04 49 views
5

RabbitMQ + Web Stomp非常棒。不过,我希望将一些主题保护为只读或只写。RabbitMQ + Web Stomp和安全

它似乎是唯一的机制,以确保这些与rabbitmqctl。我可以创建一个虚拟主机,一个用户,然后应用一些权限。然而,这是Stomp和Rabbit实施开始崩溃的地方。

题目采取的形式:/ topic/blah在stomp中,它通过路由关键字“blah”在Rabbit中路由到“amq.topic”。似乎没有办法为路由密钥设置权限。似乎:

rabbitmqctl set_permissions -p vhost user ".*" ".*" "^amq\.topic" 

是我能做的最好的,这仍然是“所有”的话题。我也研究过交流,但JavaScript中无法定义这些动态。

我在这里错过了什么吗?

参考:http://www.rabbitmq.com/blog/2012/05/14/introducing-rabbitmq-web-stomp/

回答

5

是的,RabbitMQ的-WebStomp你几乎仅限于在正常的RabbitMQ权限。这并不理想,但你应该能够正确地获得基本的权限设置。看看RabbitMQ的文档:

http://www.rabbitmq.com/access-control.html

赶紧看跺脚文档:

http://www.rabbitmq.com/stomp.html

是的,你不能为特定的路由键设置权限。也许你应该使用“交换”语义,并明确地将交换与队列绑定(即:不要使用主题):

/exchange/exchange_name [/ routing_key]。

请在rabbitmq-discuss邮件列表中询问关于RMQ权限的具体问题。那里的人真的很有帮助。

不幸的是,对于一些更复杂的场景,RMQ权限集是不够的。在这种情况下,你可能想:

  • 使用STOMP只数据,并且只使用一些外部AJAX接口,可以直接在内部说话的兔子发布消息。
  • 或者,不要使用web-stomp插件,并手动在SockJS和RabbitMQ之间编写一个简单的桥接。这给你更多的灵活性,但需要更多的工作。
+0

我确实使用了交换。不理想,主要是因为它使部署复杂化,但它的工作。 – jbg