密钥鉴权
概述
MQTT(S)协议-密钥鉴权是指设备在接入物联网平台时,携带设备ID和密钥以完成设备的接入鉴权。对于使用MQTTS协议接入的设备,需要在设备侧预置CA证书;对于使用MQTT非安全协议接入的设备,无需在设备侧预置CA证书。
使用MQTT(S)协议-密钥接入的鉴权流程

- 通过调用注册接口向物联网平台发送注册请求,或者在控制台上注册设备。
注册时需要填写设备标识码,通常使用MAC地址,Serial No或IMEI作为nodeId。
- 设备侧需集成预置CA证书获取CA证书(仅针对MQTTS协议接入的鉴权流程)。
- 设备登录时,携带设备ID(deviceId)和密钥(secret)发起接入鉴权请求。
- 平台验证通过后,返回成功响应,设备连接物联网平台成功。
密钥鉴权使用说明
本章说明以使用MQTT.fx工具激活在物联网平台上注册的设备为例,说明具体操作。
- 下载MQTT.fx(默认是64位操作系统,如果是32位操作系统,单击此处下载MQTT.fx),安装MQTT.fx工具。
- 进入设备信息页面,单击MQTT连接参数,查看设备的连接信息(ClientId、Username、Password)。
图2 设备-连接参数您也可以访问参数生成工具,填写注册设备后生成的设备ID(device_id)和密钥(secret),生成设备连接鉴权所需的参数(ClientId、Username、Password)。
表1 参数说明 参数
是否必选
类型
描述
ClientId
是
String
参数解释:
一机一密的设备ClientId由4个部分组成:设备ID、设备身份标识类型、密码签名类型、时间戳,通过下划线“_”分隔。
- 设备ID:指设备在平台成功注册后生成的唯一设备标识,通常由设备的产品ID和设备的NodeId通过分隔符“_”拼装而来。
- 设备身份标识类型:固定值为0,表示设备ID。
- 密码签名类型:长度1字节,当前支持2种类型:
- “0”代表HMACSHA256不校验时间戳。
- “1”代表HMACSHA256校验时间戳。
- 时间戳:为设备连接平台时的UTC时间,格式为YYYYMMDDHH,如UTC 时间2018/7/24 17:56:20 则应表示为2018072417。
取值范围:
长度不超过256。
UserName
是
String
参数解释:
UserName在此处即为设备ID(device_id)。
取值范围:
长度不超过256。
Password
是
String
参数解释:
Password是使用了“HMACSHA256”算法,以secret为内容,时间戳(格式为:YYYYMMDDHH)为密钥,进行加密后获取的值(secret为注册设备时平台返回的secret)。Password = hmacsha256("secret", "时间戳")。
当设备认证类型使用密钥认证接入(SECRET)需填写“Password”,X.509证书认证接入(CERTIFICATES)不需填写“Password”。
“HMACSHA256”即使用SHA-256生成哈希值的HMAC算法,生成的哈希值通用一个长度为64位的十六进制字符串来表示。例如,设备密码为:12345678;时间戳为:2025041401;那么,HMACSHA256后的值为:“c75150e6cb841417396819e4d2ee4358a416344a03a083e3a8567074ddec820a”。
取值范围:
长度不超过256。
设备通过MQTT协议的connect消息进行鉴权,对于构造clientId的各个部分信息都必须包括进去,平台收到connect消息时,会判断设备的鉴权类型和密码摘要算法。
使用生成工具生成的clientId格式,默认不校验时间戳:设备ID_0_0_时间戳。
- 当采用“HMACSHA256”校验时间戳方式时,会先校验消息时间戳与平台时间是否一致,再判断密码是否正确。
- 当采用“HMACSHA256”不校验时间戳方式时,鉴权消息也必须带时间戳,但不检验时间是否准确,仅判断密码是否正确。
connect消息鉴权失败时,平台会返回错误,并自动断开MQTT链路。
- 打开MQTT.fx软件,单击设置图标。
图3 MQTT.fx软件-设置
- 参考下表配置鉴权参数,然后单击“Apply”。
图4 连接信息配置
参数名称
说明
Broker Address
填写从设备接入服务控制台获取的平台对接信息,此接入地址为域名信息。不能通过域名接入的设备,通过在cmd命令框中执行“ping 域名”获取IP地址,用IP地址接入平台。由于IP地址不固定,您需要将IP地址做成可配置项。
Broker Port
默认为1883,使用MQTT非加密协议。若用户想使用MQTTS加密协议,则需改为8883,并参考证书资源获取校验平台身份的证书。具体配置操作说明可参考MQTT.fx模拟智慧路灯与平台通信。
Client ID
设备clientID,请参考2中获取。
User Name
即设备ID,请参考2中获取。
Password
加密后的设备密钥,请参考2中获取。
- 单击“Connect”,设备鉴权成功后,在物联网平台可以看到设备处于在线状态。
图5 设备在线