上一篇随笔我简单的记录了我对EMQ插件开发的了解过程,最后发现还是可以组合复用已有插件,因此这篇随笔用于记录使用的情况以及是否达到预期。

首先测试mysql认证插件的使用方式:

emqx_auth_mysql

根据readme,使用该插件需要先在数据库上运行它们的sql脚本,在docker中完成这一步可以参考这篇文章。

主要的思想是,在Dockerfile中先用环境变量设置免密登录,然后执行各个sql脚本(创建数据库,数据表,插入数据),最后一个脚本创建用户,设置权限和密码。

将该插件的sql脚本执行后顺便插入一个测试用的用户:

INSERT INTOmqtt_user ( username,password )VALUES( "device1","device1" );INSERT INTOmqtt_acl ( allow,username,access,topic )VALUES(1,"device1",1,"a" ),

(0,"device1",2,"a" ),

(1,"device1",3,"b" );

根据插件的源码,它会根据用户名查询数据库,一共有六种可能:

数据库存在该用户,密码未加盐:密码正确,返回ok

密码错误,返回error

数据库存在该用户,密码加盐:密码正确,返回ok

密码错误,返回error

数据库不存在该用户,返回ignore(即沉默,交给其他插件处理,如果没有其他插件,则会同意)

查询错误(数据库连接失败),此时不通过任何请求(但是数据库连接失败时无法启动插件,这种情况只会出现在建立连接后数据库断开的情况)

emqx_auth_http

这个插件同样可以支持普通用户认证,超级用户认证和访问权限控制,只需填写对应服务的http接口即可,传输的内容都放在http包的parameters中,收到的结果根据状态码和body分类,一共四种:

返回状态码200,但是body为"ignore",此时行为为ignore;

返回状态码200,body不是“ignore”,此时行为为ok;

返回状态码4XX,此时行为为error;

http请求失败,此时返回error,不同意任何连接

需求逻辑整理

根据这两个插件的行为,排除连接失败和合并两种数据库的密码验证后,可以组合出9种行为,每种行为后方标记分别为:理论行为,需求行为

mysql中有相关用户

mysql验证通过

http验证通过: ok,ok

http验证失败: error,error

http验证忽视: ok,ok

mysql验证失败

http验证通过: ok,ok

http验证失败: error,error

http验证忽视: error,error

mysql中没有相关用户

http验证通过: ok,ok

http验证失败: error,error

http验证忽视: ignore,ignore

经过列举,我发现这两个插件的行为完全符合我的需求,因此完全可以使用这两个插件的组合来完成平台的认证和权限控制。

emqx_web_hook

webhook的概念很简单,就是在各类hook点给预设的API发送数据,用以动态监控指定动作。这跟CPU上的调试用的埋点非常类似,GDB就是用这种思想监控程序的执行过程。

emq的webhook插件使用很简单,只需要设置API的URL,再勾选要监控的动作即可,它硬编码了要发送的格式,即在Body中发送json格式的文本,json中的内容也根据action硬编码,无法配置,目前我们可以适应该接口,如果有需求,可以将其改成可配置的软接口,也可以直接更改硬编码的接口。

原文:https://www.cnblogs.com/bforever/p/10518122.html

