2016-09-24 2 views
0

Я разрабатываю типичный продукт SaaS, где пользователи могут войти в систему и сделать что-то.RabbitMQ - контроль доступа: разрешать только эксклюзивные/автоматические удаленные очереди

Внешние интерфейсы JS для Интернета и Android для смартфонов. Интерфейсы должны получать уведомление, когда что-то обновлено, поэтому они могут обновлять свои представления. Я думаю об использовании RabbitMQ для этой цели.

Я предлагаю, чтобы каждый пользователь имел свой собственный обмен. Когда что-то интересное происходит для пользователя, сообщение отправляется на его обмен. Затем, когда вход в интерфейс войдет, он может создать эксклюзивное/автоматическое удаление, связанное с его обменом. Таким образом, каждый внешний сеанс имеет свою собственную эксклюзивную/автоматическую очередь. Поэтому уведомление будет получено всеми активными/онлайн-интерфейсами, поскольку каждая из них имеет свою собственную приватную очередь, которая является ожидаемым поведением.

Теперь на мой вопрос: как я могу предотвратить, что интерфейс объявляет другие (возможно, долговечные) очереди? В интерфейсе должно быть разрешено создавать свою собственную эксклюзивную/автоматически удаляемую очередь, не более того. Я прочитал документацию (https://www.rabbitmq.com/access-control.html), но это, похоже, не поддерживается напрямую?

ответ

0

Вы можете использовать плагин сообщества rabbitmq_auth_backend_http, а затем создать собственное веб-приложение, которое RabbitMQ будет вызывать для авторизации каждого запроса. Веб-приложение очень простое, ему нужно только реализовать три конечных точки и может быть написано на любом выбранном вами языке.

Дополнительную информацию можно найти здесь: https://github.com/rabbitmq/rabbitmq-auth-backend-http В папке примеров есть приложение Django, которое вы можете настроить для поддержки своих уникальных требований.

Кроме того, вы можете использовать единый обмен предметами для всех ваших пользователей. Каждый пользователь может иметь уникальную очередь, связанную с этим обменом тем, чтобы все сообщения с помощью ключа пользователя отправлялись в очередь через обмен. Вы можете использовать свой собственный API авторизации, чтобы убедиться, что пользователи только публикуют и подписываются на очереди, на которые они авторизованы, поскольку веб-приложение авторизации известно о ключе темы, к которому пользователь пытается опубликовать сообщение.

Смежные вопросы