JMSXUserID
功能 > JMSXUserID
JMSXUserID 支持
有时知道消息发送者的已认证用户名很有用。默认情况下不会添加此信息,但您可以通过在代理上设置 **populateJMSXUserID** 属性来启用它,方法是通过 Java 代码
BrokerService broker = new BrokerService();
broker.setPopulateJMSXUserID(true);
broker.start();
或者通过 XML 配置
<broker xmlns="http://activemq.org/config/1.0" populateJMSXUserID="true">
...
</broker>
或者通过 代理配置 URI.
启用此功能后,它会将 JMS 属性 **JMSXUserID** 添加到每个 JMS 消息中,以便消费者可以使用代理的认证策略准确地知道发送者是谁。也就是说,如果启用此功能,生产者无法欺骗此值,因为代理会在发送者的连接通过认证后将属性附加到消息中。
如果您允许匿名访问,您 **必须** 也添加
useAuthenticatedPrincipalForJMSXUserID="true"
代理元素的属性。否则,匿名客户端可以通过从客户端设置 JMSXUserID 属性来欺骗身份。此属性在版本 5.5 或 5.5-SNAPSHOT > 3 月 12 日可用。但是,请注意,对于基于 SSL 证书的认证,例如,使用 TextFileCertificateLoginModule
JAAS 模块时,这将更改代理提供的 JMSXUserID 的语义。它不会返回证书的 DN,而是提供 JAAS 模块将 DN 映射到的名称。