Я установил узел RabbitMQ (RabbitMQ 3.6.10, Erlang 20.2.2), чтобы разрешить соединения с использованием протоколов AMQP и MQTT. Я также планировал использовать плагин rabbitmq-auth-backend-http
для аутентификации / авторизации всех запросов.
Это моя конфигурация узла RabbitMQ (/etc/rabbitmq/rabbitmq.conf
):
loopback_users.guest = false
listeners.tcp.default = 5672
management.tcp.port = 15672
log.console.level = debug
mqtt.allow_anonymous = false
auth_backends.1 = http
auth_http.http_method = post
auth_http.user_path = http://localhost/authenticator/api/v1/user
auth_http.vhost_path = http://localhost/authenticator/api/v1/vhost
auth_http.resource_path = http://localhost/authenticator/api/v1/resource
auth_http.topic_path = http://localhost/authenticator/api/v1/topic
Запускается REST API на локальном хосте и предоставляет четыре конечные точки для аутентификации / авторизации. Например, это пример использования:
- Запрос:
http://localhost/authenticator/api/v1/user?username=device_1&password=helloWorld
- Ответ API:
allow
с OK 200
Плагины на узле RabbitMQ включены следующие:
[E*] rabbitmq_amqp1_0 3.6.10
[E*] rabbitmq_auth_backend_http 20171215-3.6.x
[E*] rabbitmq_management 3.6.10
[E*] rabbitmq_mqtt 3.6.10
При попытке подключиться к клиенту MQTT с использованием тех же учетных данных, что и выше (имя пользователя = device_1, пароль = helloWorld), клиент печатает CONNACK received with code 4
. Журнал узла RabbitMQ показывает следующее:
=INFO REPORT==== 7-May-2020::03:50:09 ===
MQTT vhost picked using plugin configuration or default
=ERROR REPORT==== 7-May-2020::03:50:09 ===
MQTT login failed for "device_1" auth_failure: Refused
При попытке подключения с использованием клиента AMQP с теми же учетными данными выдается исключение ConnectionClosedByBroker: (403) 'ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.'
.
Журналы RabbitMQ показывают следующее :
accepting AMQP connection <0.1878.0> (127.0.0.1:57994 -> 127.0.0.1:5672)
=ERROR REPORT==== 7-May-2020::03:53:14 ===
Error on AMQP connection <0.1878.0> (127.0.0.1:57994 -> 127.0.0.1:5672, state: starting):
PLAIN login refused: user 'device_1' - invalid credentials
=INFO REPORT==== 7-May-2020::03:53:14 ===
closing AMQP connection <0.1878.0> (127.0.0.1:57994 -> 127.0.0.1:5672)
В обоих случаях журнал REST API не показывает никаких попыток подключения, исходящих от узла RabbitMQ для аутентификации обоих запросов.
Я уже несколько дней читаю Документация RabbitMQ и пробуем разные параметры. Однако я пока не мог понять это правильно.
Что мне здесь не хватает?
PS: Те же проблемы возникают с RabbitMQ 3.7.25 и 3.8