如何通过以编程方式设置用户名和密码来连接到ActiveMQ服务器?

问题描述 投票:0回答:0

我创建了一个 ActiveMQ 服务器来发送一些消息。我使用 Apache Activemq 版本 5.14.4 当我尝试连接到 ActiveMQ 服务器时,我希望被要求提供用户名和密码,这就是为什么我在 activemq.xml 中添加了一个简单的身份验证插件,如下所示。

String username = "admin";
String password = "anything";
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
        factory.setUserName(username);
        factory.setPassword(password);
        factory.setTrustedPackages(Arrays.asList("com.h4p.server"));
        Connection connection = null;
        Session session = null;
        Destination destination = null;
        try {
            connection = factory.createConnection();
            connection.start();
            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            destination = session.createQueue("myQueue");
        } catch (JMSException e) {
            e.printStackTrace();
        }
...

在代理元素中,我使用 SimpleAuthentificationPlugin 添加了安全级别:

    <simpleAuthenticationPlugin anonymousAccessAllowed="false">
        <users>
            <authenticationUser username="admin" password="anything" groups="admins"/>
        </users>
    </simpleAuthenticationPlugin>

    <authorizationPlugin>
        <map>
            <authorizationMap>
                <authorizationEntries>
                    <authorizationEntry queue="myQueue" write="admins" read="admins" admin="admins" />  
                    <authorizationEntry topic="ActiveMQ.Advisory.>" write="admins" read="admins" admin="admins" />                      
                </authorizationEntries>
            </authorizationMap>
        </map>
    </authorizationPlugin>I

如您所见,我在工厂级别设置了用户名和密码,尽管我可以在创建连接时设置它们。

哪个选项最好,是在工厂设置用户名和密码还是在创建连接时设置?

ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
        factory.setUserName(username);
        factory.setPassword(password);

connection = factory.createConnection(username, password);

无论如何,出于安全考虑,我无法连接到 ActiveMQ 服务器:

javax.jms.JMSException: Could not connect to broker URL: tcp://localhost:61616. Reason: java.net.ConnectException: Connection refused: connect

pache-activemq-5.14 中的文件。

java apache authentication activemq-classic broker
© www.soinside.com 2019 - 2024. All rights reserved.