EMQX HTTP Auth认证

这篇具有很好参考价值的文章主要介绍了EMQX HTTP Auth认证。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系统的安全性需要从身份认证、操作授权、黑名单机制、数据安全传输等几个方面去考虑,EMQX Broker的安全也是从这几方面考虑,下面分别介绍下EMQX安全特性。

身份认证

身份验证是大多数应用程序的重要组成部分。MQTT 协议支持用户名/密码认证以及增强认证,例如 SASL/SCRAM 身份验证。启用认证可以有效防止非法客户端连接。

EMQX 提供了与多种后端数据库的集成支持,包括 MySQL、PostgreSQL、MongoDB 和 Redis。同时 EMQX 也支持用户将身份凭据存储到内置数据库(Mnesia)中。与使用外部数据库相比,这种方式提供了非常简单的配置流程和用户管理接口。例如,您可以从仪表板 UI 管理用户,或从 CSV 或 JSON 文件批量导入用户。内置数据库也是性能最高的认证数据源,因为 EMQX 运行时会将这些用于认证的数据会从磁盘加载到内存中。

今天仅学习采用HTTP密码认证。

使用 HTTP 的密码认证

HTTP 认证使用外部自建 HTTP 应用认证数据源,根据 HTTP API 返回的数据判定认证结果,能够实现复杂的认证鉴权逻辑。

HTTP认证原理

  • 在认证器的设置中,指定 HTTP 请求模式。
  • 当 MQTT 客户端连接到 EMQX 时,HTTP 认证器会根据配置的请求模板渲染并发送生成的请求。
  • HTTP 响应状态码 (HTTP Status Code) 被用于判断认证请求是否被认证服务器接收执行。
    • 认证结果应通过 Status Code 200 或 204 进行返回。
      认证结果、是否为超级用户将分别由 Response Body 内的 resultis_superuser 字段值指示。
    • 其他响应码将被认为 HTTP 认证请求执行失败。如 4xx、5xx 等。
      此时认证结果使用缺省值 "ignore",继续执行认证链。如果当前的 HTTP 认证器是链上的最后一个认证器,则认证失败,客户端将被拒绝连接。
  • HTTP 响应的编码格式可以是 application/json

返回示例

HTTP/1.1 200 OK
Headers: Content-Type: application/json
...
Body:
{
    "result": "allow" | "deny" | "ignore", // Default `"ignore"`
    "is_superuser": true | false // Default `false`
}

配置

  1. 登录dashboard,点击 访问授权 -> 认证 -> 创建 按钮

EMQX HTTP Auth认证

EMQX HTTP Auth认证

EMQX HTTP Auth认证

特别注意:EMQX使用docker安装,因此填写宿主机ip

服务端 HTTP 代码

安装Gin 依赖

go get -u github.com/gin-gonic/gin
package main

import (
	"github.com/gin-gonic/gin"
	"io"
	"net/http"
	"os"
)

type Login struct {
	Username string `json:"username"`
	Password string `json:"password"`
}

func main() {
	gin.DefaultWriter = io.MultiWriter(os.Stdout)

	r := gin.Default()
	r.POST("/auth/:clientid", func(c *gin.Context) {
		login := Login{}
		c.BindJSON(&login)

		allow := "deny"
		//
		if login.Username == "kobe" && login.Password == "123456" {
			allow = "allow"
		}
		c.JSON(http.StatusOK, gin.H{
			"result":       allow,
			"is_superuser": "true",
		})
	})
	r.Run(":8888")
}

启动程序,进行测试

curl -X POST -d '{"username": "James", "password": "123456"}' \
     -H "Content-Type: application/json" \
     http://localhost:8888/auth/1
AndydeMacBook-Pro:~ andy$ curl -X POST -d '{"username": "James", "password": "123456"}'      -H "Content-Type: application/json"      http://localhost:8888/auth/1
{"result":"deny","is_superuser":true}

AndydeMacBook-Pro:~ andy$ curl -X POST -d '{"username": "kobe", "password": "123456"}'      -H "Content-Type: application/json"      http://localhost:8888//auth/1
{"result":"allow","is_superuser":true}

# 测试成功

登录测试

EMQX HTTP Auth认证

客户端登录,分别输入错误、正确的账号密码(错误账号: jodan/123456, 正确账号: kobe/123456),以及http服务端控制台输出截图:

EMQX HTTP Auth认证

EMQX HTTP Auth认证

总结

