Брокер Mosquitto отказывает в подписке на многоуровневые подстановочные знаки '#'?

Я использую брокер Mosquitto (версия 1.4.14) с плагином mosquitto-auth-plugin (серверная часть HTTP). Клиенты должны аутентифицироваться с помощью имени пользователя и пароля и в некоторых случаях выполнять acl-требования.

Похоже, что все прошедшие аутентификацию пользователи могут подписаться на тему "#", которая показывает все пабы по всем темам.

В ACL подстановочный знак # кажется уже заменен названием темы, поэтому я не могу отказать в подписке.

Можно ли отказать в подписке на все темы в конфигурации?

Если темы начинаются с символа $ chr, проблема решена, но в спецификации MQTT сказано: «Приложения не могут использовать тему с начальным символом $ для своих собственных целей». (4.7.2 Темы, начинающиеся с $)


person user3097526    schedule 06.03.2018    source источник
comment
Пользователи смогут подписаться на #, но они будут видеть только те темы, которые разрешены через ACL. Измените вопрос, включив в него образец ACL, чтобы мы могли видеть, что вы настраиваете.   -  person hardillb    schedule 06.03.2018
comment
Так что это невозможно по замыслу. Я изменил ACL так, чтобы тема содержала clientid, чтобы разрешить pub / sub. Это решило проблему.   -  person user3097526    schedule 06.03.2018


Ответы (1)


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

person hardillb    schedule 06.03.2018