ActiveMQ: использовать Django Auth с Stomp

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

Мое текущее решение для пересылки данных - это сервер Orbited и экземпляр MorbidQ (MorbidQ - это сервер Stomp). Каждое здание в моей системе ( пример здесь) имеет свой канал для обновлений. Скрученный бэкэнд транслирует данные через канал MorbidQ всем, кто смотрит, но кто угодно может смотреть. В моем блоге есть запись о потоке данных с датчика на сайт

Для многих зданий я хочу, чтобы только несколько пользователей могли видеть живые данные в данном здании. Я хотел бы использовать Django Auth, если это возможно, или какой-то обходной путь, если нет.

Какой самый простой способ защитить эти каналы для каждого пользователя? Могу ли я использовать Django Auth? Должен ли я использовать RabbitMQ или ActiveMQ вместо MorbidQ? Какие меры я могу предпринять, чтобы сохранить это решение в безопасности?

Для кодирования я больше всего уверен в C++ и Python.

Спасибо!

2 ответа

Решение

Если вы используете расширения restq для morbidq, вы можете заставить его отправлять обратный вызов http вашему приложению каждый раз, когда пользователь пытается подключиться. (См. http://www.morbidq.com/trac/wiki/RestQ). Затем ваше приложение django может просто вернуть yes или no при попытке подключения (после того, как оно выполнено через некоторую процедуру аутентификации.)

Возрождение старой темы: MorbidQ не предназначен для производственного использования AFAIK. ActiveMQ - гораздо более надежный зверь и предоставляет гораздо лучшие способы обработки аутентификации на основе пользователей. Я написал это еще в 2010 году, когда речь шла о статической аутентификации пользователей, но ActiveMQ позволяет передавать динамический список пользователей для аутентификации, который может быть получен из любого доступного серверного приложения. Пост, о котором я упоминал выше, не касается этого, но немного углубившись в раздел руководства по аутентификации / безопасности ActiveMQ (плюс некоторые знания Java), можно сделать довольно неприятную настройку для такого использования. Если LDAP доступен, даже лучше.

Другие вопросы по тегам