因为我不需要考虑我的应用程序中的安全问题,所以我想使用 Java 客户端连接到 RabbitMQ,无需密码。
在管理 UI 中,我将用户密码设置为“无密码”。然后我试了一下:
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)
甚至可以在没有密码的情况下建立连接吗?
最佳答案
无密码身份验证可以通过使用 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 .
关于java - 没有密码的 RabbitMQ 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36715087/