EMQX服务搭建

EMQX服务处理

1. 服务搭建

下载压缩包

下载链接 | 文档地址

解压

$ unzip emqx-4.4.3-otp24.1.5-3-el7-amd64.zip

配置环境变量(可选)

# 编辑/etc/profile文件
$ vim /etc/profile

# 添加内容
$ export EMQX_HOME=/usr/local/share/tmp/emqx
$ export PATH=$EMQX_HOME/bin:$PATH

# 文件生效
$ source /etc/profile

基本命令(配置环境变量,若没有配置环境变量,需要进入EMQX的bin目录下操作)

命令文档

# 启动
$ emqx start
# 重启
$ emqx restart
# 停止
$ emqx stop
# 查看状态
$ emqx_ctl status
2. EMQX认证处理

EMQ-X 的认证访问控制

  • 连接认证: EMQ X 校验每个连接上的客户端是否具有接入系统的权限,若没有则会断开该连接(主要实现);
  • 访问控制: EMQ X 校验客户端每个 发布(Publish)/订阅(Subscribe) 的权限,以 允许/拒绝 相应操作(ACL权限认证模块);

认证机制

EMQX认证机制

认证流程

EMQX提供多种认证方式,多种认证方式组成了认证链,当同时启用多个认证方式时,EMQX 将按照插件开启先后顺序进行链式认证:

  • 一旦认证成功,终止认证链并允许客户端接入
  • 一旦认证失败,终止认证链并禁止客户端接入
  • 直到最后一个认证方式仍未通过,根据匿名认证配置判定:
    • 匿名认证开启时,允许客户端接入
    • 匿名认证关闭时,禁止客户端接入

在这里插入图片描述

3. HTTP安全认证

HTTP安全认证文档地址

HTTP安全认证配置|相关学习博客链接

认证原理

EMQX Broker 使用当前客户端相关信息作为设备连接事件中的参数,向自定义鉴权服务发起请求查询权限,通过返回的 HTTP 状态码处理鉴权请求。

  • 身份验证失败:API 返回状态码 4xx
  • 认证成功:API 返回状态码 200
  • 身份验证被忽略:API 返回状态码 200,消息正文为ignore;即:当前认证方式中未查找到认证数据,无法显式判断结果是成功还是失败,交由认证链下一认证方式或匿名认证来判断。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DQTuaUu9-1651880492462)(C:\Users\ds\AppData\Roaming\Typora\typora-user-images\image-20220506090231733.png)]

书写配置文件

# etc/plugins/emqx_auth_http.conf

## HTTP认证请求地址
auth.http.auth_req = http://127.0.0.1:80/mqtt/auth

## HTTP 请求方法
## Value: post | get | put
auth.http.auth_req.method = post

## 认证请求的 HTTP 请求头部,默认情况下配置 Content-Type 头部。
## Content-Type 头部目前支持以下值:application/x-www-form-urlencoded,application/json
auth.http.auth_req.headers.content-type = application/x-www-form-urlencoded

## 请求参数
auth.http.auth_req.params = clientid=%c,username=%u,password=%P

注意HTTP安全认证中,包含ACL授权认证,若不需要直接注释即可

重启服务

$ emqx restart

引入插件

$ emqx_ctl plugins load [插件名称]
# exp:
$ emqx_ctl plugins load emqx_auth_http

连接测试

  • 提供认证接口
  • 使用MQTT FX工具或MQTTX工具进行连接测试

EMQX相关占位符

  • %u:用户名

  • %c:Client ID

  • %a:客户端 IP 地址

  • %r:客户端接入协议

  • %P:明文密码

  • %p:客户端端口

  • %C:TLS 证书公用名(证书的域名或子域名),仅当 TLS 连接时有效
    EMQX相关占位符

  • %u:用户名

  • %c:Client ID

  • %a:客户端 IP 地址

  • %r:客户端接入协议

  • %P:明文密码

  • %p:客户端端口

  • %C:TLS 证书公用名(证书的域名或子域名),仅当 TLS 连接时有效

  • %d:TLS 证书 subject,仅当 TLS 连接时有效

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值