更新时间:2023-04-13 GMT+08:00
分享

MQTT CONNECT连接鉴权

接口说明

物联网平台设备侧支持MQTT协议的connect消息接口,接口规范参考MQTT标准规范,鉴权通过后建立设备与平台间的MQTT连接。

物联网平台目前只支持MQTTS接入,设备通过connect消息接口跟平台建立MQTT连接时,需要携带TLS证书。TLS证书获取请在开发资源获取处获取Agent Lite目录下的TLS证书。

参数说明

参数

必选/可选

类型

描述

clientId

必选

String(256)

一机一密的设备clientId由4个部分组成:deviceId、鉴权类型、密码签名类型、时间戳。通过下划线“_”分隔,其中“deviceId”的值,使用deviceId接入时填写为设备注册成功后返回的“deviceId”值;使用nodeId接入时填写为设备注册成功时的“nodeId”值。

  • 鉴权类型:长度1字节,当前支持的类型:“0”,表示使用一机一密设备的deviceId接入;“2”,表示使用一机一密设备的nodeId接入。
  • 密码签名类型:长度1字节,当前支持2种类型:
    • “0”代表HMACSHA256不校验时间戳。
    • “1”代表HMACSHA256校验时间戳。
  • 时间戳:为设备连接平台时的UTC时间,格式为YYYYMMDDHH,如UTC 时间2018/7/24 17:56:20 则应表示为2018072417。

Username

必选

String(256)

  • 一机一密的设备“Username”,使用deviceId接入时填写为设备注册成功后返回的“deviceId”值;使用nodeId接入时填写为设备注册成功时的“nodeId”值。

Password

必选

String(256)

Password的值为使用“HMACSHA256”算法以时间戳为密钥,对secret进行加密后的值。

secret为注册设备时平台返回的secret。

设备通过MQTT协议的connect消息进行鉴权,对于构造clientId的各个部分信息都必须包括进去,物联网平台收到connect消息时,会判断设备的鉴权类型和密码摘要算法。

  • 当采用“HMACSHA256”校验时间戳方式时,会先校验消息时间戳与平台时间是否一致,再判断密码是否正确。
  • 当采用“HMACSHA256”不校验时间戳方式时,鉴权消息也必须带时间戳,但不检验时间是否准确,仅判断密码是否正确。

connect消息鉴权失败时,平台会返回错误,并自动断开MQTT链路。

相关文档