实现原理:EMQ可以通过制订ACL规则,校验客户端每个发布(Publish)/订阅(Subscribe) 的权限
本次采用的是EMQ Mnesia ACL。使用 EMQ X 内置的 Mnesia 数据库存储 ACL 规则
测试过程:
1本次实验环境,1个服务端(发布1个主题),2个客户端订阅这1个主题.
客户端ID=jiang,jiang123
服务端ID=mqtt_jryclient_id_001
2采用PSOTMAN直接调用HTTP API实现规则写入。
规则字段说明:
login:客户端的 Username 或 Client ID.
topic:控制的主题
action:操作行为,可选值:pub | sub | pubsub
allow:是否允许
写入规则1:允许客户端ID(jiang)订阅主题123
写入规则2:不允许客户端ID(jiang123)订阅主题123
3 然后执行服务端发布和客户端订阅操作,查看结果
结果:只有1个客户端负责规则订阅成功
主题数只有1个。
结论:EMQ可以设定ACL规则,来控制每个客户端对主题的订阅权限。
可以实现1个主题,只允许1个客户端订阅。或允许指定多个客户端订阅1个主题
控制的规则可以直接调取HTTP请求,也可以使用外部 MySQL 数据库存储 ACL 规则