Назад | Перейти на главную страницу

Разрешить анониму читать только в москит

Я пытаюсь создать брокера-комара с двумя слушателями. Один небезопасный и один защищенный TLS. В основном так, что для подписки (чтения) тем вам не нужно предоставлять какие-либо учетные данные и прочее. Но это не работает. Анонимные пользователи по-прежнему могут публиковать сообщения в темах.

Я проконсультировался с страница руководства и ИМХО все сделал правильно, но пока у меня строчка allow_anonymous true даже с первой строкой в ​​acl с topic read # он позволяет анонимно писать. Я дважды проверил с allow_anonymous false использование для проверки пользователя, не включенного в списки ACL. В этом случае я все еще могу публиковать в таких темах, как foo/generic/something Единственное, что изменилось, так это то, что требуется действующий пользователь, но ACL по-прежнему не работают так, как я ожидал.

Так что в основном даже на странице руководства говорится

Первый набор тем применяется к анонимным клиентам при условии, что allow_anonymous истинно.

Это не работает. Что я делаю не так? Использую Mosquitto 1.4.7. Я добавил свои конфигурации ниже (пути немного сумасшедшие, потому что я нахожусь на общей машине)

mosquitto.conf

retry_interval 30
sys_interval 15
store_clean_interval 15
pid_file /home/johndoe/mosquitto/pidfile.pid
port 61883

# tls listener
listener 61884
cafile /home/johndoe/mosquitto/tls/ca.crt
certfile /home/johndoe/mosquitto/tls/server.crt
keyfile /home/johndoe/mosquitto/tls/server.key
require_certificate false
tls_version tlsv1.2

# acls
acl_file /home/johndoe/etc/mosquitto/mosquitto.acl
password_file /home/johndoe/etc/mosquitto/mosquitto.passwd
allow_anonymous true

mosquitto.acl

topic   read    #

user    john
topic   readwrite       foo/

Вы использовали вкладки для разделения полей в файле ACL. Файл ACL требует использования (любого количества) пробелов.

Хотя на странице руководства это явно не указано, файл анализируется strtok_r с разделителем "". Это означает, что допустимыми разделителями являются только пробелы.

Итак, чтобы ваш контроль доступа работал, просто замените табуляции пробелами.