消息队列 MQTT 版提供了多种认证方式以保证服务端与客户端之间通信的安全性,客户端接入时,将按照配置的认证方式对客户端的身份进行验证,通过认证后才被允许接入,确保设备的合法接入。
认证方式
传输层:是 MQTT 协议体系的底层通信基础,它负责在 MQTT 客户端与服务端之间提供端到端的、可靠或不可靠的网络数据传输通道。该层并非 MQTT 协议本身的一部分,而是依赖于现有的网络传输协议来实现其功能。
应用层:是 MQTT 应用协议中的一个核心安全组件,作用于连接建立阶段。它负责对尝试连接到服务端的客户端身份进行验证,确保只有经过授权的客户端才能接入服务并访问系统资源。

适用场景
认证方式 | 说明 | 基础版 (已售罄) | 专业版 | 铂金版 | 适用场景 |
用户名+密码认证 | 最基础的认证方式,客户端在连接时提供用户名(Username)和密码(Password),MQTT 将其与内部存储的凭证进匹配,匹配通过后接受客户端请求。 | ✓ | ✓ | ✓ | 通用场景,安全性要求不高。 |
X.509 证书认证 | 单向认证:由客户端认证服务端,客户端对服务端的认证通过服务端证书完成。服务端会使用您选择的证书和客户端建联。 | ✓ | ✓ | ✓ | 对安全性要求一般,或者测试场景。 |
| 双向认证:客户端与服务端之间相互认证,客户端对服务端的认证通过服务端证书完成,服务端对客户端的认证通过 CA 证书完成。验证通过则允许客户端连接服务端。 | ✓ | ✓ | ✓ | 设备价值较高,对安全性要求较高。 |
| 一机一证:一种特殊的双向认证,每个客户端(每台设备)使用自行签发的 CA 证书及 CA 证书签发的不同的客户端证书(设备证书)进行认证。 | × | ✓ | ✓ | 设备价值极高,对安全性要求极高。 |
JWT 认证 | JWT 认证是基于 Token 的鉴权机制,不依赖服务端保留客户端的认证信息或者会话信息,客户端在密码字段或单独字段中提交 JWT,MQTT 将验证 JWT 的签名和声明信息,验证通过后服务端接受客户端连接请求。 | × | ✓ | ✓ | 面向终端用户或临时会话,实现灵活的、带有时效性和自定义权限的动态鉴权。 |
HTTP 认证 | 客户端连接时,MQTT 将使用客户端信息构造 HTTP 请求,并根据请求返回的内容判断认证结果,认证通过,则允许该客户端连接服务端。 | × | ✓ | ✓ | 需要与企业现有统一身份认证体系集成的鉴权场景。 |
一机一密 | 每台设备使用独立的密钥,用于连接服务端进行认证。这个密钥是设备身份的唯一证明,用于连接服务端时的认证。 | × | ✓ | ✓ | 对安全有较高的诉求, 但是设备本身的算力比较有限, 无法支持使用基于 PKI 证书的“一机一证”。 |