LuatOS核心库API——【iotauth 】 IOT 鉴权库

随着边缘计算与智能终端的普及,传统鉴权方案在资源受限设备上面临性能与兼容性挑战。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 核心库。

今天的内容就分享到这里了~

相关推荐
luod1 小时前
Docker 快速安装Jenkins
java·docker·jenkins
电子科技圈1 小时前
XMOS推动智能音频等媒体处理技术从嵌入式系统转向全新边缘计算
人工智能·mcu·物联网·设计模式·音视频·边缘计算·iot
一目Leizi1 小时前
澳洲 IoT 网络安全规则(Cyber Security 2025)与英国 PSTI 笔记
笔记·物联网·web安全
senijusene1 小时前
Linux软件编程: 线程属性与线程间通信详解
java·linux·jvm·算法
我爱娃哈哈1 小时前
SpringBoot + MQTT + EMQX:物联网设备上行数据实时接入与指令下发平台
spring boot·后端·物联网
昱宸星光1 小时前
spring cloud gateway内置路由断言工厂
java·开发语言·前端
亓才孓1 小时前
jdk动态代理和Cglib动态代理的区别,为什么Cglib更适配SpringAOP
java·开发语言
塔中妖2 小时前
Windows 安装 Maven 详细教程(含镜像与本地仓库配置)
java·windows·maven
colicode2 小时前
安卓Android语音验证码接口API示例代码:Kotlin/Java版App验证开发
android·java·前端·前端框架·kotlin·语音识别