【问题标题】:MQTT password protected channelMQTT 密码保护通道
【发布时间】:2017-12-13 23:14:47
【问题描述】:

我使用 Mosquitto 作为我的本地网络 mqtt 代理和几个客户发布和订阅不同的频道。

由于客户端通过 mosquitto 身份验证(使用配置中的密码文件)以访问代理,有没有办法保护单个通道

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

【问题讨论】:

    标签: mqtt mosquitto home-automation


    【解决方案1】:

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

    acl_file 文件路径

    设置访问控制列表文件的路径。如果 定义后,文件的内容用于控制客户端访问 关于代理的主题。

    如果定义了这个参数,那么只有列出的主题才会有 使用权。使用以下格式的行添加主题访问:

    主题[读|写|读写]

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

    第一组主题应用于匿名客户端,假设 allow_anonymous 为真。用户特定主题 ACL 在 用户行如下:

    用户

    这里提到的用户名与password_file中的用户名相同。这是 不是clientid。

    还可以根据模式替换定义 ACL 主题内。形式与主题关键字相同,但 使用模式作为关键字。

    模式[读|写|读写]

    可供替换的模式有:

    %c 匹配客户端的客户端id

    %u 匹配客户端的用户名

    替换模式必须是该级别的唯一文本 等级制度。模式 ACL 适用于所有用户,即使“用户”关键字 之前已经给出了。

    例子:

    模式写入sensor/%u/data

    允许访问网桥连接消息:

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

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

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

    【讨论】:

    • 好吧似乎与 mosquitto 一起工作,认为 mqtt 标准中可能有解决方案。非常感谢!
    • 不,每个代理都以自己的方式实现 ACL
    猜你喜欢
    • 2019-10-19
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 2013-09-05
    • 2013-04-26
    • 2016-01-26
    • 2014-06-15
    相关资源
    最近更新 更多