春季AMQP+;RabbitMQ 3.3.5访问被拒绝-使用普通身份验证机制拒绝登录

春季AMQP+;RabbitMQ 3.3.5访问被拒绝-使用普通身份验证机制拒绝登录,rabbitmq,spring-integration,spring-amqp,Rabbitmq,Spring Integration,Spring Amqp,我越来越不正常了 org.springframework.amqp.amqauthenticationexception:com.rabbitmq.client.AuthenticationFailureException:ACCESS\u拒绝-使用普通身份验证机制拒绝登录。有关详细信息,请参阅代理日志文件 配置:windows上的RabbitMQ 3.3.5 在%APPDATA%\RabbitMQ\rabbit.Config中的配置文件上 我已经按照以下要求做了更改 我还尝试创建一个user/

我越来越不正常了

org.springframework.amqp.amqauthenticationexception:com.rabbitmq.client.AuthenticationFailureException:ACCESS\u拒绝-使用普通身份验证机制拒绝登录。有关详细信息,请参阅代理日志文件

配置:windows上的RabbitMQ 3.3.5

%APPDATA%\RabbitMQ\rabbit.Config中的配置文件上
我已经按照以下要求做了更改

我还尝试创建一个user/pwd-test/test,但它似乎不起作用

从柱子上试过台阶

其他配置详细信息如下:

Tomcat托管的Spring应用程序上下文:

<!-- Rabbit MQ configuration Start -->
    <!-- Connection Factory -->
    <rabbit:connection-factory id="rabbitConnFactory" virtual-host="/" username="guest" password="guest" port="5672"/>

    <!-- Spring AMQP Template -->
    <rabbit:template id="rabbitTemplate" connection-factory="rabbitConnFactory" routing-key="ecl.down.queue" queue="ecl.down.queue" />

    <!-- Spring AMQP Admin -->
    <rabbit:admin id="admin" connection-factory="rabbitConnFactory"/>

    <rabbit:queue id="ecl.down.queue" name="ecl.down.queue" />

    <rabbit:direct-exchange name="ecl.down.exchange">
        <rabbit:bindings>
            <rabbit:binding key="ecl.down.key" queue="ecl.down.queue"/>
        </rabbit:bindings>
    </rabbit:direct-exchange>
在我的邮件发件人中:

import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component("messageSender")
public class RmqMessageSender  {

    @Autowired
    AmqpTemplate                rabbitTemplate;

    public void submitToRMQ(String orderId){
        try{
            rabbitTemplate.convertAndSend("Hello World");
        } catch (Exception e){
            LOGGER.error(e.getMessage());
        }
    }       
}
上面的异常块给出下面的异常


org.springframework.amqp.amqauthenticationexception:com.rabbitmq.client.AuthenticationFailureException:ACCESS\u拒绝-使用普通身份验证机制拒绝登录。有关详细信息,请参阅代理日志文件


错误日志

  =ERROR REPORT==== 7-Nov-2014::18:04:37 ===
closing AMQP connection <0.489.0> (10.1.XX.2XX:52298 -> 10.1.XX.2XX:5672):
    {handshake_error,starting,0,
                     {amqp_error,access_refused,
                                 "PLAIN login refused: user 'guest' can only connect via localhost",
                                 'connection.start_ok'}}
