EMQX MQTT 服务器(下篇)| 开启客户端身份安全认证并使用mqtt.fx测试

0. 准备工作

  • EMQ-X服务器版本说明

经过实际测试,EMQ X 版本高于3.0.1版本无法配置使用插件,所以在进行本节实验之前,先删除原有的EMQ-X,下载安装3.0.1版本

  • mqtt.fx工具

使用方法参考:mqtt.fx | 一款超级好用的Mqtt客户端软件(下载、安装、使用详解)

1. EMQ-X的认证访问控制

EMQ X 消息服务器的连接认证和访问控制由一系列的认证插件(Plugins)提供,他们的命名都符合 emqx_auth_ 的规则,在 EMQ X 中,这两个功能分别是指:

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

本文只讲述如何配置插件进行连接认证。

EMQ X 消息服务器认证的插件支持按用户名密码、ClientID 或匿名认证三种方式,系统默认开启匿名认证,我们可以配置插件开启认证链:

特别需要注意:

  • 当开启Username认证之后,系统会忽略Client ID认证和匿名认证;
  • 当开启Client ID认证之后,系统会忽略匿名认证;

2. 默认方式——匿名认证

搭建完成之后,设备端对接MQTT服务器没有任何的身份认证,直接连接即可。

这里我使用mqtt.fx作为mqtt客户端进行测试:

设置完成之后点击连接即可:

注意没有任何的验证信息,client id是随机生成的,只是为了确保系统中不重复即可!

测试订阅主题:

测试发布消息:

发布之后看一下是否收到(客户端已订阅此主题):

测试成功,再登入EMQ X的后台控制面板,在“连接”一栏查询是否有连接记录:

在“主题”一栏可以看到发布和订阅过的主题:

在“订阅”一栏可以看到当前所有先服务器订阅消息的客户端:

测试完毕,这种无认证方式的优缺点非常明显:

  • 优点:客户端对接简单,利于编程;
  • 缺点:毫无安全性可言,任何设备都可以连接并且发布消息,容易遭受攻击;
  • 推荐指数:★☆☆☆☆(仅限学习测试时使用)

3. ClientID 认证

EMQ-X提供了很多有用的插件,并且插件也是开源的。

其中 emqx_auth_clientid 提供了 ClientID 认证功能,目前只支持连接认证,通过 clientid 和 password 认证客户端,此插件在存储密码时会按照配置的 hash 算法将明文加密后存入。

停止EMQ-X服务

在配置插件之前首先停止服务:

cd emqx
./bin/emqx stop

配置ClientID插件

登录部署了EMQ-X的服务器,编辑EMQ-X目录下的这个文件:

vim ./etc/plugins/emqx_auth_clientid.conf

修改官方示例,配置一个id和密码,并将加密方式改为plain(方便起见,直接文本传输):

启动EMQ-X服务

./bin/emqx start

开启ClientID插件

开启插件的方式有两种:

  • 直接在命令行启动:
./bin/emqx_ctl plugins load emqx_auth_clientid
  • 在DashBoard中启动:

在DashBoard的左侧点击“插件”一栏,找到 emqx_auth_clientid 插件,点击开启(这里我已经命令行开启,所以显示停止):

客户端登录测试

因为mqtt.fx不能设置clinet id 密码,所以暂不测试。

4. Username 认证插件

emqx_auth_username 提供了Username 认证功能,目前只支持连接认证,通过 username 和 password 认证客户端,此插件在存储密码时会按照配置的 hash 算法将明文加密后存入。

停止EMQ-X服务

在配置插件之前首先停止服务:

cd emqx
./bin/emqx stop

配置Username插件

登录部署了EMQ-X的服务器,编辑EMQ-X目录下的这个文件:

cd emqx/
vim ./etc/plugins/emqx_auth_username.conf

修改官方示例,配置一个username和密码,并将加密方式改为plain(方便起见,直接文本传输):

启动EMQ-X服务

./bin/emqx start

开启Username插件

开启插件的方式有两种:

  • 直接在命令行启动:
./bin/emqx_ctl plugins load emqx_auth_username
  • 在DashBoard中启动:

在DashBoard的左侧点击“插件”一栏,找到 emqx_auth_clientid 插件,点击开启(这里我已经命令行开启,所以显示停止):

客户端登录测试

点击连接即可成功登陆:

如果对username或者密码稍作修改,则不可登录:

测试完毕,这种用户名认证方式非常推荐:

  • 优点:给客户端分配 username 和 password 即可,如果不对应,则不会连接,测试方便;
  • 缺点:每个设备都需要手动或者 API 请求分配认证信息,建立阶段较复杂
  • 推荐指数:★★★★☆
(0)

