emqx接通mysql_EMQX认证鉴权(一)——基于MySQL的MQTT连接认证

本文介绍了如何使用 EMQ X 的 emqx_auth_mysql 插件,结合 MySQL 数据库实现 MQTT 客户端的连接认证。通过配置查询语句和密码加密算法,确保设备连接时的身份安全,防止未经授权的访问。详细步骤包括创建数据库、设置表结构、插入认证数据、修改插件配置以及测试连接。通过禁用匿名认证,确保只有通过认证的设备才能连接到 EMQ X。
摘要由CSDN通过智能技术生成

前言

安全保护几乎对于所有的项目都是一个挑战,对于物联网项目更是如,自普及应用以来物联网业内已经发生过多起安全事故。

作为物联网通信协议事实标准,MQTT 保持着较高的安全性,提供了多层次的安全设计:

传输层:MQTT 基于 TCP/IP 协议,可以在传输层上使用 SSL/TLS 进行加密传输:

使用 SSL/TLS 加密通信数据,防止中间人攻击;

使用客户端证书作为设备身份凭证,验证设备合法性。

应用层:使用 MQTT 自身的安全特性进行防护:

MQTT 协议支持用户名和密码实现客户端的身份校验;

MQTT Broker 实现了 Topic 的读写权限控制(Topic ACL)。

EMQ X 完整支持 MQTT 各项安全规范,内置的安全功能无需编程开箱即用,可以快速排除项目中的安全隐患。本系列将围绕各个层次的安全规范,介绍如何通过配置 EMQ X 启用相关功能最终实现相应的安全防护。

emqx-auth-mysql 简介

emqx_auth_mysql 是基于 MySQL 数据库的 MQTT 认证/访问控制插件,通过检查每个终端接入的username和password是否与用户指定的 MySQL 数据库中存储的信息一致性来实现对终端的连接认证和访问控制。其功能逻辑如下:

849b23b3b3eee5d4b41feace445d8cd0.png

本文仅介绍认证功能,ACL 功能见后续文章。

认证原理

设备连接时 EMQ X 将执行按照配置的查询语句,比较查询结果中的password字段的值是否与当前请求客户端的密码进行加盐 (salt) 处理、加密后的值是否相等,验证流程如下:

查询结果集中必须有password、salt字段,可以使用AS语法设置如SELECT *, pwd as password FROM mqtt_user

在数据库中可以为每个客户端都指定一个 salt,EMQ X 根据客户端传入的密码和通过 SQL 返回的 salt 信息生成密文

结果集为空或比对结果不相等,认证失败

创建数据库

你可以使用任何自己喜欢的 客户端,创建好相应的数据库。这里用的是 MySQL 自带的命令行客户端,打开 MySQL 的控制台

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值