Apache ActiveMQ使用用户名和密码创建安全连接。
InitialContext initCtx = new InitialContext();
javax.jms.ConnectionFactory qcf = (javax.jms.ConnectionFactory) initCtx.lookup(factoryName);
Connection connection = qcf.createConnection(userName, password);
我在哪里可以找到这些凭据。这些用户名和密码是否在任何ActiveMQ配置文件中配置?
答案 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();