EMQX_AUTH_HTTP 认证插件使用指南

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

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

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)

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

而对于其中 params 项中,支持参数占位符 %u %c %a %P ,比如如下配置 auth.http.auth_req.params = clientid=%c,username=%u,password=%P 其代表的含义是,auth_req 包括三个参数,这个三个参数的 key 分别是 clientid username password 其值分别会替换为终端在接入时其真实的 ClientId Username Password

默认的所有配置如下:


Authentication request. Variables:

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:

Value: post | get | put auth.http.super_req.method = post

Value: Params auth.http.super_req.params = clientid=%c,username=%u


ACL request. Variables:

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 如何返回成功或者失败。

认证

认证成功:

忽略此次认证

错误

超级用户

确认为超级用户:

非超级用户

ACL鉴权

允许PUBLISH/SUBSCRIBE:

忽略此次鉴权:

拒绝该次PUBLISH/SUBSCRIBE:

转载于:https://juejin.im/post/5cce49c2f265da03a436e163

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值