自定义模板鉴权使用说明
使用说明
操作步骤
- 创建鉴权模板:进入设备接入控制台左侧导航栏,选择“自定义模板”,单击“创建鉴权模板”。本示例演示使用的鉴权模板与系统默认鉴权一致。
,单击图2 自定义鉴权-创建鉴权模板
模板整体内容如下:
{ "template_name": "system-default-auth", "description": "华为云IoTDA系统默认鉴权模板示例", "status": "ACTIVE", "template_body": { "parameters": { "iotda::mqtt::client_id": { "type": "String" }, "iotda::mqtt::username": { "type": "String" }, "iotda::device::secret": { "type": "String" } }, "resources": { "device_id": { "Ref": "iotda::mqtt::username" }, "timestamp": { "type": "FORMAT", "pattern": "yyyyMMddHH", "value": { "Fn::SubStringAfter": [ "${iotda::mqtt::client_id}", "_0_1_" ] } }, "password": { "Fn::HmacSHA256": [ "${iotda::device::secret}", { "Fn::SubStringAfter": [ "${iotda::mqtt::client_id}", "_0_1_" ] } ] } } } }
表1 鉴权模板参数信息 参数
参数名称
是否必填
描述
template_name
模板名称
是
鉴权模板名称,单个用户下模板名称不能重复,长度不超过128,只允许字母、数字、下划线(_)、连接符(-)的组合。
description
描述
否
鉴权模板的描述信息,长度不超过2048,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合。
status
状态
否
是否激活该模板,默认状态为未激活,一个用户下只能有一个已激活状态的模板。
parameters
参数
是
平台预定义的MQTT连接参数列表,当设备使用密码认证时模板必须包含设备原始密钥参数(iotda::device::secret)。
平台预定义了如下参数:
iotda::mqtt::client_id :mqtt连接参数三元组中的Client Id
iotda::mqtt::username :mqtt连接参数三元组中的User Name
iotda::certificate::country : 设备证书(国家/地区,C )
iotda::certificate::organization : 设备证书(组织,O)
iotda::certificate::organizational_unit : 设备证书(组织单位,OU)
iotda::certificate::distinguished_name_qualifier : 设备证书(可辨别名称限定符,dnQualifier)
iotda::certificate::state_name : 设备证书(省市,ST)
iotda::certificate::common_name : 设备证书(公用名,CN)
iotda::certificate::serial_number : 设备证书(序列号,serialNumber)
iotda::device::secret :表示设备原始密钥
device_id
设备ID函数
是
设备ID取值函数,JSON格式,平台通过解析该函数获取对应设备信息。
timestamp
是否开启时间戳校验
否
是否校验设备连接信息中的时间戳,如果设备连接参数(clientId、username)中包含时间戳建议开启校验。开启校验平台会对比设备携带时间戳与平台系统时间,若设备时间戳加一小时小于平台系统时间则校验失败。
type
时间戳类型
否
UNIX:表示时间戳格式为Unix时间戳,长整型,单位秒。
FORMAT:格式化时间戳类型,比如:2024-03-28 11:47:39、2024/03/28 03:49:13
pattern
时间戳格式
否
时间格式模板,时间戳类型为FORMAT时必填,具体字符含义如下:
y:年
M:月
d:日
H:时
m:分
s:秒
S:毫秒
示例:yyyy-MM-dd HH:mm:ss、yyyy/MM/dd HH:mm:ss
value
时间戳取值函数
否
开启时间戳校验后必填,设备时间戳获取函数,平台通过执行该函数获取设备建链时的时间戳。
password
MQTT密码函数
否
密码函数,当设备认证类型为密钥认证时必填,且模板参数中必须包含设备原始密钥参数(iotda::device::secret),当设备为证书认证时可不填。设备认证类型参考注册设备。平台把设备原始密钥等参数填入函数计算结果,若函数结果与设备建链携带的password参数一致则认证通过,否则认证失败。
- 选择设备调试模板:单击“调试”选择一个设备进行调试,输入mqtt连接参数后单击“调试”查看调试结果。注意:使用系统标准格式的clientId平台会校验username参数与clientId前缀一致。
图3 自定义模板-调试
设备调试成功后单击“激活”启用模板,一旦激活模板所有设备鉴权将使用该模板,且已激活状态下的模板不能修改,后续修改模板建议新创建一个副本模板进行调试,确认无误后进行模板切换。
- 使用mqtt.fx工具模拟设备真实建链,在控制台查看设备处于在线状态,Broker Address填平台接入地址,选择 ,端口使用8883端口。
图4 设备建链
图5 设备列表-设备在线