Проблема с использованием rabbitmq-auth-backend-http для аутентификации запросов MQTT и AMQP - PullRequest
0 голосов
/ 07 мая 2020

Я установил узел 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

...