设备接入 IOTDA-自定义模板示例:示例2

时间:2024-07-03 16:53:06

示例2

设备ID格式为:${ProductId}_${NodeId}。

表2 鉴权参数

参数

说明

Client ID

固定格式:

${ClientId}|securemode=2,signmethod=hmacsha256|timestamp=${timestamp}|
  • ${ClientId}: 固定格式 ${ProductId}.${NodeId}。
    • ${NodeId}: 设备标识码。
    • ${ProductId}:产品ID。
  • ${timestamp}:Unix时间戳,毫秒。

User Name

由设备标识码和产品ID组成,固定格式:

${NodeId}&${ProductId}

Password

以设备密码为密钥,将设备参数与参数值拼接后的字符串为加密串进行hmacsha256算法加密。

加密串格式:

clientId${clientId}deviceName${nodeId}productKey${productId}timestamp${timestamp}
  • ${ClientId}: 固定格式 ${ProductId}.${NodeId}。
  • ${NodeId}: 设备标识码。
  • ${ProductId}:产品ID。
  • ${timestamp}:时间戳。

鉴权模板:

{
	"template_name": "template2",
	"description": "template2",
	"template_body": {
		"parameters": {
			"iotda::mqtt::client_id": {
				"type": "String"
			},
			"iotda::mqtt::username": {
				"type": "String"
			},
			"iotda::device::secret": {
				"type": "String"
			}
		},
		"resources": {
			"device_id": {
				"Fn::Join": [{
					"Fn::SplitSelect": [
						"${iotda::mqtt::username}",
						"&",
						1
					]
				}, "_", {
					"Fn::SplitSelect": [
						"${iotda::mqtt::username}",
						"&",
						0
					]
				}]
			},
			"timestamp": {
				"type": "UNIX",
				"value": {
					"Fn::MathDiv": [{
						"Fn::ParseLong": {
							"Fn::SplitSelect": [{
								"Fn::SplitSelect": ["${iotda::mqtt::client_id}", "|", 2]
							}, "=", 1]
						}
					}, 1000]
				}
			},
			"password": {
				"Fn::HmacSHA256": [{
						"Fn::Sub": [
							"clientId${clientId}deviceName${deviceName}productKey${productKey}timestamp${timestamp}",
							{
								"clientId": {
									"Fn::SplitSelect": [
										"${iotda::mqtt::client_id}",
										"|",
										0
									]
								},
								"deviceName": {
									"Fn::SplitSelect": [
										"${iotda::mqtt::username}",
										"&",
										0
									]
								},
								"productKey": {
									"Fn::SplitSelect": [
										"${iotda::mqtt::username}",
										"&",
										1
									]
								},
								"timestamp": {
									"Fn::SplitSelect": [{
										"Fn::SplitSelect": ["${iotda::mqtt::client_id}", "|", 2]
									}, "=", 1]
								}
							}
						]
					},
					"${iotda::device::secret}"
				]
			}
		}
	}
}
support.huaweicloud.com/usermanual-iothub/iot_01_0235.html