Permitir anônimo somente lido no mosquito

2

Estou tentando conseguir um corretor de mosquitos com dois ouvintes. Um inseguro e um protegido por TLS. Basicamente, para tópicos de assinatura (leitura) você não precisa fornecer nenhuma credencial ou material. Mas não funciona. Usuários anônimos ainda podem publicar em tópicos.

Consultei a página de manual e a IMHO fez tudo certo, mas enquanto eu tiver a linha allow_anonymous true mesmo com a primeira linha em acl com topic read # permite gravação anônima. Eu verifiquei novamente com allow_anonymous false usando um usuário que não está incluído nas ACLs para verificar. Nesse caso, ainda posso publicar tópicos como foo/generic/something , a única coisa que mudou é que um usuário válido é necessário, mas as ACLs ainda não funcionam como seria de esperar.

Então, basicamente, até os estados da página man

The first set of topics are applied to anonymous clients, assuming allow_anonymous is true.

Não funciona. O que estou fazendo de errado? Estou usando o mosquito 1.4.7. Eu adicionei minhas configurações abaixo (os caminhos são um pouco loucos, porque eu estou em uma máquina compartilhada)

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/
    
por Mose 20.04.2016 / 01:16

1 resposta

3

Você usou guias para separar os campos no arquivo ACL. O arquivo ACL requer o uso de (qualquer número de) espaços.

Enquanto a página man não declara explicitamente que o arquivo é analisado por strtok_r com um delimitador de "". Espaços que significam apenas são delimitadores aceitáveis.

Para que o controle de acesso funcione, basta substituir as guias por espaços.

    
por 23.04.2016 / 20:33