2012-09-04 4 views
5

RabbitMQ + Web Stomp è fantastico. Tuttavia, ho alcuni argomenti che mi piacerebbe sicuro come di sola lettura o solo in scrittura.RabbitMQ + Web Stomp e sicurezza

Sembra che l'unico meccanismo per proteggere questi sia con rabbitmqctl. Posso creare un vhost, un utente e quindi applicare alcune autorizzazioni. Tuttavia, questo è il punto in cui l'implementazione di Stomp e Rabbit inizia ad abbattere.

gli argomenti prendono forma:/topic/blah in stomp, che indirizza a "amq.topic" in Coniglio con una chiave di routing "blah". Sembrerebbe che non ci sia modo di impostare i permessi per la chiave di routing. Sembra:

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

è il meglio che posso fare, che è ancora "TUTTI" argomenti. Ho esaminato anche gli scambi, ma in javascript non è possibile definirli al volo.

Mi manca qualcosa qui?

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

risposta

5

Sì, con RabbitMQ-WebStomp sei praticamente limitati a normali permessi RabbitMQ set. Non è l'ideale, ma dovresti essere in grado di ottenere l'autorizzazione di base giusta. Date un'occhiata a docs RabbitMQ:

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

rapidamente guardando la documentazione pedali:

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

Sì, non è possibile impostare le autorizzazioni per una particolare chiave di routing. Forse dovresti usare la semantica 'exchange', oltre a collegare esplicitamente uno scambio con una coda (es: non usare argomenti):

/exchange/exchange_name [/ routing_key].

Per favore, fare domande concrete sulle autorizzazioni RMQ sulla mailing list di rabbitmq-discuss. Le persone ci sono davvero utili.

Sfortunatamente, il set di autorizzazioni RMQ non è sufficiente per alcuni scenari più complessi. In questo caso si consiglia di:

  • Usa STOMP solo per leggere i dati , e pubblicare i messaggi solo con un po 'di interfaccia AJAX esterno in grado di parlare direttamente con il coniglio internamente.
  • oppure, non utilizzare il plug-in Web-stomp e scrivere manualmente un semplice bridge tra SockJS e RabbitMQ. Questo ti dà più flessibilità ma richiede più lavoro.
+0

Ho finito per usare uno scambio. Non ideale, principalmente perché complica le implementazioni, ma funziona. – jbg