2012-09-04 45 views
5

RabbitMQ + Web Stomp thật tuyệt vời. Tuy nhiên, tôi có một số chủ đề tôi muốn an toàn là chỉ đọc hoặc chỉ ghi.RabbitMQ + Web Stomp và bảo mật

Có vẻ như cơ chế duy nhất để bảo mật những điều này là với rabbitmqctl. Tôi có thể tạo một vhost, một người dùng và sau đó áp dụng một số quyền. Tuy nhiên, đây là nơi mà Stomp và Rabbit thực hiện bắt đầu phá vỡ.

chủ đề có dạng:/topic/blah in stomp, có định tuyến đến "amq.topic" trong Rabbit bằng khóa định tuyến "blah". Có vẻ như không có cách nào để đặt quyền cho khóa định tuyến. Có vẻ như:

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

là cách tốt nhất tôi có thể làm, vẫn là chủ đề "TẤT CẢ". Tôi đã nhìn vào trao đổi là tốt, nhưng không có cách nào trong javascript để xác định những điều này trên bay.

Tôi có thiếu gì đó ở đây không?

tham khảo: http://www.rabbitmq.com/blog/2012/05/14/introducing-rabbitmq-web-stomp/

Trả lời

5

Vâng, với RabbitMQ-WebStomp bạn đang khá nhiều giới hạn quyền RabbitMQ bình thường thiết lập. Nó không phải là lý tưởng, nhưng bạn sẽ có thể nhận được quyền thiết lập quyền cơ bản. Hãy xem tài liệu RabbitMQ:

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

Nhanh chóng xem xét các tài liệu stomp:

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

có, bạn không thể thiết lập quyền truy cập cho một phím định tuyến cụ thể. Có thể bạn nên sử dụng ngữ nghĩa 'trao đổi', cộng với việc trao đổi với hàng đợi một cách rõ ràng (ví dụ: không sử dụng chủ đề):

/exchange/exchange_name [/ routing_key].

Vui lòng hỏi các câu hỏi cụ thể về quyền của RMQ trên danh sách gửi thư thỏmq thảo luận. Mọi người có thực sự hữu ích.

Thật không may, bộ quyền RMQ không đủ cho một số tình huống phức tạp hơn. Trong trường hợp này, bạn có thể muốn:

  • Sử dụng STOMP chỉ để đọc dữ liệu, và công bố thông điệp chỉ sử dụng một số giao diện AJAX bên ngoài mà có thể nói chuyện trực tiếp với thỏ trong nội bộ.
  • hoặc không sử dụng plugin web-stomp và viết một cây cầu đơn giản giữa SockJS và RabbitMQ theo cách thủ công. Điều này mang lại cho bạn sự linh hoạt hơn nhưng đòi hỏi nhiều công việc hơn.
+0

Tôi đã kết thúc bằng trao đổi. Không lý tưởng, chủ yếu là vì nó phức tạp triển khai, nhưng nó hoạt động. – jbg

7

Hãy thử điều này https://github.com/simonmacmullen/rabbitmq-auth-backend-http Nó linh hoạt hơn nhiều. Về cơ bản đó là plugin auth nhỏ cho thỏ ủy quyền ACL quyết định một tập lệnh trên http (mà bạn có toàn quyền kiểm soát) mà chỉ phải trả lời bằng "allow" hoặc "deny"

Các vấn đề liên quan