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

时间:2015-02-11 09:58:01

标签: java jms activemq

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

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

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

2 个答案:

答案 0 :(得分:6)

回答你的问题:确实如此,并且定义凭据的文件名是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节点。完成后,您可以在创建连接时无需提供用户名和密码即可连接到队列。

答案 1 :(得分:-1)

您是否尝试过连接而不提供userName&amp;密码,默认情况下你应该可以这样做。

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