相关推荐

  • 说到做到!

    之前有位读者给我留言说想要了解一下什么是 MQTT 协议,顺便还把我夸了一把,有点不好意思啦. 那么读者的要求必须要满足啊,所以现在 @一下这位小姐姐,来听课啦!什么是 MQTT 协议MQTT 协议的 ...

  • EMQ连接内存消耗

    Erlang进程消耗 EMQ对客户端链接使用链接进程(emqtt_client)和session进程(emqtt_session)分开的策略. 当一个mqtt的客户端连接到EMQ的服务器上的时候,首先 ...

  • PHP的HTTP验证

    PHP的HTTP验证 在日常开发中,我们进行用户登录的时候,大部分情况下都会使用 session 来保存用户登录信息,并以此为依据判断用户是否已登录.但其实 HTTP 也提供了这种登录验证机制,我们今 ...

  • IdentityServer4源码解析_4_令牌发放接口

    目录 IdentityServer4源码解析_1_项目结构 IdentityServer4源码解析_2_元数据接口 IdentityServer4源码解析_3_认证接口 IdentityServer4 ...

  • centos中EMQX4.3.3安装配置总结

    一. 首先下载: https://www.emqx.cn/downloads#broker tip:根据自己系统配置来下载,此处我下载的是rpm的包 然后 下面有安装的的命令,直接复制进系统,依次执行 ...

  • python测试开发django-42.auth模块登陆认证

    前言 在开发一个网站时,经常会用到用户的注册和登陆相关的账号管理功能,auth模块是Django提供的标准权限管理系统,可以提供用户身份认证, 用户组和权限管理. 像用户注册.用户登录.用户认证.注销 ...

  • python测试开发django-61.权限认证(permission)

    前言 用户登录后,才有操作当前用户的权限,不能操作其它人的用户,这就是需要用到权限认证,要不然你登录自己的用户,去操作别人用户的相关数据,就很危险了. authentication是身份认证,判断当前 ...

  • drf—— JWT认证及基本使用

    一.JWT认证介绍 1 不再使用Session认证机制,而使用Json Web Token(本质就是token)认证机制,用户登录认证 2 用户只要登录了,返回用户一个token串(随机字符串),每次 ...

  • MQTT QOS & Retained Message

    项目终于基本完成了,记录一下,由于客户端误设置了发布保留消息,导致服务器每次上线都会收到客户端最后一条消息,先去解读并改了QOS的设置,并没有用,然后才发现有Retained Message的设置,直 ...

  • EMQX MQTT 服务器(上篇)| 使用EMQ

    文章目录 1. EMQ X EMQ X与emqttd的关系 EMQ X支持的协议 EMQ X支持的部署平台 2. 使用zip压缩包部署 获取zip包下载链接 下载软件包 解压zip包 启动EMQ X ...

  • 从幕后到台前 华为服务器操作系统开启“逆袭”之路

    来源:懂懂笔记 下周,华为又将在全球科技业扔下一枚深水炸弹! 一直以来,操作系统领域都缺少中国企业的身影,在PC端,微软Windows系统几乎一统天下:在移动端,则是谷歌Android和苹果iOS各领 ...

  • 三菱PLC协议转换网关MQTT服务器数据采集

    BL102是一款把三菱PLC协议直接转换成为MQTT协议或者Modbus TCP或者OPC UA.MQTT或者华为云IoT或者亚马逊云IoT.阿里云IoT.金鸽云等协议的网关. BL102 支持 OP ...

  • 郑爽演员身份重新认证,复出之后是否依旧火呢

    网友感叹,郑爽出了这么大事儿,原本以为会被彻底封杀了,没想到这么快就有了重新复出的迹象.有人感叹,郑爽人脉强大,不愧是被大佬捧在手心的人.对此你怎么看呢?

  • FAA调查结束,SpaceX开启SN10静态点火,最快本周五高飞测试

    在FAA结束了对SpaceX的SN9在2月3日落地爆炸事故的调查后,SN10的10公里高空飞行测试启动了. 北京时间2月24日7点03分,SpaceX在博卡奇卡发射场对SN10顺利进行了静态点火测试. ...

  • “醛力的游戏”第三季即将开启,你还记得前两季的测试结果吗?

    距离一年一度的央视3.15晚会还有不足两个礼拜,而我们AutoLab每年惯例进行的"醛力的游戏",也即将迎来第三季. 2019年,"醛力的游戏"第一季,Auto ...

  • 莉莉丝悄悄在海外开启了他们第二款SLG手游的测试

    SLG会成为莉莉丝新的标签吗?文/托马斯之颅莉莉丝真的很看好SLG.所有公司都羡慕SLG长线营收的红利,但也都清楚这个品类的壁垒:经得起几个月,甚至几年考验的数值和社交玩法.巨额的广告投放.漫长的回本 ...

  • 每日超值推荐:AMD超级品类日开启,OPSO MFI认证数据线23元

    今天的超值推荐有欧普索MFi认证苹Lighning数据线,满三减一活动,叠加优惠券可以做到23元低价,数据线还是有MFi认证放心点:此外还有东芝 3TB 3.5英寸机械硬盘,下午4点开始489元,在叠 ...

  • 电子邮箱中IMAP是“双向”的,电子邮件客户端的操作都会反馈到服务器上

    IMAP是什么? IMAP,即Internet Message Access Protocol(互联网邮件访问协议),您可以通过这种协议从邮件服务器上获取邮件的信息.下载邮件等.IMAP与POP类似, ...