当前位置: 首页 > news >正文

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 核心库。

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

http://www.jsqmd.com/news/412602/

相关文章:

  • LuatOS核心库API——【iperf 】吞吐量测试
  • 论文写作利器:8大AI目录生成工具测评,自动更新告别手动调整
  • P8277 [USACO22OPEN] Up Down Subsequence P 题解
  • Colo 环境服务器的操作指南
  • LuatOS核心库API——【json 】json 生成和解析库
  • SRE 应用稳定性看板-从应用健康/业务系统维度的评分系统
  • AI辅助企业战略制定:竞争态势分析与机会识别
  • AI论文工具排行榜:十大写作与文本重构解决方案详解
  • 论文写作利器:9款自动目录生成工具详解及实时更新功能。
  • 基于STM32实现OTABootLoader 第三章——构建BootLoader程序
  • Storm监控与运维:保障大数据处理系统稳定运行
  • 智能写作领域Top10:多维度解析AI文本改写工具的核心优势
  • AIGC论文助手权威榜单:十大AI文本优化工具全面解析
  • 提示工程架构师解读:提示工程如何优化用户培养
  • 大数据领域Kafka的网络拓扑优化
  • 华为OD机考双机位C卷 - 根据IP查找城市(Java Python JS GO C++ C)
  • MAC地址硬刷工具|修改网卡物理地址,BIOS级写入,重装系统不还原
  • OKX 客户 Colo 内网域名接入方式
  • seedance 2.0牛在哪里?
  • 基于深度学习的违章停车检测系统的设计与实现
  • 如何看待OpenClaw(曾用名:Clawdbot、Moltbot)?
  • C++/Python混合编程之Pybind11的使用
  • SRE 应用稳定性看板-从应用维度监控服务健康状态,基于 Apdex 评分体系
  • 大数据领域数据中台的质量评估方法
  • 使用 Terraform + Terragrunt 管理 AWS 基础设施项目说明
  • **4皇后问题回溯搜索过程**的图文解析、关键函数说明及核心考点总结,结构清晰、逻辑准确
  • 系统思考:自由职业背后的悖论
  • Sora2 免费去水印网站
  • **回溯法在两个经典问题(0-1背包、n皇后)中的应用**的清晰解读,涵盖了搜索树结构、剪枝策略、可行解识别与核心约束条件
  • Learning on the Manifold: Unlocking Standard Diffusion Transformers withRepresentation Encoders