mqtt redis认证配置

本文介绍了如何使用EMQXMQTT服务器配合Redis进行用户认证和权限控制。配置包括在emqx.conf中设置最大报文尺寸和权限控制,以及在emqx_auth_redis.conf中配置Redis连接参数和认证命令。用户认证支持明文或加密密码,ACL控制通过Redis存储订阅和发布的权限规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mqtt redis认证配置

说明:mqtt服务采用emqx服务
emqx文档:
https://www.emqx.io/docs/zh/v4.3/
本文档旨在说明mqtt的用户认证以及主题认证,提高mqtt使用的安全性。
本次认证采用redis储存认证数据。
涉及的配置文件有 emqx.conf和 /plugins/emqx_auth_redis.conf。

1、mqtt基础配置
在emqx.conf中

//最大报文尺寸
mqtt.max_packet_size = 10MB /
 //飞行窗口的最大大小,用于提高速度
zone.external.max_inflight = 320

2、权限控制的配置
在emqx.conf中

//权限控制的配置(非必要不使用)
//是否允许匿名访问,改为禁止
allow_anonymous = false 

//权限控制改为默认拒绝访问
acl_nomatch = deny

//指定权限控制配置文件
acl_file = /etc/emqx/plugins/emqx_auth_redis.conf 

3、mqtt用户认证配置
在emqx_auth_redis.conf 中

//Redis数据库配置:ip+端口 链接池大小 几号数据库 密码
auth.redis.server = 127.0.0.1:6379
auth.redis.pool = 8
auth.redis.database = 0
auth.redis.password =xxx

1)基本认证方式:用户名+密码的方式

auth.redis.auth_cmd = HMGET mqtt_user:%u password
//说明:%u 表示用户 %c 表示用客户端id 认证 
//密码校验方式: plain 明文认证(默认),
auth.redis.password_hash = plain

2)基本认证方式:如密码加密方式
plain:名文
md5:MD5
sha\sha256\sha512:哈希算法

//说明:%u 表示用户 %c 表示用客户端id 认证  salt 椒盐值
auth.redis.auth_cmd = HMGET mqtt_user:%u password salt
//密码加密规则:椒盐在前明文密码在后
auth.redis.password_hash = salt,plain

如图
!](https://img-blog.csdnimg.cn/03a6b955acb540199a9706e491aca2a5.png)

4、mqtt 发布订阅控制(acl)配置

首先将模块中的emqx_mod_acl_internal停掉,在开启emqx_auth_redis 插件
在这里插入图片描述在这里插入图片描述

修改配置文件
在emqx_auth_redis.conf 中

//发布订阅指定用户 说明:%u用的是用户名匹配 %c用的是客户端id
auth.redis.acl_cmd = HGETALL mqtt_acl:%u
//Redis的写法是:
SET mqtt_acl:emqx testtopic/2 2 
//说明:mqtt_acl前缀 ,emqx 用户名 testtopic/2 主题 2:access: 允许的操作,1 为仅允许订阅,2 为仅允许发布,3 为允许订阅和发布

如下图所示:emqx只能订阅test1的主题,可以同时实现发布、订阅功能
在这里插入图片描述
至此权限管理完成

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值