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

三、常量詳解
核心庫常量,顧名思義是由 LuatOS 內核固件中定義的、不可重新賦值或修改的固定值,在腳本代碼中不需要聲明,可直接調用;
每個常量對應的常量取值僅做日志打印時查詢使用,不要將這個常量取值用做具體的業務邏輯判斷,因為LuatOS內核固件可能會變更每個常量對應的常量取值;
如果用做具體的業務邏輯判斷,一旦常量取值發生改變,業務邏輯就會出錯;
iotauth 庫沒有常量;
四、函數詳解
4.1 iotauth.aliyun(product_key, device_name,device_secret,method,cur_timestamp,istls)
功能
根據阿里云物聯網平臺的設備三元組(ProductKey、DeviceName、DeviceSecret),結合指定的簽名算法和時間戳,生成用于 MQTT 協議接入阿里云 IoT 平臺所需的三個認證參數:client_id、user_name 和 password;
注意事項
1. 該接口僅適用于阿里云 IoT 平臺設備接入;
參數
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)
功能
根據中國移動 OneNet 物聯網平臺的設備或項目憑證,自動生成用于 MQTT 協議接入 OneNet 平臺所需的三個認證參數:client_id、user_name 和 password;
支持 新版 OneNet(產品 ID 為字母數字字符串) 和 舊版 OneNet(產品 ID 為純數字,使用項目級 AccessKey) 兩種接入模式;
注意事項
1. OneNet 平臺存在 新舊兩個版本,認證邏輯不同;
2. 時間戳 cur_timestamp 參數在當前 LuatOS 實現中默認為 32472115200,無需傳入;
參數
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)
功能
根據華為云 IoTDA(IoT Device Access)平臺的設備憑證,自動生成用于 MQTT 協議安全接入華為云 IoT 平臺所需的三個認證參數:client_id、user_name 和 password;
支持帶時間戳校驗和不帶時間戳校驗兩種模式,適配華為云設備鑒權規范;
注意事項
1. 華為云 IoTDA 使用 device_id(而非 ProductKey + DeviceName)作為設備唯一標識,格式通常為:node_id + "_" + device_name(如 "6203cc94c7fb24029b110408_88888888");
2. 若傳入 cur_timestamp,則啟動時間戳校驗模式,平臺將校驗時間有效性;若不傳,則使用無時間戳模式;
參數
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)
功能
根據騰訊云物聯網通信(IoT Explorer)平臺的設備三元組,自動生成用于 MQTT 協議安全接入騰訊云 IoT 平臺所需的三個認證參數:client_id、user_name 和 password;
支持多種簽名算法,并兼容騰訊云設備認證規范;
注意事項
1. 騰訊云使用 product_id + device_name 唯一標識設備,device_secret 用于動態簽名;
參數
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)
功能
根據涂鴉(Tuya)智能云平臺的設備憑證,自動生成用于 MQTT 協議接入涂鴉 IoT 平臺所需的三個認證參數:client_id、user_name 和 password;
適用于涂鴉標準設備接入場景,支持帶時間戳或固定時間戳的簽名模式;
注意事項
1. 涂鴉平臺使用 device_id + device_secret 作為設備唯一身份憑證,無需 ProductKey;
參數
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)
功能
根據百度智能云物聯網核心套件(IoT Core)平臺的設備憑證,自動生成用于 MQTT 協議安全接入百度 IoT 平臺所需的三個認證參數:client_id、user_name 和 password;
支持多種簽名算法,并兼容百度云設備動態鑒權規范;
注意事項
1. 百度 IoT 平臺使用 iot_core_id + device_key + device_secret 三元組進行設備身份認證;
2. 若傳入 cur_timestamp,則啟動時間戳校驗模式,平臺將校驗時間有效性;若不傳,則使用無時間戳模式;
參數
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 開發的所有模組都支持 iotauth 核心庫。
今天的內容就分享到這里了~
審核編輯 黃宇
-
IOT
+關注
關注
190文章
4395瀏覽量
208512
發布評論請先 登錄
【「Altium Designer 25 電路設計精進實踐」閱讀體驗】+本書概覽與內容特點介紹
華為構網型儲能技術進展與商用實踐
2025開放原子開發者大會AI時代數據庫創新實踐分論壇成功舉辦
IoT模組與IoT網關有什么區別和聯系
全球商用驗證!這款防偽鑒權芯片守護數千萬消費電子設備電池安全
TüV南德授予安泰新能源ESG報告獨立鑒證聲明
天合儲能獲得鑒衡目擊實驗室資質認可
低內存場景下的高效壓縮利器:FastLZ壓縮庫應用實踐指南
宏思電子鑒權芯片助力無線充電生技術
三款主流國產數據庫的技術特點
研華工業AI Agent的發展態勢及實踐思考
【iotauth 】 IOT 鑒權庫的技術實踐
評論