авторизация - Spring AMQP+RabbitMQ 3.3.5 ACCESS_REFUSED-вход в систему был отклонен с использованием механизма аутентификации PLAIN




rabbitmq авторизация (6)

Пользователь 'Гость' может подключиться только через локальный хост

Это правда, так как RabbitMQ 3.3.x. Следовательно, вам следует обновить до той же версии клиентскую библиотеку или просто обновить Spring AMQP до последней версии (если вы используете систему управления зависимостями).

Предыдущая версия клиента использовала 127.0.0.1 качестве значения по умолчанию для опции host ConnectionFactory .

Я получаю ниже исключения

org.springframework.amqp.AmqpAuthenticationException: com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - во входе было отказано с использованием механизма аутентификации PLAIN. Подробности смотрите в лог-файле брокера.

Конфигурация: RabbitMQ 3.3.5 на windows

В файле конфигурации в %APPDATA%\RabbitMQ\rabbit.config я сделал следующие изменения согласно https://www.rabbitmq.com/access-control.html

[{rabbit, [{loopback_users, []}]}].

Я также попытался создать пользователя / pwd - test / test, кажется, не работает.

Пробовал Шаги из this поста.

Другие подробности конфигурации приведены ниже:

Размещенный в 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>

В моем классе контроллеров

@Autowired
RmqMessageSender rmqMessageSender;

//Inside a method
rmqMessageSender.submitToECLDown(orderInSession.getOrderNo());

В моем сообщении отправитель:

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.AmqpAuthenticationException: com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - во входе было отказано с использованием механизма аутентификации PLAIN. Подробности смотрите в лог-файле брокера.

Журнал ошибок

  =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'}}

Просьба найти ниже записи 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>

Пожалуйста, дайте мне знать, если у вас есть какие-либо мысли / предложения


Для меня решение было простым: имя пользователя чувствительно к регистру. Отказ от использования правильных заглавных букв также приведет к ошибке.


Ошибка

ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.

может произойти, если учетные данные, которые ваше приложение пытается использовать для подключения к RabbitMQ, неверны или отсутствуют.

Это произошло, когда учетные данные RabbitMQ, хранящиеся в файле web.config моего приложения ASP.NET, имели значение "" для пароля вместо фактического значения строки пароля.


Чтобы завершить answer @ CPU-100,

если вы не хотите включать / использовать веб-интерфейс, вы можете создать новые учетные данные с помощью командной строки, как показано ниже, и использовать их в своем коде для подключения к RabbitMQ.

$ rabbitmqctl add_user YOUR_USERNAME YOUR_PASSWORD
$ rabbitmqctl set_user_tags YOUR_USERNAME administrator
$ rabbitmqctl set_permissions -p / YOUR_USERNAME ".*" ".*" ".*"

Я уверен, что то, что объяснил here Артем Билан, может быть одной из причин этой ошибки:

Caused by: com.rabbitmq.client.AuthenticationFailureException: 
ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. 
For details see the

но решение для меня заключалось в том, что я вошел на страницу администрирования rabbitMQ ( http://localhost:15672/#/users ) с именем пользователя и паролем по умолчанию, который является guest / guest, затем добавил нового пользователя и для этого нового пользователя я включил разрешение на доступ к нему с виртуального хоста, а затем использовал новое имя пользователя и пароль вместо гостевого по умолчанию, и это устранило ошибку.


установите ConnectionFactory или Connection hostname на localhost