MQTT密码保护通道

时间:2017-12-13 11:34:12

标签: mqtt mosquitto home-automation

我使用Mosquitto作为我的本地网络mqtt经纪人,并且有几个客户发布和订阅不同的渠道。

由于mosquitto(使用配置中的password_file)对客户端进行身份验证以访问代理,有没有办法 ecure个别渠道

我想让一些传感器控制灯光(即)但不是每个传感器都可以控制窗户。

1 个答案:

答案 0 :(得分:1)

Mosquitto支持ACL,可让您设置用户可以订阅/发布的主题。有关如何创建ACL文件的详细信息,请参见mosquitto.conf man页面:

  

acl_file文件路径

     

设置访问控制列表文件的路径。如果   定义后,该文件的内容用于控制客户端访问   关于经纪人的话题。

     

如果定义了此参数,则只列出所列主题   访问。主题访问添加了以下格式的行:

     

主题[read | write | readwrite]

     

使用“read”,“write”或“readwrite”控制访问类型。   此参数是可选的(除非包含空格字符)    - 如果没有给出,那么访问是可读/写的。可以包含订阅中的+或#通配符。

     

假设,第一组主题适用于匿名客户端   allow_anonymous为true。用户特定主题ACL在a之后添加   用户行如下:

     

用户

     

此处引用的用户名与password_file中的用户名相同。它是   而不是clientid。

     

还可以基于模式替换来定义ACL   在主题内。表单与topic关键字相同,但是   使用模式作为关键字。

     

pattern [read | write | readwrite]

     

可用于替代的模式是:

     

%c以匹配客户端的客户端ID

     

%u匹配客户端的用户名

     

替换模式必须是该级别的唯一文本   层次结构。即使是“user”关键字,模式ACL也适用于所有用户   以前已经给过。

     

示例:

     

模式写入传感器/%u / data

     

允许访问桥接连接消息:

     

模式写入$ SYS / broker / connection /%c / state

     

如果ACL文件的第一行字符是#,则对其进行处理   作为评论。

     

重新加载重载信号。将释放当前加载的ACL   重新加载。重新加载后,现有订阅将受到影响。