=错误报告===2014年11月7日::18:04:37===
关闭AMQP连接(10.1.XX.2XX:52298->10.1.XX.2XX:5672):
{握手错误,开始,0,
{amqp_错误,访问被拒绝,
“普通登录被拒绝:用户‘guest’只能通过localhost连接”,
'connection.start_ok'}
请在pom.xml条目下方找到

        <dependency>
            <groupId>org.springframework.amqp</groupId>
            <artifactId>spring-rabbit</artifactId>
            <version>1.3.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-amqp</artifactId>
            <version>4.0.4.RELEASE</version>
        </dependency>

org.springframework.amqp
春兔
1.3.6.1发布
org.springframework.integration
spring集成amqp
4.0.4.1发布
如果您有任何想法/建议,请告诉我

用户“来宾”只能通过本地主机连接

这是真实的,因为RabbitMQ 3.3.x。因此,您应该将客户端库升级到同一版本,或者仅将Spring AMQP升级到最新版本(如果您使用依赖关系管理系统)


以前版本的客户端使用了
127.0.0.1
作为
ConnectionFactory
host
选项的默认值,我确信Artem Bilan所解释的可能是导致此错误的原因之一:

但我的解决方案是,我使用默认用户名和密码(guest/guest)登录rabbitMQ管理页面(),然后添加一个新用户,对于该新用户,我启用了从虚拟主机访问它的权限,然后使用新用户名和密码,而不是默认的guest,并清除了错误

错误

访问被拒绝-使用普通身份验证机制拒绝登录。有关详细信息,请参阅代理日志文件。

如果应用程序尝试用于连接RabbitMQ的凭据不正确或丢失,则可能发生此情况


当存储在我的ASP.NET应用程序的
web.config
文件中的RabbitMQ凭据的密码值为
,而不是实际的密码字符串值时,就会发生这种情况。

要允许来宾远程访问,请编写以下命令

[{rabbit, [{loopback_users, []}]}].
到这里

c:\Users\[your user name]\AppData\Roaming\RabbitMQ\rabbitmq.config
然后重新启动rabbitmq windows服务(源)

以完成@cpu-100

如果您不想启用/使用web界面,可以使用如下命令行创建新凭据,并在代码中使用它连接到RabbitMQ

$ rabbitmqctl add_user YOUR_USERNAME YOUR_PASSWORD
$ rabbitmqctl set_user_tags YOUR_USERNAME administrator
$ rabbitmqctl set_permissions -p / YOUR_USERNAME ".*" ".*" ".*"
新解决方案:

节点模块无法正确处理密码中的
。即使url编码,就像它正常工作一样,它也不工作

密码中不要使用URL中的典型特殊字符

与以下内容类似:
:.?+%


原始错误答案:

错误消息明确地抱怨使用了
纯文本
,这并不意味着凭据错误,而是意味着必须使用加密数据传递(TLS)而不是纯文本


将连接字符串中的
amqp://
更改为
amqps://
(注意
s
)可以解决此问题。

将ConnectionFactory或连接主机名设置为localhost对我来说,解决方案很简单:用户名区分大小写。未能使用正确的CAP也将导致错误。

只需添加登录密码即可连接到RabbitMq

 CachingConnectionFactory connectionFactory = 
         new CachingConnectionFactory("rabbit_host");

 connectionFactory.setUsername("login");
 connectionFactory.setPassword("password");

如果您使用该号码作为密码,可能应该尝试使用字符串更改密码


我可以在网站上使用deltaqin:000000登录,但在运行程序时有此功能。然后将密码更改为deltaiqn。它是有效的。

我做的正是@grepit做的

但我不得不在Java代码中做一些更改:

在生产者和接受者项目中,我改变了:

ConnectionFactory factory = new ConnectionFactory();
factory.setHost("your-host-ip");
factory.setUsername("username-you-created");
factory.setPassword("username-password");

        
执行此操作时,您将以所创建的用户身份连接特定主机。
这对我有用

由于spring boot application.properties中密码(spring.rabbitmq.password=rabbit)末尾的空白,我遇到了这个问题。删除空白后,属性得到了解决。希望这个清单能帮助一些面临这个问题的人。

在本地主机上,默认情况下使用'amqp://guest:guest@本地主机:5672'

因此,在远程或托管RabbitMQ上。假设您具有以下凭据

用户名:尼斯男孩 密码:notnice 主持人:goxha.com 港口:1597

那么您应该传递的uri将是

amqp://niceboy:notnice@goxha.com:1597

遵循模板amqp://user:pass@主持人:10000


如果你有vhost,你可以amqp://user:pass@主机:10000/vhost,其中尾随vhost将是您的vhost的名称

请确保您编辑的配置已加载。zaq178迈阿密,我已经完成了几个步骤来确保其已加载。重新启动服务,重新启动机器&甚至重新安装RabbitMQ.Hi Artem,我已经为jar版本添加了pom.xml条目。理想情况下,我不想使用来宾用户名和密码。您能告诉我您是否有任何指针可供产品使用吗
$ rabbitmqctl add_user YOUR_USERNAME YOUR_PASSWORD
$ rabbitmqctl set_user_tags YOUR_USERNAME administrator
$ rabbitmqctl set_permissions -p / YOUR_USERNAME ".*" ".*" ".*"
 CachingConnectionFactory connectionFactory = 
         new CachingConnectionFactory("rabbit_host");

 connectionFactory.setUsername("login");
 connectionFactory.setPassword("password");
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("your-host-ip");
factory.setUsername("username-you-created");
factory.setPassword("username-password");