MQTT:Dashboard访问授权

发布于:2025-08-12 ⋅ 阅读:(20) ⋅ 点赞:(0)


一、认证

认证:就是验证客户端的身份。

1.1 创建认证器

  1. 选择认证方式
  2. 配置数据源
  3. 配置数据源的相关参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
认证器创建之后,在使用客户端连接Dashboard时,就需要用户名以及密码的验证了
在这里插入图片描述

1.2 多认证器

Dashboard可以创建多个认证器,认证的过程从上往下依次执行。

在这里插入图片描述
在这里插入图片描述
建表语句

DROP TABLE IF EXISTS `mqtt_user`;
CREATE TABLE `mqtt_user`  (
  `id` int(0) NOT NULL,
  `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `password_hash` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `salt` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of mqtt_user
-- ----------------------------
INSERT INTO `mqtt_user` VALUES (1, 'root', '63a9f0ea7bb98050796b649e85481845', NULL);

SET FOREIGN_KEY_CHECKS = 1;

MySQL查看MD5加密之后的数据

SELECT MD5('root');

二、授权

通常情况下,认证只是验证了客户端身份是否合法,而客户端是否具备发布、订阅某些主题的权限,还需要授权系统来判断,在EMQX中,授权是指对MQTT客户端的发布和订阅操作进行权限控制

2.1 ACL文件授权配置

每一条授权独占一行,由四部分组成,使用点(.)进行分割。

{allow, all, subscribe, ["$SYS/#", "#"]}.

第一部分:规则对应的权限,

  • allow:允许
  • deny:禁止

第二部分:适用此规则的客户端

  • all:匹配所有客户端
  • {username, “admin”}:指定单用户
  • {username, {re, “^dash”}}:正则匹配用户
  • {clientid, “admin”}:指定单客户端ID
  • {clientid, {re, “^dash”}}:正则匹配客户端ID
  • {ipaddr, “127.0.0.1”}:指定单IP地址
  • {ipaddr, [“127.0.0.1”, …]}:指定多IP地址
  • {‘and’, [Spec1, Spec2, …]}:满足列表中所有规范的客户端
  • {‘or’, [Spec1, Spec2, …]}:满足列表中任意规范的客户端

第三部分:指定规则对应的操作

  • publish:发布消息
  • subscribe:订阅消息
  • all:发布和订阅

第四部分:指定规则适用的MQTT主题,支持通配符,可以使用主题占位符

  • {allow, all}:允许所有请求
  • {deny, all}:禁止所有请求
  • "t/${clientid}":使用主题占位符,当客户端ID为emqx_c的客户端触发检查时,将精准匹配t/emqx_c主题。
  • "$SYS/#":通配符匹配$SYS开头的所有主题,例如:$SYS/foo$SYS/foo/bar
  • {eq, "foo/#"}:精确匹配foo/#主题,主题foo/bar将无法匹配,此处eq表示全等比较。

2.2 使用内置数据库授权配置

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到