Skip to content

认证

认证是大多数应用的重要组成部分,MQTT 协议支持用户名密码认证,启用身份认证能有效阻止非法客户端的连接。EMQX Cloud 中的认证指的是当一个客户端连接到部署的时候,通过服务器端的配置来控制客户端连接服务器的权限。为了提供更好的安全保障,EMQX 支持多种认证机制。

版本密码认证扩展(密码)认证JWT 认证X.509 证书认证
Serverless
专有版

密码认证(默认)

密码认证是最简单,也是使用最多的认证方式。采用密码认证时,客户端需要提供能够表明身份的凭据,例如用户名、客户端 ID 以及对应的密码,或是 TLS 证书中的一些字段(例如证书公用名称)。这些身份凭据会提前存储到特定数据源(数据库)中,密码通常都会以加盐后散列的形式存储。

EMQX 支持通过密码进行身份验证。启用密码认证后,当客户端尝试连接时,需按要求提供身份凭证信息,EMQX 会在数据库中发起查询,并将返回得到的密码与客户端提供的信息进行匹配,匹配成功后,EMQX 将接受该客户端的连接请求。

扩展密码认证

除简单便捷的内置数据库外,EMQX 还支持通过与多类后端数据库的集成提供密码认证,包括 MySQL、PostgreSQL、Redis 和 HTTP。

JWT认证

JSON Web Token(JWT) 是一种基于 Token 的认证机制,它不需要服务器来保留客户端的认证信息或会话信息。客户端可以在密码或用户名中携带 Token,EMQX 通过预先配置的密钥或公钥对 JWT 签名进行验证。

此外,如果用户配置了 JWKS 端点,EMQX 也支持通过从 JWKS 端点查询到的公钥列表对 JWT 签名进行验证,从而能够批量为客户端签发认证信息。

X.509 证书认证

EMQX 支持使用 X.509 证书认证进行客户端认证。通过在 EMQX 中使用 X.509 证书认证,客户端和服务器可以通过 TLS/SSL 建立安全连接,确保通信双方的真实性和传输数据的完整性。EMQX 支持单向和双向认证:单向认证中,只有服务器被客户端认证;双向认证中,客户端和服务器相互验证对方的证书。这种灵活性适应了不同级别的安全需求和部署场景。