动态注册
动态注册也叫做一型一密,一型一密是指同一个产品下的设备激活时使用产品公共的凭证(产品序列号,产品密码)进行连接,然后再获取设备密码。
获取到设备密码后,设备将设备密码保存到不易失存储中,然后使用取得的设备密码按照静态注册的流程完成动态激活认证。
操作步骤:
预认证
预认证是指为了防止设备被仿制或冒充接入平台,先将表征设备的唯一标识,比如MAC、IEMI或SN等作为设备序列号预先通过手动添加设备的方式批量添加到平台,这样不在该白名单内的设备就无法被激活,保证可信设备的接入。
预认证可以关闭,关闭即是指动态注册时,不对设备号进行校验。
3. 准备工作:
1). 开发设备端固件,比如使用C-SDK动态注册开发相应的固件;
2). 确认产品详情页的<动态注册>开关已经打开;
3). 如果预认证打开(关闭则忽略该条):参考创建单个或多个设备-手动输入,在控制台批量添加即将要激活的设备序列号,以便于设备激活时进行预认证,设备进行预认证时,只有被添加过的设备才能通过云平台校验,完成预认证;
4. 将步骤2开发的固件直接发给产线烧录;
5. 设备首次激活时,将表征自己唯一标识的MAC等作为设备序列号,通过产品公共凭证(产品序列号,产品密码)及该设备序列号进行设备注册。如果预认证开关打开,则要确保该设备序列号已经手动添加到IoT-Core平台。
6. 预认证通过后(如果打开该开关),设备可以接入物联网平台,但是此时权限受限,不能进行消息的收发,设备需要获取设备密码,通过设备密码登录,才能正常使用平台功能,进行消息收发。
设备获取设备密码方法为:
1). 设备向Topic/undefined/${ProductSN}/${DeviceSN}/password发送一条请求获取密码消息(RequestID任意指定):
{ "RequestID": "100" }
2). 云平台收到请求后会将设备密码通过Topic /undefined/${ProductSN}/${DeviceSN}/password_reply下发给设备,消息格式为:
{ "RetCode": "0", "RequestID": "100", "Password": "the device secret" }
7. 设备通过收到的设备密码,以静态注册的方式完成激活认证。
具体流程:
生成动态MQTT Broker认证需要的三要素:ClientID,UserName,Password。
1. 获取到产品的公共凭证(产品序列号,产品密码),分别表示为${ProductSN},${ProdSecret};
2. 如果预认证开关打开,手动添加设备序列号${DeviceSN}到云平台,作为允许动态注册的设备白名单;
3. 设备将自己的某唯一标识作为${DeviceSN},比如可以选取设备的MAC地址、IMEI或者SN等作为${DeviceSN}。
4. 通过以下规则生成MQTTBroker认证的三要素连接云平台;
MQTT认证三要素 | 生成规则 |
ClientID | ${ProductSN}.${DeviceSN} 举例:70ly1tvowt696r15.112233445566 |
UserName | ${ProductSN}|${DeviceSN}|${authmode} 举例:70ly1tvowt696r15|112233445566|2 authmode: 1 表示静态注册;2表示动态注册 |
Password | ${ProductSecret} 举例:sqx0cltqba402z7z |
5. 订阅Topic /undefined/${ProductSN}/${DeviceSN}/passwordreply,举例:/undefined/70ly1tvowt696r15/112233445566/passwordreply;
6. 发送请求获取密码消息
Publish /undefined/${ProductSN}/${DeviceSN}/password 举例: /undefined/70ly1tvowt696r15/112233445566/password { "RequestID": "100" }
云平台将设备密码通过步骤5订阅的Topic下发,举例收到的设备密码为zlc3d21u5k8fq0d2;
Subscribe /undefined/${ProductSN}/${DeviceSN}/password_reply 举例: /undefined/70ly1tvowt696r15/112233445566/password_reply { "RetCode": "0", "RequestID": "100", "Password": "zlc3d21u5k8fq0d2" }
7. 通过静态注册的规则生成新的MQTTBroker认证的三要素:
MQTT认证三要素 | 生成规则 |
ClientID | ${ProductSN}.${DeviceSN} 举例:70ly1tvowt696r15.112233445566 |
UserName | ${ProductSN}|${DeviceSN}|${authmode} 举例:70ly1tvowt696r15|112233445566|1 authmode: 1 表示静态注册;2表示动态注册 |
Password | ${DeviceSecret} 举例:zlc3d21u5k8fq0d2 |
8. 参考下一节设备连接将设备接入到物联网平台,完成认证;