Mosquitto - аутентификация по имени пользователя и паролю
Брокер Mosquitto MQTT можно настроить так, чтобы он требовал аутентификации клиента с использованием действительного имени пользователя и пароля, прежде чем будет разрешено соединение. Комбинация имени пользователя и пароля передается в виде открытого текста и не является безопасной без какой-либо формы транспортного шифрования (SSL). Однако использование аутентификации по имени пользователя и паролю обеспечивает простой способ ограничения доступа к брокеру. Примечание . Имя пользователя , используемое для аутентификации, также можно использовать для ограничения доступа к темам ACL.
В этом руководстве мы рассмотрим, как настроить ограничения имени пользователя и пароля в брокере Mosquitto, а также посмотрим, как это работает, рассмотрев некоторые примеры подключения с использованием консоли.
Конфигурация брокера Mosquitto
Все формы ограничений, например идентификатор клиента, имя пользователя/пароль, тема и т. д., реализованы в брокере MQTT.
После внедрения на брокере клиент должен соблюдать эти ограничения для подключения, подписки и публикации.
Для настройки брокера Mosquitto вам необходимо:
- Создайте файл паролей
- Отредактируйте файл mosquitto.conf , чтобы принудительно использовать пароль.
Для создания файла паролей необходимо использовать утилиту mosquitto_passwd , которая входит в состав клиентских инструментов при установке брокера Mosquitto .
Сначала давайте создадим новый файл пользователей:
sudo touch /mosquitto/passwd.conf
sudo chown mosquitto:mosquitto /mosquitto/passwd.conf
sudo chmod 0640 /mosquitto/passwd.conf
Есть несколько способов сделать это:
Способ 1
Заполнить созданный файл строками имя пользователя и пароли, по одному в каждой строке, разделив имя пользователя и пароль двоеточием, как показано ниже.
user1:Password1
user2:Password2
Закройте файл в текстовом редакторе.
Теперь вам нужно преобразовать файл паролей, который шифрует пароли. Перейдите в командную строку и введите:
mosquitto_passwd -U passwordfile
пример
mosquitto_passwd -U passwd.conf
Теперь, если вы снова откроете файл паролей, вы увидите уже зашифрованные пароли. Файл паролей теперь готов к использованию.
Способ 2
Вы создаете файл паролей с помощью команды
mosquitto_passwd -c passwordfile user
пример
mosquitto_passwd -c passwd.conf User2
Обратите внимание, что для этого вам необходимо ввести имя пользователя. Это добавит пользователя в файл паролей.
Вам будет предложено ввести пароль для пользователя.
Будьте осторожны, так как пароль не отображается, и не похоже, что он принят, но это так.
Теперь вы можете использовать команду
mosquitto_passwd -b passwordfile user password
пример
mosquitto_passwd -b passwd.conf User3 password
чтобы добавить в файл дополнительных пользователей.
Вы также можете удалить пользователей из файла паролей с помощью команды
mosquitto_passwd -D passwordfile user
пример
mosquitto_passwd -D User3 passwd.conf
Проверяем.
Использование файла паролей
Теперь, когда у нас есть файл пользователя, мы можем сообщить о нем Mosquitto. Добавьте в свой файл следующее :/mosquitto/mosquitto.conf
# Require a username / password to connect
allow_anonymous false
# ....which are stored in the following file
password_file /etc/mosquitto/mosquitto_users
Это отключает анонимный доступ и сообщает Mosquitto, где находится файл имени пользователя и пароля.
Обнаружение ошибок аутентификации
Если вы попытаетесь подключиться к брокеру без правильных данных аутентификации, соединение будет отклонено.
Чтобы обнаружить это, вам нужно будет проверить обратный вызов on_connect .
Если вы изучите документацию метода обратного вызова on_connect , вы увидите, что он принимает 4 параметра.
on_connect (клиент, пользовательские данные, флаги, rc):
Параметр rc является кодом возврата и должен быть равен 0 для хорошего соединения.
Код возврата 5 указывает на ошибку аутентификации .
Примеры подключения по паролю:
Проверить работу можно с помощью командной строки, используя утилиты:
mosquitto_sub
- для подписки на темы
mosquitto_pub
- для публикации сообщений
Пример использования публикации с авторизацией.
mosquitto_pub -h 10.10.11.18 -t "test/test" -m "hello world" -u "root" -P "пароль"
где:
-h - сервер
-t - тема куда отправляем сообщение
-m - текст сообщения
-u - имя пользователя
-p - пароль
Пример использования подписки авторизацией.
mosquitto_sub -h 10.10.11.18 -t test -u "root" -P "пароль"
где:
-h - сервер
-t - тема откуда получать сообщения
-u - имя пользователя
-p - пароль
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.