Реализует ли ActiveMQ Apollo JMSXUserID или что-то подобное для отслеживания пользователей, прошедших проверку подлинности?

Я знаю, что ActiveMQ поддерживает свойство JMSXUserID:

http://activemq.apache.org/jmsxuserid.html

Я пытаюсь использовать Apollo (подпроект ActiveMQ) вместо ActiveMQ, и на данный момент я застрял, пытаясь понять, как воспроизвести такое же поведение в Apollo.

Я не придирчив к механике, но в двух словах мне нужен какой-то способ пометить каждое входящее сообщение от аутентифицированного пользователя идентификатором, который позволит мне узнать, какой пользователь отправил какое сообщение, но таким образом, чтобы пользователи не могли его подделать. настраивая себя. Это в основном именно то, для чего JMSXUserID используется ActiveMQ, но я не могу понять, как сделать то же самое в Apollo.

Что мне не хватает?

Я нахожу это особенно трудным для Google, поскольку ActiveMQ ссылается на Apollo на каждой из своих страниц, поэтому большинство моих результатов поиска бесполезны.

Заранее спасибо.


person Grekker    schedule 16.06.2012    source источник


Ответы (2)


В руководстве пользователя Apollo описано, как можно настроить apollo для автоматического добавления пользовательского заголовка, который установить идентификатор отправляющего пользователя.

В основном вы хотите настроить протокол stomp коннектора примерно так:

<connector id="tcp" bind="tcp://0.0.0.0:61613">
  <stomp>
    <add_user_header separator=",">JMSXUserID</add_user_header>
  </stomp>
</connector>

К сожалению, протокол Openwire пока этого не поддерживает. Проблема APLO-213 открыта для ее решения.

person Hiram Chirino    schedule 18.06.2012

Поддерживает ли Apollo JMS?

с веб-страницы: http://activemq.apache.org/apollo/

В своем текущем воплощении Apollo поддерживает только протокол STOMP, но, как и исходный ActiveMQ, он был разработан как мультипротокольный брокер. В будущих версиях будет добавлена ​​поддержка OpenWire, чтобы он был совместим с клиентами ActiveMQ 5.x JMS.

Чтобы решить вашу проблему, вы не можете просто добавить заголовок с идентификатором пользователя в код?

Просто возьмите его из ОС, скажем, вы используете Java, тогда вы могли бы использовать что-то вроде

System.getProperty("user.name") 

и прикрепите его к заголовку STOMP. Однако это проблема клиентской библиотеки (библиотеки stomp, если она используется), а не самого сервера.

person Petter Nordlander    schedule 17.06.2012
comment
Apollo поддерживает JMS. Пример клиента JMS находится в папке примеров Apollo в его установочном каталоге, и Hiram выпустил инструмент для сравнительного анализа для сравнения Apollo JMS с другими серверами: - person Grekker; 18.06.2012
comment
Чтобы более прямо ответить на ваше предложение, где вы предлагаете мне поместить код, который добавил бы дополнительный заголовок stomp? На сервере? Это вообще не затронет клиентскую библиотеку, поскольку мы не можем доверять коду в пользовательской области. Apollo уже аутентифицирует пользователей с помощью JAAS... Я ищу способ добавить эту аутентификацию к сообщениям Stomp/JMS, проходящим через Apollo. - person Grekker; 18.06.2012