EMQ X >>MQTT>>AUTH>>认证/访问控制一

认证/访问控制

EMQ X 消息服务器 连接认证 和 访问控制 由一系列的认证插件(Plugins)提供,他们的命名都符合 emqx_auth_<name> 的规则。

在 EMQ X 中,这两个功能分别是指:

  1. 连接认证EMQ X 校验每个连接上的客户端是否具有接入系统的权限,若没有则会断开该连接
  2. 访问控制EMQ X 校验客户端每个 发布(Publish)/订阅(Subscribe) 的权限,以 允许/拒绝 相应操作

认证(Authentication)

EMQ X 消息服务器认证由一系列认证插件(Plugins)提供,系统支持按用户名密码、ClientID 或匿名认证。

系统默认开启匿名认证(Anonymous),通过加载认证插件可开启的多个认证模块组成认证链:

_images/guide_2.png

开启匿名认证

etc/emqx.conf 配置启用匿名认证:

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

访问控制(ACL)

EMQ X 消息服务器通过 ACL(Access Control List) 实现 MQTT 客户端访问控制。

ACL 访问控制规则定义:

允许(Allow)|拒绝(Deny) 谁(Who) 订阅(Subscribe)|发布(Publish) 主题列表(Topics)

MQTT 客户端发起订阅/发布请求时,EMQ X 消息服务器的访问控制模块会逐条匹配 ACL 规则,直到匹配成功为止:

_images/guide_3.png

默认访问控制设置

EMQ X 消息服务器默认访问控制,在 etc/emqx.conf 中设置:

## 设置所有 ACL 规则都不能匹配时是否允许访问
## Value: allow | deny
acl_nomatch = allow

## 设置存储 ACL 规则的默认文件
## Value: File Name
acl_file = etc/acl.conf

ACL 规则定义在 etc/acl.conf,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}.

EMQ X 提供的认证插件包括:

插件说明
emqx_auth_clientidClientId 认证/鉴权插件
emqx_auth_username用户名密码认证/鉴权插件
emqx_auth_jwtJWT 认证/鉴权插件
emqx_auth_ldapLDAP 认证/鉴权插件
emqx_auth_httpHTTP 认证/鉴权插件
emqx_auth_mysqlMySQ L认证/鉴权插件
emqx_auth_pgsqlPostgre 认证/鉴权插件
emqx_auth_redisRedis 认证/鉴权插件
emqx_auth_mongoMongoDB 认证/鉴权插件

其中,关于每个认证插件的配置及用法,可参考 扩展插件 (Plugins) 关于认证部分。

注解

auth 插件可以同时启动多个。每次检查的时候,按照优先级从高到低依次检查,同一优先级的,先启动的插件先检查。

此外 EMQ X 还支持使用 PSK (Pre-shared Key) 的方式来控制客户端的接入,但它并不是使用的上述的 连接认证 链的方式,而是在 SSL 握手期间进行验证。详情参考 Pre-shared Key 和 emqx_psk_file

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值