java - 没有密码的 RabbitMQ 身份验证

标签 java rabbitmq amqp

因为我不需要考虑我的应用程序中的安全问题,所以我想使用 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/

相关文章:

java - DynamoDB GSI : update indexed attribute, 保留先前的索引条目

java - 如何在Java中的JTextArea中追加数据?

Erlang AMQP 客户端库

java - 异步@RabbitListener中的同步代码?

c# - .NET Client编程出现异常 'The AMQP operation was interrupted' (code=406)

python - 具有 Redis 后端的 Celery v4 组任务行为

java - hashmap自定义类键&&对象保存/加载

java - Struts2中的动态文件下载

postgresql - Camunda Cockpit 和 Rest API 关闭但应用程序启动/JobExecutor 配置

python - RabbitMQ - 游戏室和安全注意事项