消息队列 MQTT 版提供了多种认证方式以保证服务端与客户端之间通信的安全性。当前支持四种模式:用户名+密码认证、X.509 证书认证、对接自定义第三方服务认证和外部 HTTP 认证。
用户名+密码认证:用户名+密码” 认证是消息队列 MQTT 版最基础的认证方式,默认所有集群的客户端在连接服务端时都需要传输用户名(username)和密码(password)。
X.509 证书认证:消息队列 MQTT 版提供了默认的服务端证书进行单向认证,即 wss(WebSockets) 和 TLS 接入点。如需要使用自有证书进行认证,可以在控制台开启单向/双向认证,使用维护在腾讯云的自有证书。
对接自定义第三方服务认证:腾讯云消息队列 MQTT 版支持客户对接外部 JWT 服务进行认证和授权,客户端在连接 MQTT 服务端时(发送 Connect Packet 时),如果验证通过,MQTT 服务端会进一步检查 Payload 中的声明部分(Claims),例如 iss(Issuer),exp(Expiration Time),nbf(Not Before),iat(Issued At),aud(Audience) 等, 判断 JWT 的合法性。 当 JWT 通过签名签证和 Claims 检查后, MQTT 服务端接受客户端连接请求。
外部 HTTP 认证:客户端在进行连接(发送 Connect Packet)时,MQTT 使用客户端的信息(如用户名,密码等)构造 HTTP 请求,请求到达指定的 HTTP 认证服务后,MQTT 会根据该 HTTP 请求的返回结果来判断认证是否通过。如果认证通过,则允许该客户端连接服务端;如果认证不通过,则拒绝该客户端的连接。
说明:
X.509 证书认证包含单向认证和双向认证。其中,双向认证中的 “一机一证” 场景因为其所需的额外底层算力资源及相对较高的开发要求,当前仅专业版集群支持。
当前仅专业版集群支持对接自定义第三方服务认证,如 JWT 等。