云服务器内容精选

  • 概述 设备鉴权是指 物联网平台 对接入平台的设备进行身份认证。对于不同接入方式的设备,鉴权方式不同。 接入类型 鉴权方式 使用LwM2M/CoAP协议接入的设备 在设备接入物联网平台前,用户通过应用服务器调用创建设备接口或通过控制台在物联网平台注册设备。若为非安全设备,在设备接入物联网平台时携带设备唯一标识,完成设备的接入鉴权;当采用DTLS/DTLS+传输层安全协议接入时,即设备为安全设备时,携带密钥和nodeId完成设备的接入鉴权。 使用MQTT(S)协议接入的设备 使用密钥鉴权: 在设备接入物联网平台前,用户通过应用服务调用创建设备接口或通过控制台在物联网平台注册设备,获取设备ID和密钥,并把设备ID和密钥烧录到设备中。对于使用MQ TTS 协议接入的设备,需要在设备侧预置CA证书;对于使用MQTT非安全协议接入的设备,无需在设备侧预置CA证书。在设备接入物联网平台时携带设备ID和密钥,完成设备的接入鉴权。 使用证书鉴权: 在设备接入物联网平台前,用户通过控制台上传设备CA证书,然后应用服务调用创建设备接口或通过控制台在物联网平台注册设备,获取设备ID,并把设备ID烧录到设备中。在设备接入物联网平台时携带设备侧X.509证书,完成设备的接入鉴权。 使用自定义鉴权: 在设备接入物联网平台前,用户可以通过应用服务调用控制台配置自定义鉴权信息,然后通过调用函数服务(FunctionGraph入门简介)配置自定义鉴权函数。在设备接入物联网平台时,物联网平台会获取设备ID和自定义鉴权函数名称等参数,并向FunctionGraph发起鉴权请求,由用户实现鉴权逻辑,完成设备的接入鉴权。 使用自定义模板鉴权: 用户可以通过配置自定义鉴权模板,对平台提供的内部函数进行编排,灵活自定义MQTT设备鉴权三元组参数ClientId、Username、Password,实现自定义设备鉴权。 父主题: 设备鉴权
  • 使用MQTT(S)协议-密钥接入的鉴权流程 图1 MQTT(S)协议-密钥接入鉴权流程图 通过调用注册接口向物联网平台发送注册请求或者在控制台上注册设备。 注册时需要填写设备标识码,通常使用MAC地址,Serial No或IMEI作为nodeId。 物联网平台向设备分配全局唯一的设备ID (deviceId)和密钥(secret)。 密钥可以在注册设备时自定义,如果没有定义,平台将自动分配密钥。 设备侧需集成预置CA证书(仅针对MQTTS协议接入的鉴权流程)。 设备登录时,携带设备ID(deviceId)和密钥(secret)发起接入鉴权请求。 平台验证通过后,返回成功响应,设备连接物联网平台成功。
  • 请求示例 POST https://{endpoint}/v5/device-auth Content-Type: application/json { "device_id" : "60a87ffebaccd902c2f1abbb_0001", "sign_type" : 0, "timestamp" : "2019120219", "password" : "******" }
  • 错误码 HTTP状态码 HTTP状态码描述 错误码 错误码描述 错误码中文描述 400 Bad Request IOTDA.000006 Invalid input data. 请求参数不合法 401 Unauthorized IOTDA.000002 The request is unauthorized. 鉴权失败 403 Forbidden IOTDA.021101 Request reached the maximum rate limit. 请求已经达到限制速率 IOTDA.021102 The request rate has reached the upper limit of the tenant, limit %s. 请求已经达到租户的限制速率
  • 接口说明 设备鉴权接口,鉴权通过后建立设备与平台间才能处理业务连接。鉴权成功后平台返回access_token。调用属性上报、消息上报等其他接口时,都需要携带access_token信息。如果access_token超期,需要重新认证设备获取access_token。如果access_token未超期重复获取access_token,老的access_token在未超期前保留30s,30s之后失效。
  • 请求参数 名称 必选 类型 位置 说明 device_id 是 String Body 参数说明: 设备ID,用于唯一标识一个设备。在注册设备时直接指定,或者由物联网平台分配获得。由物联网平台分配时,生成规则为"product_id" + "_" + "node_id"拼接而成。 取值范围: 长度不超过128,只允许字母、数字、下划线(_)、连接符(-)的组合。 取值范围: 长度1-128 sign_type 是 Integer Body 参数说明: 密码校验方式: 0 代表HMA CS HA256校验时间戳时不会校验消息时间戳与平台时间是否一致,仅判断密码是否正确; 1 代表HMACSHA256校验时间戳时会先校验消息时间戳与平台时间是否一致,再判断密码是否正确。 取值范围: 大小0~1 timestamp 是 String Body 参数说明: 时间戳:为设备连接平台时的UTC时间,格式为YYYYMMDDHH,如UTC 时间2018/7/24 17:56:20 则应表示为2018072417。 取值范围: 固定长度10 password 是 String Body 参数说明: password的值为使用“HMACSHA256”算法以时间戳为密钥,对secret进行加密后的值。secret为注册设备时平台返回的secret。 取值范围: 固定长度64
  • 请求参数 名称 必选 类型 位置 说明 device_id 是 String Body 参数说明: 设备ID,用于唯一标识一个设备。在注册设备时直接指定,或者由物联网平台分配获得。由物联网平台分配时,生成规则为"product_id" + "_" + "node_id"拼接而成。 取值范围:长度不超过128,只允许字母、数字、下划线(_)、连接符(-)的组合。 取值范围: 长度1-128 sign_type 是 Integer Body 参数说明: 密码校验方式: 0 代表HMACSHA256校验时间戳时不会校验消息时间戳与平台时间是否一致,仅判断密码是否正确; 1 代表HMACSHA256校验时间戳时会先校验消息时间戳与平台时间是否一致,再判断密码是否正确。 取值范围: 大小0~1 timestamp 是 String Body 参数说明: 时间戳:为设备连接平台时的UTC时间,格式为YYYYMMDDHH,如UTC 时间2018/7/24 17:56:20 则应表示为2018072417。 取值范围: 固定长度10 password 是 String Body 参数说明: password的值为使用“HMACSHA256”算法以时间戳为密钥,对secret进行加密后的值。secret为注册设备时平台返回的secret。 取值范围: 固定长度64
  • 请求示例 POST https://{endpoint}/v5/device-auth Content-Type: application/json { "device_id" : "60a87ffebaccd902c2f1abbb_0001", "sign_type" : 0, "timestamp" : "2019120219", "password" : "0a5c5c4adcee661b1e730cbf6c8c343ff5924c2f3100ec2f51cad6b060183ed0" }
  • 错误码 HTTP状态码 HTTP状态码描述 错误码 错误码描述 错误码中文描述 400 Bad Request IOTDA.000006 Invalid input data. 请求参数不合法 401 Unauthorized IOTDA.000002 The request is unauthorized. 鉴权失败 403 Forbidden IOTDA.021101 Request reached the maximum rate limit. 请求已经达到限制速率 IOTDA.021102 The request rate has reached the upper limit of the tenant, limit %s. 请求已经达到租户的限制速率
  • 接口说明 设备鉴权接口,鉴权通过后建立设备与平台间才能处理业务连接。鉴权成功后平台返回access_token。调用属性上报、消息上报等其他接口时,都需要携带access_token信息。如果access_token超期,需要重新认证设备获取access_token。如果access_token未超期重复获取access_token,老的access_token在未超期前保留30s,30s之后失效。