在智能家居、工業(yè)互聯(lián)網(wǎng)等復(fù)雜場景中,設(shè)備與平臺之間的信任建立是系統(tǒng)穩(wěn)定運行的前提。iotauth鑒權(quán)庫通過模塊化設(shè)計與多層級安全策略,實現(xiàn)了從設(shè)備注冊、身份驗證到會話管理的全流程覆蓋,助力開發(fā)者高效實現(xiàn)可信連接。
一、概述
在物聯(lián)網(wǎng)(IoT)設(shè)備接入云平臺時,設(shè)備身份認(rèn)證是安全通信的第一步。主流物聯(lián)網(wǎng)云平臺(如阿里云 IoT、華為云 IoT、OneNet 等)普遍采用“三元組”機制進(jìn)行設(shè)備鑒權(quán)——即通過 ProductKey(產(chǎn)品標(biāo)識)、DeviceName(設(shè)備名稱)和 DeviceSecret(設(shè)備密鑰) 唯一標(biāo)識并驗證設(shè)備身份。
然而,不同平臺對三元組的使用方式、簽名算法和 MQTT 連接參數(shù)(client_id、username、password)的構(gòu)造規(guī)則各不相同,開發(fā)者需針對每個平臺單獨實現(xiàn)認(rèn)證邏輯,開發(fā)成本高且易出錯。
為此,LuatOS 提供了統(tǒng)一的 IoT 鑒權(quán)庫(iotauth),封裝了主流云平臺的認(rèn)證流程。開發(fā)者只需傳入三元組信息,即可自動計算并生成符合目標(biāo)平臺要求的 MQTT 連接參數(shù),大幅簡化設(shè)備接入流程,提升開發(fā)效率與系統(tǒng)可維護性。
該庫僅提供生成各種公有云平臺的連接參數(shù),至于完整的公有云平臺業(yè)務(wù)邏輯需要自己參考公有云平臺的文檔自行開發(fā)。
二、核心示例
1、核心示例是指:使用本庫文件提供的核心 API,開發(fā)的基礎(chǔ)業(yè)務(wù)邏輯的演示代碼;
2、核心示例的作用是:幫助開發(fā)者快速理解如何使用本庫,所以核心示例的邏輯都比較簡單;
iotauth(main.lua)

三、常量詳解
核心庫常量,顧名思義是由 LuatOS 內(nèi)核固件中定義的、不可重新賦值或修改的固定值,在腳本代碼中不需要聲明,可直接調(diào)用;
每個常量對應(yīng)的常量取值僅做日志打印時查詢使用,不要將這個常量取值用做具體的業(yè)務(wù)邏輯判斷,因為LuatOS內(nèi)核固件可能會變更每個常量對應(yīng)的常量取值;
如果用做具體的業(yè)務(wù)邏輯判斷,一旦常量取值發(fā)生改變,業(yè)務(wù)邏輯就會出錯;
iotauth 庫沒有常量;
四、函數(shù)詳解
4.1 iotauth.aliyun(product_key, device_name,device_secret,method,cur_timestamp,istls)
功能
根據(jù)阿里云物聯(lián)網(wǎng)平臺的設(shè)備三元組(ProductKey、DeviceName、DeviceSecret),結(jié)合指定的簽名算法和時間戳,生成用于 MQTT 協(xié)議接入阿里云 IoT 平臺所需的三個認(rèn)證參數(shù):client_id、user_name 和 password;
注意事項
1. 該接口僅適用于阿里云 IoT 平臺設(shè)備接入;
參數(shù)
product_key

device_name

device_secret

method

cur_timestamp

istls

返回值
local client_id, user_name, password = iotauth.aliyun(product_key, device_name,device_secret,method,cur_timestamp,istls)
有三個返回值 client_id、user_name、password;
client_id

user_name

password

示例

4.2 iotauth.onenet(produt_id, device_name,key,method,cur_timestamp,version)
功能
根據(jù)中國移動 OneNet 物聯(lián)網(wǎng)平臺的設(shè)備或項目憑證,自動生成用于 MQTT 協(xié)議接入 OneNet 平臺所需的三個認(rèn)證參數(shù):client_id、user_name 和 password;
支持 新版 OneNet(產(chǎn)品 ID 為字母數(shù)字字符串) 和 舊版 OneNet(產(chǎn)品 ID 為純數(shù)字,使用項目級 AccessKey) 兩種接入模式;
注意事項
1. OneNet 平臺存在 新舊兩個版本,認(rèn)證邏輯不同;
2. 時間戳 cur_timestamp 參數(shù)在當(dāng)前 LuatOS 實現(xiàn)中默認(rèn)為 32472115200,無需傳入;
參數(shù)
produt_id

device_name

key

method

cur_timestamp

version

res

返回值
local client_id, user_name, password = iotauth.onenet(produt_id, device_name,key,method,cur_timestamp,version,res)
有三個返回值 client_id、user_name、password;
client_id

user_name

password

示例

