ActiveMQ Apollo是否实现了JMSXUserID或类似的东西来帮助跟踪经过身份验证的用户



我知道 ActiveMQ 支持 JMSXUserID 属性:

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

我正在尝试使用Apollo(一个ActiveMQ子项目)而不是ActiveMQ,目前我试图弄清楚在Apollo中复制相同的行为。

我对机制并不挑剔,但简而言之,我需要某种方法来使用标识符标记来自经过身份验证的用户的每条传入消息,该标识符让我知道哪个用户发送了哪条消息,但以一种用户无法通过设置自己来欺骗的方式。这基本上正是ActiveMQ使用的JMSXUserID,但我似乎无法弄清楚如何在Apollo中做同样的事情。

我错过了什么?

我发现这特别难以谷歌,因为ActiveMQ在其每个页面上都链接到Apollo,所以我的大部分搜索结果都没有帮助。

提前谢谢。

Apollo 的用户手册描述了如何配置 Apollo 以自动添加设置为发送用户 ID 的用户标头。

基本上,您希望使用以下内容配置连接器的 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 可以解决这个问题。

Apollo甚至支持JMS吗?

从网页: http://activemq.apache.org/apollo/

在目前的版本中,Apollo仅支持STOMP协议,但就像最初的ActiveMQ一样,它被设计为多协议代理。在未来的版本中,它将添加OpenWire支持,以便它可以与ActiveMQ 5.x JMS客户端兼容。

为了解决您手头的问题,您不能简单地在代码中添加带有 userid 的标头吗?

只需从操作系统中获取它,假设您正在使用Java,那么您可以使用类似的东西

System.getProperty("user.name") 

并将其附加到 STOMP 标头。但是,这是客户端库(如果使用了 stomp 库)而不是服务器本身的问题。

最新更新