我正在尝试使用MQTT为Android创建一个聊天应用程序,但是关于如何做到这一点的信息有限。
到目前为止,我已经设置了MQTT代理,但任何用户都可以收听并发布他们想要的任何主题(当然这不是聊天应用程序中的内容)。
我使用mosquitto作为我的经纪人,并在其文档中列出了这组功能:
使用以下格式的行添加主题访问:
topic [read|write|readwrite] <topic>
还可以基于模式替换来定义ACL 在主题内。表单与topic关键字相同,但是 使用模式作为关键字。
pattern [read|write|readwrite] <topic>
可用于替代的模式是:
%c to match the client id of the client %u to match the username of the client
替换模式必须是该级别的唯一文本 层次结构。模式ACL适用于所有用户,即使&#34;用户&#34;关键词 以前已经给过。
示例:
pattern write sensor/%u/data
允许访问桥接连接消息:
pattern write $SYS/broker/connection/%c/state
到目前为止,我想过做的事情:
pattern readwrite chat/%u/msg
但这会限制每个用户对自己的主题进行读/写,而这并不是预期的行为。
所以我的问题是:
有没有办法为主题设置动态权限?
如何在A-B-C之间的聊天中确保A-B-C的主题仅 A-B-C可以读写?
答案 0 :(得分:1)
不使用ACL文件,但mosquitto支持ACL的插件系统
e.g。 https://github.com/jpmens/mosquitto-auth-plug/
这允许您将ACL存储在可以即时更新的数据库中