EMQX_AUTH_HTTP 插件使用指南

摘要:
在阅读本教程之前,假设您对MQTT和EMQX有简单的了解。emqx_auth_Http将每个终端的访问认证和访问控制事件抛给用户自己的WebServer,以实现访问认证和ACL认证的功能。成功允许发布/订阅。事实上,在EMQX集群中,EMQX_auth_对于用户的Web服务,http只是一个简单的无状态http客户端。它只是将EMQX中的登录身份验证和ACL控制请求转发给用户的Web服务,并进行一些逻辑处理。

在阅读该教程之前,假定你已经了解 MQTTEMQ X 的简单知识。

emqx_auth_http 它将每个终端的接入认证访问控制事件抛给用户自己的 WebServer 以实现接入认证和ACL鉴权的功能。其架构逻辑如下:

EMQX_AUTH_HTTP 插件使用指南第1张

emqx_auth_http 主要处理的事情有:*

  1. 认证:每当终端一个CONNECT请求上来时,将其携带的 ClientId、Username、Password 等参数,向用户自己配置Web Services 发起一个认证请求。成功则允许该终端连接!
  2. ACL:每当终端执行 PUBLISH 和 SUBSCRIBE 操作时,将 ClientId 和 Topic 等参数,像用户自己配置 Web Services 发起一个 ACL 的请求。成功则允许此次 PUBLISH/SUBSCRIBE

实际上,在 EMQX 的集群里面,emqx_auth_http 对于用户的 Web Services 来讲只是一个简单的、无状态的 HTTP Client,他只是将 EMQX 内部的登录认证、和ACL控制的请求转发到用户的 Web Services,并做一定逻辑处理而已。

插件配置项说明

在这里给出了其3.1.0版本的默认配置文件,虽然看着内容比较多,其实只是配置了 三个 HTTP Request 的参数

  • 终端接入认证(auth_req)
  • 判断是否为超级用户(super_req)
  • ACL请求(acl_req)

其中,我们以认证为例,其每项分别代表了:

配置项说明
auth.http.auth_req配置 auth_req 请求所需要访问的 URL 路径地址
auth.http.auth_req.method配置 auth_req 请求所使用的 HTTP Method,仅支持 GET/POST/PUT
auth.http.auth_req.params配置 auth_req 请求所携带的参数列表

而对于其中 params 项中,支持各种参数占位符,其含义见配置文件注释。例如:

auth.http.auth_req.params = clientid=%c,username=%u,password=%P

其代表的含义是,auth_req 包括三个参数,这个三个参数的 key 分别是 clientidusernamepassword 其值分别会替换为终端在接入时其真实的 ClientIdUsernamePassword

默认的所有配置如下:

##--------------------------------------------------------------------
## Authentication request.
##
## Variables:
##  - %u: username
##  - %c: clientid
##  - %a: ipaddress
##  - %P: password
##  - %cn: common name of client TLS cert
##  - %dn: subject of client TLS cert
##
## Value: URL
auth.http.auth_req = http://127.0.0.1:8991/mqtt/auth
## Value: post | get | put
auth.http.auth_req.method = post
## Value: Params
auth.http.auth_req.params = clientid=%c,username=%u,password=%P

##--------------------------------------------------------------------
## Superuser request.
##
## Variables:
##  - %u: username
##  - %c: clientid
##  - %a: ipaddress
##
## Value: URL
auth.http.super_req = http://127.0.0.1:8991/mqtt/superuser
## Value: post | get | put
auth.http.super_req.method = post
## Value: Params
auth.http.super_req.params = clientid=%c,username=%u


##--------------------------------------------------------------------
## ACL request.
##
## Variables:
##  - %A: 1 | 2, 1 = sub, 2 = pub
##  - %u: username
##  - %c: clientid
##  - %a: ipaddress
##  - %t: topic
##
## Value: URL
auth.http.acl_req = http://127.0.0.1:8991/mqtt/acl
## Value: post | get | put
auth.http.acl_req.method = get
## Value: Params
auth.http.acl_req.params = access=%A,username=%u,clientid=%c,ipaddr=%a,topic=%t

如何返回

在了解了如何配置 emqx_auth_http 插件后,剩下关键的是 Webserver 如何返回成功或者失败。

认证

认证成功:

HTTP Status Code: 200

忽略此次认证

HTTP Status Code: 200
Body: ignore

错误

HTTP Status Code: Except 200

超级用户

确认为超级用户:

HTTP Status Code: 200

非超级用户

HTTP Status Code: Except 200

ACL鉴权

允许PUBLISH/SUBSCRIBE:

HTTP Status Code: 200

忽略此次鉴权:

HTTP Status Code: 200
Body: ignore

拒绝该次PUBLISH/SUBSCRIBE:

HTTP Status Code: Except 200

免责声明:文章转载自《EMQX_AUTH_HTTP 插件使用指南》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台Oracle:管理 date类型 interval 动态变化的分区:查询、删除下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Practical Shader Development: Vertex and Fragment Shaders for Game Developers (Kyle Hallady 著)

这是我们描述形状的方法之一,它将使计算机变得有意义。要定义形状,我们需要存储关于三件事的信息:顶点、边和面。顶点是三维空间中的点。边是连接顶点的最内层。面是由三个或多个角度形成的二维形状。你不能把脸想象成只有在记忆中恢复的一个网格的垂直面之间的空间,而每一个共享的需要和脸都是由垂直面顺序简单定义的。因为很多名字都不会出现在网格的“背面”,所以正面的哪一面很重...

CommonJS规范

NodeJS是本规范的实现。环境、运行、JSGILocaland远程包和包管理关于每个子规范的具体定制进度,请参考官方网站描述:Apache CouchDB和node.js。然而,这些项目中的大多数只实现了CommonJS的一些规范。具体项目及实施请参见官方网站描述:http:...

目录扫描工具DirBuster

DirBuster用于检测web服务器上的目录和隐藏文件。因此,必须在运行之前安装Java环境。在TargetURL下输入要检测的网站的地址。请注意,地址应与协议一起添加。一种是自动选择。它将决定是使用head方法还是get方法。number of Thread是所选扫描线程的数量,selectscanning type是所选的扫描类型。Listbasedb...

Idea常用插件整合

官方网站:https://plugins.jetbrains.com/plugin/228-sql-query-plugin6.IdeaVim基于IntelliJ的Vim仿真插件。注意:如果打开WebInspector,那么CSS/JavaScript同步和元素高亮显示不起作用“pluginisdebuggingthistab”信息栏的可用性问题官方网站:h...

IOS崩溃日志解析(crash log)

IOS的应用程序少不了crash,互联网统计分析工具友盟有一项目错误分析的功能,专门用于应用程序崩溃日志统计,最近研究友盟上统计到的崩溃日志,在此对崩溃日志做一个简单的总结。否则,应用将被iOS终止,并产生低内存崩溃报告。这样,我们去我们的dSYM文件看看我们的UUID是否和崩溃日志上的UUID一致,只有dSYM文件的UUID和崩溃日志上的UUID一致,我们...

阿里巴巴开源性能监控神器Arthas初体验

今天跟大家介绍一款阿里巴巴开源的性能分析神器Arthas官方网站:https://alibaba.github.io/arthas/index.htmlArthas能为你做什么事情呢?接下来,我们找个项目实际体验一下Arthas。﹏﹏﹏﹏上述几个命令只是性能测工作中常用的一些操作,Arthas还有很多其他维度的监控数据,大家可以去官网看下用户手册学习更多操作...