Есть ли какие-либо советы, чтобы получить имя пользователя и пароль, введенные подключенным клиентом в MQTT? особенно москит - PullRequest
0 голосов
/ 02 октября 2019

Я новичок в mqtt, я пытаюсь создать что-то для аутентификации издателя и подписчика только по их паролю имени пользователя (поэтому конфигурация mqtt для разрешения анонимности - это правда). Если у них обоих (издатель и подписчик) одинаковый пароль, имя подписчика будет отправлено подписчику. Таким образом, нам не нужно было устанавливать новый пароль для имени пользователя в нашем брокере mqtt.

Итак, мне нужно что-то, что поможет мне получить имя пользователя и пароль для входа издателя и подписчика. Я работаю с Linux и Go Языки. Помощь с этим условием будет очень полезна. Спасибо

1 Ответ

0 голосов
/ 02 октября 2019

Mosquitto имеет плагин аутентификации API , который можно использовать для аутентификации и авторизации клиентов. Вы можете использовать это для проверки имени пользователя / паролей пользователей, а также для хранения ACL, который контролирует, на какие темы пользователь и публикует / подписывается.

При этом обычный механизм аутентификации MQTT работает путем контроля доступа к темам. У данного использования может быть чтение (подписчик), запись (издатель) или оба доступа к теме (или шаблону темы).

Это означает, что ACL применяется во время подписки или публикации, а не ввремя определения того, должно ли сообщение быть передано конкретному клиенту.

Вы можете достичь того, что хотите, добавив префикс к любой заданной теме с именем пользователя, например,

пользователь foo всегда будет публиковать сообщения на foo/... и может подписаться на foo/#

В схему ACL mosquitto встроена поддержка подстановки имени пользователя в шаблон темы, поэтому вы можете делать такие вещи, как:

pattern readwrite %u/# 
...