4.3 iotauth.iotda(device_id,device_secret,cur_timestamp)
功能
根據(jù)華為云 IoTDA(IoT Device Access)平臺的設(shè)備憑證,自動生成用于 MQTT 協(xié)議安全接入華為云 IoT 平臺所需的三個認(rèn)證參數(shù):client_id、user_name 和 password;
支持帶時間戳校驗和不帶時間戳校驗兩種模式,適配華為云設(shè)備鑒權(quán)規(guī)范;
注意事項
1. 華為云 IoTDA 使用 device_id(而非 ProductKey + DeviceName)作為設(shè)備唯一標(biāo)識,格式通常為:node_id + "_" + device_name(如 "6203cc94c7fb24029b110408_88888888");
2. 若傳入 cur_timestamp,則啟動時間戳校驗?zāi)J?,平臺將校驗時間有效性;若不傳,則使用無時間戳模式;
參數(shù)
device_id

device_secret

cur_timestamp

返回值
local client_id, user_name, password = iotauth.iotda(device_id,device_secret,cur_timestamp)
有三個返回值 client_id、user_name、password;
client_id

user_name

password

示例

4.4 iotauth.qcloud(product_id, device_name,device_secret,method,cur_timestamp,sdk_appid)
功能
根據(jù)騰訊云物聯(lián)網(wǎng)通信(IoT Explorer)平臺的設(shè)備三元組,自動生成用于 MQTT 協(xié)議安全接入騰訊云 IoT 平臺所需的三個認(rèn)證參數(shù):client_id、user_name 和 password;
支持多種簽名算法,并兼容騰訊云設(shè)備認(rèn)證規(guī)范;
注意事項
1. 騰訊云使用 product_id + device_name 唯一標(biāo)識設(shè)備,device_secret 用于動態(tài)簽名;
參數(shù)
product_id

device_name

device_secret

method

cur_timestamp

sdk_appid

返回值
local client_id, user_name, password = iotauth.qcloud(product_id, device_name,device_secret,method,cur_timestamp,sdk_appid)
有三個返回值 client_id、user_name、password;
client_id

user_name

password

示例

4.5 iotauth.tuya(device_id,device_secret,cur_timestamp)
功能
根據(jù)涂鴉(Tuya)智能云平臺的設(shè)備憑證,自動生成用于 MQTT 協(xié)議接入涂鴉 IoT 平臺所需的三個認(rèn)證參數(shù):client_id、user_name 和 password;
適用于涂鴉標(biāo)準(zhǔn)設(shè)備接入場景,支持帶時間戳或固定時間戳的簽名模式;
注意事項
1. 涂鴉平臺使用 device_id + device_secret 作為設(shè)備唯一身份憑證,無需 ProductKey;
參數(shù)
device_id

device_secret

cur_timestamp

返回值
local client_id, user_name, password = iotauth.tuya(device_id,device_secret,cur_timestamp)
有三個返回值 client_id、user_name、password;
client_id

user_name

password

示例

4.6 iotauth.baidu(iot_core_id, device_key,device_secret,method,cur_timestamp)
功能
根據(jù)百度智能云物聯(lián)網(wǎng)核心套件(IoT Core)平臺的設(shè)備憑證,自動生成用于 MQTT 協(xié)議安全接入百度 IoT 平臺所需的三個認(rèn)證參數(shù):client_id、user_name 和 password;
支持多種簽名算法,并兼容百度云設(shè)備動態(tài)鑒權(quán)規(guī)范;
注意事項
1. 百度 IoT 平臺使用 iot_core_id + device_key + device_secret 三元組進(jìn)行設(shè)備身份認(rèn)證;
2. 若傳入 cur_timestamp,則啟動時間戳校驗?zāi)J?,平臺將校驗時間有效性;若不傳,則使用無時間戳模式;
參數(shù)
iot_core_id

device_key

device_secret

method

cur_timestamp

返回值
local client_id, user_name, password = iotauth.baidu(iot_core_id, device_key,device_secret,method,cur_timestamp)
有三個返回值 client_id、user_name、password;
client_id

user_name

password

示例

五、模組支持說明
支持 LuatOS 開發(fā)的所有模組都支持 iotauth 核心庫。
今天的內(nèi)容就分享到這里了~
審核編輯 黃宇
-
IOT
+關(guān)注
關(guān)注
190文章
4395瀏覽量
208486
發(fā)布評論請先 登錄
【「Altium Designer 25 電路設(shè)計精進(jìn)實踐」閱讀體驗】+本書概覽與內(nèi)容特點介紹
華為構(gòu)網(wǎng)型儲能技術(shù)進(jìn)展與商用實踐
2025開放原子開發(fā)者大會AI時代數(shù)據(jù)庫創(chuàng)新實踐分論壇成功舉辦
IoT模組與IoT網(wǎng)關(guān)有什么區(qū)別和聯(lián)系
全球商用驗證!這款防偽鑒權(quán)芯片守護數(shù)千萬消費電子設(shè)備電池安全
TüV南德授予安泰新能源ESG報告獨立鑒證聲明
天合儲能獲得鑒衡目擊實驗室資質(zhì)認(rèn)可
低內(nèi)存場景下的高效壓縮利器:FastLZ壓縮庫應(yīng)用實踐指南
宏思電子鑒權(quán)芯片助力無線充電生技術(shù)
三款主流國產(chǎn)數(shù)據(jù)庫的技術(shù)特點
研華工業(yè)AI Agent的發(fā)展態(tài)勢及實踐思考
【iotauth 】 IOT 鑒權(quán)庫的技術(shù)實踐
評論