Emqtt-如何为大量客户端实现ACL
我正在为我的下一个应用程序使用Emqtt(Emqtt.io)代理。现场是—— 我将有多个客户端(10000个),每个客户端都将发布或订阅主题。但是我想限制每个客户端只发布和订阅包含自己客户端id的主题-例如 主题为: 我的设备/12345/update 我的设备/99998/update 我的设备/88888/update 如果中间属性是客户机ID,我如何限制客户机只对特定主题进行pub,而没有人应该能够订阅 我的设备/#,从而接收我的所有信息Emqtt-如何为大量客户端实现ACL,mqtt,iot,Mqtt,Iot,我正在为我的下一个应用程序使用Emqtt(Emqtt.io)代理。现场是—— 我将有多个客户端(10000个),每个客户端都将发布或订阅主题。但是我想限制每个客户端只发布和订阅包含自己客户端id的主题-例如 主题为: 我的设备/12345/update 我的设备/99998/update 我的设备/88888/update 如果中间属性是客户机ID,我如何限制客户机只对特定主题进行pub,而没有人应该能够订阅 我的设备/#,从而接收我的所有信息 我看到了ACL插件,看到了这段代码({allow,
我看到了ACL插件,看到了这段代码({allow,{user,“dashboard”},subscribe,[“$SYS/#“]}),但我必须手动定义每个客户端?如果添加了一个新用户,我将如何自动再添加一个规则?因为据我所知,这个文件是在代理启动时加载的,对吗我想使用基于某个数据库的ACL。你能帮我吗 Emqtt用户指南列出了一组可用于在数据库中存储ACL的插件:
该文档中的链接已断开,但项目托管在同一git组织下。Emqtt用户指南列出了一组可用于将ACL存储在数据库中的插件:
该文档中的链接已断开,但项目托管在同一git组织下最好的选择是使用auth/acl插件。我更喜欢mongodb插件,但还提供了其他插件 从他们的docson github: 它非常适合身份验证,但我目前还无法使用插件设置订阅或发布
此外,如果插件在身份验证方面给您带来问题,请尝试从源代码构建您的emqtt最好的选择是使用用于auth/acl的插件。我更喜欢mongodb插件,但还提供了其他插件 从他们的docson github: 它非常适合身份验证,但我目前还无法使用插件设置订阅或发布 此外,如果插件在身份验证方面给您带来问题,请尝试从源代码构建您的emqtt 1.登录 检查登录的很多方法
- http
- redis/mysql
- http
- redis/mysql
- %c-客户端
- %u-用户名
- 订阅
- 发表
- pubsub
XXX
subclients/XXX
:
{allow, all, subscribe, ["clients/%c"]}.
{allow, all, pubsub, ["clients/%u"]}.
允许用户名XXX
pub/subclients/XXX
:
{allow, all, subscribe, ["clients/%c"]}.
{allow, all, pubsub, ["clients/%u"]}.
拒绝所有其他:
{deny, all}.
v4中的示例,但v2也支持
%c
%u
应用更改
$emqttd\u ctl acl重新加载
注意:所有集群节点都应该配置一个.auth插件
1.登录
检查登录的很多方法
- http
- redis/mysql
- http
- redis/mysql
- %c-客户端
- %u-用户名
- 订阅
- 发表
- pubsub
XXX
subclients/XXX
:
{allow, all, subscribe, ["clients/%c"]}.
{allow, all, pubsub, ["clients/%u"]}.
允许用户名XXX
pub/subclients/XXX
:
{allow, all, subscribe, ["clients/%c"]}.
{allow, all, pubsub, ["clients/%u"]}.
拒绝所有其他:
{deny, all}.
v4中的示例,但v2也支持
%c
%u
应用更改
$emqttd\u ctl acl重新加载
注意:所有集群节点都应该配置