一型一密认证方式下,同一产品下所有设备可以烧录相同的设备标志信息,即所有设备包含相同的产品证书(ProductKey和ProductSecret)。设备发送激活请求时,物联网平台会进行身份确认,认证通过后,下发设备接入所需信息。
背景信息
一型一密认证支持两种使用方式:一型一密免预注册、一型一密预注册。
一型一密免预注册:无需提前在物联网平台创建设备,该方式为动态创建设备,并返回认证信息给设备。
一型一密预注册:需要提前在物联网平台创建设备,该方式为动态获取DeviceSecret。
前提条件
使用流程
如下功能时序图,以设备的应用程序demos/device_dynamic_register_demo.c
为例,介绍一型一密的使用流程。
一型一密预注册方式流程图
一型一密免预注册流程图
步骤1: 设备初始化
添加头文件。
#include "aiot_device_api.h"
创建设备句柄。
void *device_client = aiot_device_create(product_key, device_name); if (device_client == NULL) { printf("device_client failed\n"); return -1; }
步骤2: 设置连接参数
config = aiot_linkconfig_init(protocol);
if(config == NULL){
aiot_device_delete(&device_client);
printf("aiot_linkconfig_init failed\n");
return -1;
}
aiot_linkconfig_host(config, host, port);
/* 动态注册功能需要使用product_secret, 如果是企业实例设备还需要INSTANCE_ID */
aiot_linkconfig_dynamic_register(config, product_secret, INSTANCE_ID);
步骤3: 发起动态注册请求
一型一密预注册方式
/* 动态注册获取密钥成功,可以使用该密钥进行连接 */ char device_secret_result[128]; res = aiot_device_dynamic_secret(device_client, config, device_secret_result, 128); if(res != STATE_SUCCESS) { ... } /* TODO: 示例只做打印处理,用户应保存设备密钥 */ printf("dynamic register success, device_secret %s\r\n", device_secret_result);
一型一密免预注册方式
aiot_dynamic_register_info_t info; res = aiot_device_dynamic_register(device_client, config, &info); if(res != STATE_SUCCESS) { aiot_device_delete(&device_client); aiot_linkconfig_deinit(&config); printf("aiot_device_dynamic_register failed\n"); return -1; } /* TODO: 此处只做打印处理,用户应该完成建连信息的保存 */ printf("dynamic register success, username %s, password %s, clientid %s\r\n", info.username, info.password, info.client_id);
步骤4: 保存设备密钥并建连信息
整个流程示例中仅对动态注册获取的结果进行了打印处理,用户使用时应该保存至文件系统中。
步骤5: 退出程序
/* 资源回收 */
aiot_linkconfig_deinit(&config);
aiot_device_delete(&device_client);
文档内容是否对您有帮助?