MQTT CONNECT连接鉴权
接口功能
设备发放平台设备侧支持MQTT协议的connect消息接口,接口规范参考MQTT标准规范,鉴权通过后建立设备与平台间的MQTT连接。
设备发放平台目前只支持MQTTS接入,设备通过connect消息接口和平台建立MQTT连接时,需要使用服务端CA证书验证服务端证书。服务端CA证书单击huaweicloud-iot-root-ca-list获取证书文件压缩包。 根据您使用的工具或语言取用压缩包内的证书文件:
- IoT Device SDK(C/C#)、MQTT.fx工具:使用压缩包中c目录下以pem或crt为后缀的文件;
- IoT Device SDK(Java):使用压缩包中java目录下以jks为后缀的文件;
- IoT Device SDK(Android):使用压缩包中android目录下以bks为后缀的文件。
参数说明
参数 |
必选/可选 |
类型 |
参数描述 |
clientId |
必选 |
String(256) |
注册组选择非华为云证书场景: 设备clientId由3个部分组成:设备ID、设备身份标识类型、用户标识ID(ScopeID)。通过下划线“_”分隔,设备身份标识类型固定值为0 例:5f052ac562369102d42b0fb6_0_ff5bbx7a488f 其他场景: 设备clientId由4个部分组成:设备ID、设备身份标识类型、密码签名类型、时间戳。通过下划线“_”分隔,设备身份标识类型固定值为0
例:5f052ac562369102d42b0fb6_0_0_2019122614 |
Username |
必选 |
String(256) |
设备ID。 |
Password |
必选 |
String(256) |
Password的值为使用“HMACSHA256”算法以时间戳为密钥,对secret进行加密后的值(secret为注册设备时平台返回的secret)。 当设备认证类型使用密钥认证接入(SECRET)需填写“Password”,证书认证接入(CERTIFICATES)不需填写“Password”。 |
注:ScopeID可以在设备发放页面单击注册组查询,如下图所示。
设备通过MQTT协议的connect消息进行鉴权,对于构造clientId的各个部分信息都必须包括进去,平台收到connect消息时,会判断设备的鉴权类型和密码摘要算法。
- 当采用“HMACSHA256”校验时间戳方式时,会先校验消息时间戳与平台时间是否一致,再判断密码是否正确。
- 当采用“HMACSHA256”不校验时间戳方式时,鉴权消息也必须带时间戳,但不检验时间是否准确,仅判断密码是否正确。
connect消息鉴权失败时,平台会返回错误,并自动断开MQTT链路。
访问参数生成工具,填写注册设备后生成的设备ID(DeviceId)和密钥(DeviceSecret),生成设备连接鉴权所需的参数(ClientId、Username、Password)。