2012-09-04 99 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