EMQ X 生产环境鉴权配置详解(连接认证与访问控制)

EMQ的应用场景、下载、运行,官方文档都说的很细,本篇主要总结一下生产环境下,暴露于外网下的EMQ的访问鉴权配置。

警告:建议版本是3.2.2,请不要使用3.1版本(bug:任何人可以直接通过DashBoard的18083端口调用rest api创建用户)

EMQ X 消息服务器的鉴权主要有连接认证和访问控制俩部分组成,提供了的一系列相关的认证插件(Plugins)。  

连接认证: EMQ X 校验每个连接上的客户端是否具有接入系统的权限,若没有则会断开该连接

访问控制: EMQ X 校验客户端每个 发布(Publish)/订阅(Subscribe) 的权限,以 允许/拒绝 相应操作

连接认证支持按用户名密码、ClientID 或匿名认证,我使用的是emqx_auth_username插件( 用户名密码认证/鉴权),此处注意的是系统默认开启匿名认证(Anonymous),所在在生产环境中我们在etc/emqx.conf 配置文件中禁用匿名认证。

## Value: true | false 是否允许匿名访问 
allow_anonymous = false

然后在dashboard把我们要使用的插件启动起来

然后继续在dashboard中创建应用

接下来,我们使用它的api来创建一个用户,注意它的api是带有basic认证的,不然提示无权,postman中填入的认证信息就是我们刚才在dashboard应用中创建的 AppID 和 AppSecret 。

至此连接认证我们就配置完成了。接下来我们要指定该用户可以订阅哪些消息,发布哪些消息的权限了。也就是ACL配置。

首先,我们要在etc/emqx.conf 配置文件中把此项禁用

## 当acl规则没有匹配到的时候就会找的这个参数,如果为allow,则会通过验证,为deny就会不通过验证
## ACL nomatch. Enum: allow, deny
acl_nomatch = deny

然后在 etc/acl.conf配置文件中定义ACL 规则,EMQ X 启动时加载到内存中。

%% 允许 'dashboard' 用户订阅 '$SYS/#'
{allow, {user, "dashboard"}, subscribe, ["$SYS/#"]}.

%% 允许本机用户发布订阅全部主题
{allow, {ipaddr, "127.0.0.1"}, pubsub, ["$SYS/#", "#"]}.

%% 拒绝除本机用户以外的其他用户订阅 '$SYS/#' 与 '#' 主题
{deny, all, subscribe, ["$SYS/#", {eq, "#"}]}.

%% 允许上述规则以外的任何情形
{allow, all}.

配置完成就大功告成了。接下来通过websocket连接工具来连接一下。其中有一些细节。

注意:确认服务器的端口是否被别的进程占用,emqt启动是不会报错的。

 

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值