meu*_*caa 5 authentication message-queue rabbitmq
我正在使用rabbitmq-server用 Scala 编写的消费者使用它并从中获取消息。这一直很有效,但是自从我将 RabbitMQ 服务器从一个服务器迁移到另一个服务器后,在尝试连接到它时出现以下错误:
com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.
Run Code Online (Sandbox Code Playgroud)
此外,rabbitmq-server日志:
=INFO REPORT==== 18-Jul-2018::15:28:05 ===
accepting AMQP connection <0.7107.0> (127.0.0.1:42632 -> 127.0.0.1:5672)
=ERROR REPORT==== 18-Jul-2018::15:28:05 ===
Error on AMQP connection <0.7107.0> (127.0.0.1:42632 -> 127.0.0.1:5672, state: starting):
PLAIN login refused: user 'my_personal_user' - invalid credentials
=INFO REPORT==== 18-Jul-2018::15:28:05 ===
closing AMQP connection <0.7107.0> (127.0.0.1:42632 -> 127.0.0.1:5672)
Run Code Online (Sandbox Code Playgroud)
我浏览了有关身份验证问题的所有 SO 问题,并找到了以下线索:
guest从远程连接所有这些线索都没有帮助我。我的凭据很好,我不是guest用来连接的,而是使用我创建的具有完全访问权限和管理员权限的特权用户,并且我的 RabbitMQ 版本没有在迁移过程中发生变化。
注意:我将我的 RabbitMQ 服务器从一个单独的服务器迁移到与我的消费者相同的服务器,所以现在消费者正在从本地主机获取。不知道后果,但我想它可以帮助你们帮助我。
所以我刚刚在谷歌上搜索了类似的问题解决方案,这就是我找到此页面的方式。我没有找到我的问题的直接答案,但我最终发现rabbitmq有2组不同的配置权限,它们并不完全重叠,在我的例子中,我对1组权限有0个权限,其他权限集的管理员权限。如果您遇到类似的情况,我会感到很受伤。
查看代码将使这两组权利获得更多,但首先是一些背景上下文:
我的 RMQ 托管在 Kubernetes 上,其中的内容是短暂的,我需要一些用户名和密码来预加载一个新的rabbitmq 实例,在 Kubernetes 中,有一个选项可以在第一次启动时注入预配置的代理定义。(当我说代理定义时,我指的是管理 Web GUI 中的那个位置,有一个选项可以导入和导出代理定义,也称为备份或替换您的 RMQ 实时配置。)
这是我的配置的缩短版本,删除了敏感内容:
Run Code Online (Sandbox Code Playgroud){ "vhosts": [ {"name":"/"} ], "policies": [ { "name": "ha", "vhost": "/", "pattern": ".*", "definition": { "ha-mode": "all", "ha-sync-mode": "automatic", "ha-sync-batch-size": 2 } } ], "users": [ { "name": "guest", "password": "guest", "tags": "management" }, { "name": "admin", "password": "PASSWORD", "tags": "administrator" } ], "permissions": [ { "user": "guest", "vhost": "/", "configure": "^$", "write": "^$", "read": "^$" }, { "user": "admin", "vhost": "/", "configure": ".*", "write": ".*", "read": ".*" } ] }
好吧,当我最初看到该标签属性时,我假设了任意值,我将在那里放置一个自记录标签,这相当于“”,这导致我对 Web 管理 GUI/REST API 拥有 0 权限,而下面我有所有“.*”,因此该部分具有完全的管理权限。这对我来说真的很困惑,因为(我收到一条错误消息,说我提供了无效的凭据,但凭据是正确的,我只是没有访问权限。)
如果不是这样,那么还有这个配置,默认情况下来宾只能访问本地主机,但您可以覆盖它。
| 归档时间: |
|
| 查看次数: |
11839 次 |
| 最近记录: |