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

本文记录了使用emqx_auth_mysql和emqx_auth_http插件组合,实现物联网边缘平台设备通信管理和权限控制的过程。通过分析插件行为,满足了认证与权限的九种场景需求。
摘要由CSDN通过智能技术生成

上一篇随笔我简单的记录了我对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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值