3、emqx_auth_mysql批量定义ACL鉴权

本文介绍了如何使用emqx_auth_mysql模块进行批量定义ACL鉴权,重点讲解了mqtt_acl表的字段含义,如allow、ipaddr、access等,并提供了变量说明,如%a、%u、%c。通过示例展示了如何为用户配置订阅和发布权限,以及如何通过auth.mysql.acl_query查询语句实现动态topic名称的设定。

emqx_auth_mysql批量定义ACL鉴权

  • 参考 https://blog.youkuaiyun.com/u011142688/article/details/79852325

  • 参考 https://blog.youkuaiyun.com/u011142688/article/details/79852306

  • 参考 https://www.jianshu.com/p/65935a753eab

在初始化好mqtt_acl表后,可以在表中配置设备的订阅和发布权限

1、mqtt_acl表的字段说明

  • allow字段
    1: allow; 0: deny

  • ipaddr字段
 客户端的IP地址

  • username字段
客户端的用户名,如果表示所有用户可以使用$all表示

  • clientid字段
 客户端的clientId

  • access字段
1: subscribe(订阅); 2: publish(发布); 3: publish and subscribe(发布和订阅);



  • topic字段
 主题字段
 “#”:除以 '$' 字符开头以外的任何主题;
 "$SYS/#":以 "$SYS/" 开头的主题
 “eq #”:  "#" 主题

 

2、mqtt_

### 开启 MQTT 账号认证 EMQ X 以插件形式支持基于 Username、ClientID、HTTP、JWT、LDAP 及各类数据库如 MongoDB、MySQL、PostgreSQL、Redis 等多种形式的认证[^3]。以下介绍几种常见方式: - **用户名密码认证**:使用 `emqx_auth_username` 插件。可以通过以下命令添加、删除账号及查询账号列表: ```bash # 添加一个账号 test,密码 123456 ./emqttd_ctl users add test 123456 ok # 删除一个账号密码 ./emqttd_ctl users del 账号名 ok # 查询存在的账号列表 ./emqttd_ctl users list ``` - **HTTP 认证**:通过配置 EMQ X 使用 HTTP API 实现账号认证。配置示例如下: ```plaintext auth.http { enable = true auth_req { url = "http://your-auth-server.com/auth" method = post body = '{"clientid": "${clientid}", "username": "${username}", "password": "${password}"}' headers.content-type = "application/json" } } ``` - **JWT 认证**:Jwt 的全称是 JSON Web Token,是目前比较流行的接口认证解决方案。客户端发送用户名密码信息到认证服务器获取 token;客户端请求 API 获取数据时带上 token;服务器端验证 token,合法则返回正确的数据[^5]。 ### 解决 EMQ X 中认证插件停止运行的问题 #### 检查配置文件 认证插件停止运行可能是配置文件存在错误。需检查 `emqx_auth_http`、`emqx_auth_jwt` 等插件的配置文件,确保各项参数配置正确,例如 `emqx_auth_http` 中的 `url`、`method` 等。 #### 查看日志文件 查看 EMQ X 的日志文件,日志文件中会记录插件启动过程中的错误信息,根据错误信息进行排查。日志文件通常位于 EMQ X 安装目录下的 `logs` 文件夹中。 #### 检查依赖服务 如果插件依赖其他服务,如 `emqx_auth_http` 依赖 HTTP 服务,`emqx_auth_jwt` 依赖 JWT 认证服务器,需确保这些服务正常运行。 #### 重启 EMQ X 及插件 可以尝试重启 EMQ X 以及相关认证插件: ```bash # 停止 EMQ X ./emqx stop # 启动 EMQ X ./emqx start # 启动 emqx_auth_http 插件 ./emqx_ctl plugins load emqx_auth_http # 启动 emqx_auth_jwt 插件 ./emqx_ctl plugins load emqx_auth_jwt ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值