emqx_auth_mysql报错_EMQ插件组合实现物联网边缘平台的设备通信管理相关推荐

  1. EMCP 物联网云平台物联卡管理说明

    EMCP 物联网云平台 物联卡管理说明 V1.0 河北蓝蜂信息科技有限 EMCP 物联网云平台物联卡管理说明 前言:本说明是为了管理员用户快速掌握如何使用 EMCP 物联网云平台(以下简称为 EMCP ...

  2. 合宙Air780e+luatos接入华为云物联网平台完成设备通信与控制

    一.简介 1.项目介绍 之前发布的文章有esp8266的wifi模块和BC20的NB模块与华为云物联网通信为主,本期文章采用了合宙的4G LTE Cat.1模块,编程语言用的是lua,整体来说代码比较 ...

  3. 合宙Air780e+luatos+阿里云物联网平台完成设备通信与控制(属性上报+4G远程点灯)

    一.简介 1.项目介绍 之前发布的文章有采用合宙的4G LTE Cat.1模块,编程语言用的是lua,整体来说代码比较简洁,实现对华为云物联网平台的设备通信与控制,即采用一个变量作为模拟属性定时上报, ...

  4. server 2008 mysql 报错 0xc000007b_docker插件部署项目,volumes报错invalid volume specification...

    关于idea使用docker插件部署项目,volumes报错invalid volume specification 观察volumes那行,没写错的.但是........ 使用docker-comp ...

  5. MySQL报错:插件缓存——sha2_密码无法进行加载

    使用数据库可视化端口新建连接出现:错误代码:2058 将报错信息翻译过来就是:"插件缓存--sha2_密码无法进行加载" 这是由于你的SQLyog  mysql 密码加密方法变了, ...

  6. 【错误记录】Flutter 报错 ( Android Studio 中 main.dart 左侧不显示设备栏 )

    文章目录 一.报错信息 二.解决方案 一 ( 备选方案 ) 三.解决方案 二 ( 推荐方案 ) 一.报错信息 为了解决 [错误记录]Flutter 构建报错 ( Because xxx require ...

  7. ubuntu apt报错无法获得锁/var/lib/dpkg/lock 和无法锁定管理目录

    使用命令 sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock 使用完上述命令之后,需要关闭当前终端重新打开 参考链接 [Ub ...

  8. 报错:Exception in thread “main“ java.io.IOException: 设备未就绪。

    今天用File创建文件,但是一直报错,报错提示设备未就绪,很纳闷 Exception in thread "main" java.io.IOException: 设备未就绪.at ...

  9. 上传文件时,服务器报错:IOFileUploadException: Processing of multipart/form-data request failed. 设备上没有空间

    1. 问题 SpringBoot上传文件时,服务器报错 2022-06-27 10:58:00.941 ERROR 12700 --- [nio-8900-exec-1] o.a.c.c.C.[.[. ...

  10. 智慧水务物联网数据采集平台和营收管理平台建设

    平台概述 智慧水务物联网数据采集平台是以物联感知技术.大数据.智能控制.云计算.人工智能.数字孪生.AI算法.虚拟现实技术为核心,以监测仪表.通讯网络.数据库系统.数据中台.模型软件.前台展示.智慧运 ...

最新文章

  1. 重庆发信息化建设管理通知 利好云产业
  2. 寻找两个字符串相似度的代码
  3. Boost:重复计数器测试程序
  4. 1012 数字分类 (20 分)(c语言)
  5. 谁是最好的WebRTC SFU?
  6. DICOM的常用Tag分类和说明
  7. c语言程序stm8s,经典STM8s20实用C语言编程大全
  8. linux查看机器配置命令,linux 下查看机器配置的几个命令
  9. 信息学奥赛C++语言:for_求和
  10. MYSQL8 关键字(官方)
  11. qt 将相应字符写入txt文件
  12. cookie代码加时间多久出现一次_一文彻底搞懂Cookie、Session、Token到底是什么
  13. 转:让程序只运行一个实例的四种方法
  14. 联想7400一体机加粉后粉盒重置归零方法
  15. 如何在旋转屏幕后不再重建Activity
  16. 暑假计算机教育培训总结,暑假信息技术培训心得
  17. win7自动锁定计算机快捷键,两种方法教你锁定Win7系统电脑计算机快捷键
  18. 天蝎座2019年4月运势
  19. VS程序中使用ODBC登陆sql数据库的时候出现18456错误
  20. CentOS7设置笔记本合盖不休眠

热门文章

  1. JavaScript学习笔记(3)——JavaScript与HTML的组合方式
  2. 使用ASP.NET MVC、Rabbit WeixinSDK和Azure快速开发部署微信后台
  3. eclipse 大括号 改为C语言风格
  4. 数据库、连接-mysql学习笔记二-by小雨
  5. 【Linux】目录中 / 和 ~ 的区别
  6. app测试用mysql数据库,数据库: 安装配置数据库,使用Navicat for MySQL和手机APP 连接测试...
  7. linux 查看各个用户下线程使用情况
  8. Laravel User Agent 轻松识别客户端(微信)信息(2019版)
  9. 《TCP IP 详解卷1:协议》阅读笔记 - 第十四章
  10. 第三方全网发布 返回Api文本消息解决失败