Конфигурация EMQX для разрешения анонимного внутреннего соединения - PullRequest
0 голосов
/ 27 января 2020

Я использую emqx в качестве брокера mqtt для моей сенсорной сети. Вот моя желаемая конфигурация. Я хочу разрешить двух разных слушателей для внутренних и внешних подключений.

Слушатель 1 Внешний: 0.0.0.0:8883 Не разрешать анонимное соединение emqx_auth_http включен Этот слушатель предназначен для датчиков вне моего VP C

Слушатель 2 Внутренний: 127.0.0.1:11883 Разрешить анонимный доступ подключения Этот прослушиватель предназначен для нескольких служб, работающих на одной и той же машине (localhost)

Вот мой файл конфигурации (соответствующие параметры)

##--------------------------------------------------------------------
## Authentication/Access Control
##--------------------------------------------------------------------

allow_anonymous = false

##--------------------------------------------------------------------
## Internal Zone
##--------------------------------------------------------------------

zone.internal.allow_anonymous = true


##--------------------------------------------------------------------
## Listeners
##--------------------------------------------------------------------

listener.tcp.external = 0.0.0.0:8883

listener.tcp.external.zone = external


##--------------------------------------------------------------------
## Internal TCP Listener for MQTT Protocol
##--------------------------------------------------------------------

listener.tcp.internal = 127.0.0.1:11883

listener.tcp.internal.zone = internal

Слушатель 1 отлично работает с моим пользовательский API аутентификатора.

Но Listener 2 (внутренний слушатель) не работает должным образом. Он не разрешает анонимные подключения и запускает запрос аутентификации для моего аутентификатора API.

Я что-то не так делаю?

Спасибо за любую помощь:)

Ответы [ 2 ]

1 голос
/ 02 февраля 2020

Ответ на вопрос, основанный на обсуждении этой проблемы https://github.com/emqx/emqx/issues/3225

Проблема в том, что плагин HTTP-аутентификации, похоже, не соответствует настройкам зоны. Чтобы достичь конфигурации аутентификации внутренней зоны, мы должны игнорировать аутентификацию HTTP, как указано в документации.

Аутентификация прошла успешно HTTP

Код состояния: 200

Игнорировать эту сертификацию HTTP

Код состояния: 200 Тело: игнорировать

Ошибка аутентификации HTTP

Код состояния: кроме 200

Как только с этим разобрались, работает следующая конфигурация EMQX.

# Global 
allow_anonymous = false
# external
zone.external.allow_anonymous = false
listener.tcp.external = 0.0.0.0:1883
# internal
zone.internal.allow_anonymous = true
listener.tcp.internal = 127.0.0.1:11883

Эта настройка гарантирует, что клиенты MQTT могут:

  • Анонимно подключиться к 11883 с локального хоста
  • Подключиться к 1883 с HTTP-аутентификацией вне моего VP C и
  • Невозможно анонимно подключиться извне моего VP C

На мой взгляд, было бы лучше, если бы настроить внутреннюю зону, чтобы разрешить анонимное соединение сам обходит HTTP-аутентификацию.

1 голос
/ 29 января 2020

Вчера я создал проблему в репозитории emqX github. Может быть, вы хотите следовать решению этой проблемы. https://github.com/emqx/emqx/issues/3225

Это не так, и ответ, но я борюсь с той же проблемой. Я надеюсь, что это приведет нас к решению.

...