通过集成 外部HTTP 认证接口,极大的扩展了MQTT Broker的安全机制的能力,将认证功能暴露给业务系统接口,在精简Broker架构设计的同时,也增加了Broker认证的能力。总之,这一点架构思想是可以在平时的工作中借鉴的。文章来源地址https://www.toymoban.com/news/detail-411292.html

到了这里,关于EMQX HTTP Auth认证的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux环境下HTTP隧道的安全性与性能优化策略

    在Linux环境下,HTTP隧道技术为远程办公和数据同步提供了极大的便利。为了确保这种技术的安全性和性能,我们需要采取一系列策略来保障其稳定运行。 安全性策略 安全性是HTTP隧道技术的首要考虑因素。以下是一些建议,以确保HTTP隧道的安全性: 使用HTTPS协议 :HTTPS通过

    2024年02月20日
    浏览(43)
  • 多因素认证与身份验证:分析不同类型的多因素认证方法,介绍如何在访问控制中使用身份验证以增强安全性

    随着数字化时代的到来,信息安全问题变得愈发重要。在网络世界中,用户的身份往往是保护敏感数据和系统免受未经授权访问的第一道防线。单一的密码已经不再足够,多因素认证(MFA)应运而生,成为提升身份验证安全性的重要工具之一。本文将深入探讨不同类型的多因

    2024年02月10日
    浏览(51)
  • 深入理解 HTTP 和 HTTPS:提升你的网站安全性(下)

    🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入

    2024年02月04日
    浏览(62)
  • 安全与道路测试:自动驾驶系统安全性探究

    随着自动驾驶技术的迅速发展,如何确保自动驾驶系统的安全性已成为业界关注的焦点。本文将探讨自动驾驶系统的潜在风险、安全设计原则和道路测试要求。 自动驾驶系统在改善交通安全和提高出行效率方面具有巨大潜力,但其安全性仍面临许多挑战,主要包括: 技术故

    2023年04月25日
    浏览(44)
  • 操作系统安全性实训

    掌握Windows 帐户与密码 的安全设置、文件系统的 保护 和 加密 、安全策略与安全末拌的使用、审核和日志的启用,掌握本机漏洞检测软件MBSA的使用,建立一个Windows操作系统的基本安全框架。 实验室所有机器安装了Windows 10操作系统,C盘格式配置为NTFS,预装MBSA工具。每个学生

    2024年02月05日
    浏览(39)
  • 如何提高Linux系统安全性

    Linux 是一种开源操作系统,被世界各地的个人、企业和政府广泛使用。然而,与任何其他操作系统一样(甚至是更),Linux 也容易受到安全威胁,因此采取措施提高系统的安全性非常重要。 提高 Linux 系统安全性的最简单、最有效的方法之一就是定期更新。更新通常包含解决

    2024年01月18日
    浏览(45)
  • web系统设计安全性基本要求

    身份鉴别 独立的登录模块:为社会用户和平台运营管理用户提供独立的登录地址、登录界面和身份认证模块,通过防火墙等设备严格限制能够登录WEB应用的用户地址、身份; 双因素认证: 平台运营管理人员:采用用户名/口令+数字证书方式进行身份鉴别; 商户:采用用户名

    2024年01月24日
    浏览(48)
  • 07-Docker 安全:基于内核的弱隔离系统如何保障安全性?

    在讨论容器的安全性之前,我们先了解下容器与虚拟机的区别,这样可以帮助我们更好地了解容器的安全隐患以及如何加固容器安全。 Docker 与虚拟机区别 Docker 是基于 Linux 内核的 Namespace 技术实现资源隔离的,所有的容器都共享主机的内核。其实这与以虚拟机为代表的云计算

    2024年01月17日
    浏览(60)
  • 虹科分享|您的遗留系统的安全性如何?

    自2023年1月10日起,Windows 7、Windows 8、Windows 8.1及其衍生产品Windows Embedded以及Windows Server 2008 R2将不再收到微软提供的补丁程序。数以百万计的设备现在将成为“遗留”设备,并产生一系列新的遗留安全风险。 Windows 7支持结束,8/8.1被切断 微软的2023年1月发行说明包括了针对微

    2024年02月05日
    浏览(86)
  • 这些嵌入式系统安全性的知识你需要了解

    这可能是 工程师在面对 嵌入式系统应用 程序的安全性时可能提出的第一个问题。 不幸的是,有大量的“安全软件包”可用,并且对安全性不熟悉的 嵌入式工程师 可能只将安全性称为加密或病毒防护。尽管加密是安全性的一种工具,而病毒扫描程序从技术上讲可以提供安全

    2024年02月09日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包