使用ActiveMQ JMS连接的用户名和密码

问题描述:

Apache ActiveMQ使用用户名和密码创建安全连接。使用ActiveMQ JMS连接的用户名和密码

InitialContext initCtx = new InitialContext(); 
javax.jms.ConnectionFactory qcf = (javax.jms.ConnectionFactory) initCtx.lookup(factoryName); 
Connection connection = qcf.createConnection(userName, password); 

我在哪里可以找到这些凭证。这些用户名和密码是否在任何ActiveMQ配置文件中配置?

您是否尝试连接但未提供用户名&密码,默认情况下您应该可以执行此操作。

ConnectionFactory connectionFactoryProd = new ActiveMQConnectionFactory("failover://tcp://yourServerWhereActiveMqIs:61616"); 
Connection connectionProd = connectionFactoryProd.createConnection(); 
connectionProd.start(); 
+0

是的,我尝试过。它正在连接,但我想为它设置用户名和密码。 – 2015-02-11 11:43:12

+0

目前它正在接受任何用户名和密码并连接。但我希望它的行为正确,如果错误的凭据给出,那么它不应该连接。 – 2015-02-11 11:45:08

+0

对不起,但这显然不能回答这个问题,是吗? – hschne 2015-02-11 16:39:09

要回答你的问题:的确是这样,并在凭证中定义的文件的名称是activemq.xml。它可以在您的ActiveMQ安装的conf目录中找到,例如C:\Program Files (x86)\apache-activemq-5.10.0\conf。现在

,上this site有如何的ActiveMQ配置为使用简单的身份验证或JAAS相当详细的说明,但我给你的简要介绍和一些技巧:

  • 以下所有的东西都有插入上述XML文件的plugins部分。

  • 使用SimpleAuthentication为了仅将用户“添加”到组,例如,

    <simpleAuthenticationPlugin anonymousAccessAllowed="true"> 
         <users> 
          <authenticationUser username="system" password="system" groups="users,admins"/> 
          <authenticationUser username="admin" password="admin" groups="users,admins"/> 
          <authenticationUser username="user" password="user" groups="users"/> 
          <authenticationUser username="guest" password="guest" groups="guests"/> 
         </users> 
        </simpleAuthenticationPlugin> 
    
  • 使用AuthorizationPlugin配置哪些组可以访问哪些队列和主题。

  • 如果您打算使用SimpleAuthentication,请确保您的有效插件中没有<jaasAuthenticationPlugin configuration="activemq-domain" />。以防万一你打算从我之前提到的页面复制一个样本。

  • 您可能想要启用匿名访问。为此,请将相应的属性添加到SimpleAuthenticatoinPlugin节点。一旦完成,您可以在创建连接时连接到队列而无需提供用户名和密码。