设备接入 IoTDA设备接入 IoTDA

更新时间:2021/09/06 GMT+08:00
分享

设备连接鉴权

接口说明

IoT平台设备侧支持MQTT协议的connect消息接口,鉴权通过后建立设备与平台间的MQTT连接。

参数说明

参数

必选/可选

类型

参数描述

ClientId

必选

String(256)

一机一密的设备clientId由4个部分组成:设备ID、设备身份标识类型、密码签名类型、时间戳,通过下划线“_”分隔。

  • 设备ID:指设备在平台成功注册后生成的唯一设备标识,通常由设备的产品ID和设备的NodeId通过分隔符“_”拼装而来。
  • 设备身份标识类型:固定值为0,表示设备ID。
  • 密码签名类型:长度1字节,当前支持2种类型:
    • “0”代表HMACSHA256不校验时间戳。
    • “1”代表HMACSHA256校验时间戳。
  • 时间戳:为设备连接平台时的UTC时间,格式为YYYYMMDDHH,如UTC 时间2018/7/24 17:56:20 则应表示为2018072417。

Username

必选

String(256)

设备ID。

Password

必选

String(256)

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

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

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

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

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

原生MQTT协议接入建链返回码

原生MQTT协议设备和平台建链时,常见返回码如下:

返回码

返回码描述

原因

0x00

连接成功

连接成功

0x01

请求拒绝,协议版本错误

服务器不支持客户端请求MQTT协议版本

0x02

请求拒绝,无效的客户端标识符

clientId不符合格式要求或者心跳时间间隔不满足平台要求

0x03

请求拒绝,服务器不可用

平台服务不可用

0x04

请求拒绝,用户名或密码错误

用户名或密码错误

0x05

请求拒绝,没有授权

客户端没有权限连接

分享:

    相关文档

    相关产品