<物联网>emqx服务器关闭匿名认证并开启ClientId认证

一、前言

EMQX服务器默认情况是允许任意客户端接入的(只要获得服务器IP地址和端口),这也方便开发人员测试。但根据实际需求或者在生产环境中,只允许认证的终端接入,防止一些其他终端恶意接入破坏系统。

二、知识储备

身份认证是大多数应用的重要组成部分,MQTT 协议支持用户名密码认证,启用身份认证能有效阻止非法客户端的连接。
EMQ X 中的认证指的是当一个客户端连接到 EMQ X 的时候,通过服务器端的配置来控制客户端连接服务器的权限。
EMQ X 的认证支持包括两个层面:
MQTT 协议本身在 CONNECT 报文中指定用户名和密码,EMQ X 以插件形式支持基于 Username、ClientID、HTTP、JWT、LDAP 及各类数据库如 MongoDB、MySQL、PostgreSQL、Redis 等多种形式的认证。
在传输层上,TLS 可以保证使用客户端证书的客户端到服务器的身份验证,并确保服务器向客户端验证服务器证书。也支持基于 PSK 的 TLS/DTLS 认证。

说到插件,就得先了解一下钩子

在这里插入图片描述
钩子(Hooks) 是 EMQ X 提供的一种机制,它通过拦截模块间的函数调用、消息传递、事件传递来修改或扩展系统功能。

简单来讲,该机制目的在于增强软件系统的扩展性、方便与其他三方系统的集成、或者改变其系统原有的默认行为。

逻辑图:
在这里插入图片描述

三、设置认证

1.开启ClientId认证

在这里插入图片描述
点击manage可以新增、修改、删除用户认证。
在这里插入图片描述
可以通过配置文件修改加密方式预设认证数据
在这里插入图片描述
在这里插入图片描述

如图,预设认证数据在配置文件中使用了明文密码,出于安全性与可维护性考虑应当避免使用该功能。

在这里插入图片描述

然后在websocket测试:
在这里插入图片描述
提示连接拒绝,原因是未认证。因为上面给这个clientId为1的设置了密码。需要填入正确的密码才可以连接。

但改了一下clientId,发现其他终端不用密码也能随意接入。因为emqx的认证机制是如下图所示的认证链

在这里插入图片描述

所以这里要关掉默认开启的匿名认证

2.关闭匿名认证

打开emqx.conf
在这里插入图片描述
把true改成false:
在这里插入图片描述
然后发现其他终端还是能随意接入,重启一下看看。

在这里插入图片描述
在这里插入图片描述
成功了,一般改了核心配置文件,都要重启一下服务。

3.其他认证方式

在这里插入图片描述
这里只用了一种认证方式,其他的以后有机会再用吧。

mysql认证刚试了一下,也是很简单的,照着官方文档做就可以了。


闲谈

留心街中每个人/彼此匆匆过/皱着眉心”。
我们仍处于焦虑的年代。男女老少在为生存焦虑、为爱情焦虑、为名利焦虑……

焦虑或许不是坏事,它能让我们不停思索。

伯恩斯坦于1947—1948年创作了他的第二交响曲——《焦虑的年代》。三部交响曲中我独爱这一部,里面有你我都同样经历过的孤独、狂欢、希望和焦虑。曲子最后三分钟的尾声部分,从平静的钢琴叙述到马勒式的自我解放,每次听都能感受到如魔法般治愈人心的力量。尽管不久后又重回焦虑,也无需惧怕,音乐给予的片刻安宁会让我们不那么彷徨。

在这里插入图片描述
The Age of Anxiety, Symphony No. 2 for Piano and Orchestra (after W. H. Auden):c. The Epilogue: Adagio; Andante; Con Moto

【伯恩斯坦】【Bernstein】第二交响曲“焦虑的时代”The Age of Anxiety Symphony No.2

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
EMQ X 支持使用 MySQL 进行认证,具体配置步骤如下: 1. 安装 MySQL 和 Python 的 MySQL 驱动程序 2. 创建 EMQ X 所需的数据库和数据表,可以使用以下 SQL 语句: ```sql CREATE DATABASE emqx_auth; USE emqx_auth; CREATE TABLE mqtt_user ( id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, username VARCHAR(100) NOT NULL, password VARCHAR(100) NOT NULL, is_superuser BOOL NOT NULL DEFAULT FALSE, PRIMARY KEY (id), UNIQUE KEY mqtt_user_username_uindex (username) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE mqtt_acl ( id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, allow INT(1) NOT NULL DEFAULT 1, ipaddr VARCHAR(60) NOT NULL DEFAULT '', username VARCHAR(100) NOT NULL, clientid VARCHAR(100) NOT NULL, access INTEGER(2) NOT NULL, topic VARCHAR(256) NOT NULL, PRIMARY KEY (id), KEY mqtt_acl_username_clientid_topic_uindex (username,clientid,topic) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ``` 3. 配置 EMQ X,编辑 emqx.conf 文件,将 auth.acl.auth_mysql 和 auth.user.auth_mysql 配置为 true,同时配置数据库连接信息,例如: ```conf auth.user.auth_mysql = on auth.user.mysql.server = 127.0.0.1:3306 auth.user.mysql.username = root auth.user.mysql.password = root auth.user.mysql.database = emqx_auth auth.user.mysql.pool = 8 auth.acl.auth_mysql = on auth.acl.mysql.server = 127.0.0.1:3306 auth.acl.mysql.username = root auth.acl.mysql.password = root auth.acl.mysql.database = emqx_auth auth.acl.mysql.pool = 8 ``` 4. 重启 EMQ X,使配置生效。 注意:以上配置仅供参考,实际配置应根据具体情况进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值