没有密码的RabbitMQ身份验证

时间:2016-04-19 10:01:49

标签: java rabbitmq amqp

因为我不需要考虑应用程序中的安全问题,所以我希望使用Java客户端连接到RabbitMQ而无需密码。

在管理界面中,我将用户密码设置为“无密码”。然后我就这样试了:

ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
factory.setUsername("myuser");
connection = factory.newConnection();

或者,我尝试手工组装URI:

factory.setUri("amqp://myuser@localhost:5672");

...但在这两种情况下,身份验证都会失败并出现此异常:

Exception in thread "main" com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.
    at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:339)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:716)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:760)
    at de.bmw.rabbitmq.workerqueue.Producer2.main(Producer2.java:51)

甚至可以在没有密码的情况下获得连接吗?

3 个答案:

答案 0 :(得分:3)

无密码身份验证可以通过使用如下所述的rabbitmq-auth-mechanism-ssl来实现:https://github.com/rabbitmq/rabbitmq-auth-mechanism-ssl。这要求SSL / TLS支持已设置并正常工作。如果选择此选项,则使用受信任的根证书进行身份验证,并且完全忽略任何用户名/密码。

我目前正在调查是否可以与LDAP一起进行无密码身份验证,但我没有运气这么做。

编辑:在我的环境中,Windows服务使用基于证书的身份验证进行身份验证,RabbitMQ群集管理员可以使用LDAP对管理Web UI进行身份验证。如果您对LDAP身份验证感兴趣,请here's another post about it

答案 1 :(得分:1)

  

因为我不需要在我的应用程序中考虑安全问题

我会严重质疑这个假设。事实上,我甚至会说这永远不正确。

话虽如此:

只需使用任何人都可以知道的简单密码。这样做比在没有密码的情况下尝试让RMQ工作更容易。

答案 2 :(得分:-1)

完成此问题。正如Derick Bailey所建议的那样:我通过为不同的客户引入(默认)凭证来帮助自己。