版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 智慧物联网应用平台技术白皮书目 录 TOC o 1-3 h z u HYPERLINK l _Toc4136563 1.平台简介 PAGEREF _Toc4136563 h 3 HYPERLINK l _Toc4136564 1.1.设备接入 PAGEREF _Toc4136564 h 3 HYPERLINK l _Toc4136565 1.2.设备管理 PAGEREF _Toc4136565 h 3 HYPERLINK l _Toc4136566 1.3.数据及访问安全 PAGEREF _Toc4136566 h 3 HYPERLINK l _Toc4136567 1.4.丰富API支持
2、PAGEREF _Toc4136567 h 3 HYPERLINK l _Toc4136568 1.5.应用集成工具 PAGEREF _Toc4136568 h 3 HYPERLINK l _Toc4136569 1.6.简易应用孵化工具 PAGEREF _Toc4136569 h 4 HYPERLINK l _Toc4136570 2.平台架构 PAGEREF _Toc4136570 h 4 HYPERLINK l _Toc4136571 2.1.设备接入 PAGEREF _Toc4136571 h 4 HYPERLINK l _Toc4136572 2.2.设备管理 PAGEREF _To
3、c4136572 h 5 HYPERLINK l _Toc4136573 2.3.API PAGEREF _Toc4136573 h 5 HYPERLINK l _Toc4136574 2.4.HTTP推送 PAGEREF _Toc4136574 h 8 HYPERLINK l _Toc4136575 2.5.消息队列MQ PAGEREF _Toc4136575 h 9 HYPERLINK l _Toc4136576 2.6.安全认证 PAGEREF _Toc4136576 h 11平台简介OneNET定位为PaaS服务,即在物联网应用和真实设备之间搭建高效、稳定、安全的应用平台:面向设备,适
4、配多种网络环境和常见传输协议,提供各类硬件终端的快速接入方案和设备管理服务;面向企业应用,提供丰富的API和数据分发能力以满足各类行业应用系统的开发需求,使物联网企业可以更加专注于自身应用的开发,而不用将工作重心放在设备接入层的环境搭建上,从而缩短物联网系统的形成周期,降低企业研发、运营和运维成本。OneNET主要功能如下:设备接入支持多种行业及主流标准协议的设备接入,如CoAP(LWM2M)、MQTT、Modbus、HTTP等,满足多种应用场景的使用需求。提供多种语言开发SDK,帮助开发者快速实现设备接入支持用户协议自定义,通过上传解析脚本来完成协议的解析设备管理提供设备生命周期管理功能,支
5、持用户进行设备注册,设备更新,设备查询、设备删除提供设备在线状态管理功能,提供设备上下线的消息通知,方便用户管理设备的在线状态提供设备数据存储能力,便于用户进行设备海量数据存储于查询提供设备调试工具以及设备日志,便于用户快速调试设备以及定位设备问题数据及访问安全提供TLS以及DTLS(适用于CoAP协议)加密通道,保证用户数据的传输安全支持用户采用私有协议以及私有加密方式进行数据传输,保证数据安全分布式结构、异地双活等多重数据保障机制,提供安全的数据存储服务支持安全的访问鉴权机制,有效降低密钥以及访问令牌被仿冒的风险丰富API支持开放的API接口,通过简单的调用快速实现生成应用不断丰富的API
6、种类,包括设备增删改查、数据流创建、数据点上传、命令下发等,帮助用户便捷的构建上层应用应用集成工具提供消息队列MQ,便于用户应用系统快速获取设备数据/事件提供HTTP推送服务,可以将数据以HTTP请求的方式主动推送至应用系统支持简单规则配置,用户可自定义数据处理逻辑简易应用孵化工具为初创用户提供简易应用生成工具,快速实现的简单应用提供丰富的图表展示组件,满足多场景使用需求平台架构设备接入OneNET提供安全稳定的设备接入服务,支持包括LWM2M(CoAP)、MQTT、Modbus、HTTP、TCP等在内的多种协议:在考虑低功耗以及广覆盖的场景,建议使用CoAP协议接入在工业modbus通信场景
7、,建议使用DTU+Modbus协议接入在需要与设备实时通信的场景,建议采用MQTT协议接入在设备单纯上报数据的场景,可以使用HTTP/HTTPS协议接入在用户需要自定义协议接入的场景,建议采用TCP+脚本的方式接入设备管理OneNET平台针对不同的使用场景,提供关于设备的包括生命周期管理、在线状态监测、在线调试、数据管理等功能在内的丰富的设备管理功能。APIOneNET提供开放的、丰富的、基于HTTP/HTTPS的API接口,用户可以使用API进行设备管理,数据查询,设备命令交互等操作,在API的基础上,根据自己的个性化需求指定搭建上层应用。平台提供的API列表如下:注:用户可以使用的API集
8、根据选择的产品接入协议不同会有差异,详情请见各协议产品支持的API详情设备管理相关API请求方式说明新增设备POST供应用层使用注册设备POST用于设备自行注册场景更新设备信息PUT用于更新设备属性查询设备详情GET用于查询设备属性,包括设备在线状态批量查询设备信息GET批量查询设备状态GET删除设备DELETE数据流管理相关API请求方式说明新增数据流POST建立某设备独有的数据属性,产品内建议使用数据流模板替代更新数据流属性PUT查询数据流状态GET可用于查询数据流配置以及最新数据点删除数据流DELETE数据管理相关API请求方式说明查询设备历史数据GET批量查询设备最新数据GET上传数据
9、点POST设备/应用服务器均可通过HTTP/HTTPS方式上传数据上传文件POST可用于设备上传原始数据、图片、文件等获取文件GET设备命令相关API请求方式说明下发命令POST平台主动发送数据至设备查询命令状态GET用于查询某条命令的执行情况查询命令响应GET设备收到命令时需要设备发送命令响应查询设备历史命令GET触发器相关API请求方式说明新增触发器POST更新触发器PUT查询触发器详情GET删除触发器DELETEapikey相关API请求方式说明新增apikeyPOST新增的apikey只具有设备级的权限更新apikeyPUT查询apikeyGET删除apikeyDELETEtopic相
10、关(限MQTT设备使用)API请求方式说明发布消息POST发布消息到topic查询订阅设备列表GET查询订阅某个topic的设备列表查询设备订阅详情GET查询设备的topic订阅列表查询topic列表GETHTTP推送针对某些实时性要求较高的场景,OneNET提供数据推送功能,可以过滤掉设备端频繁的周期性上报数据,将用户关心的实时性较高的数据,通过HTTP/HTTPS的方式推送到用户的应用服务器上。平台提供数据推送功能,可以将平台作为客户端,将相关信息以HTTP/HTTPS请求的方式,发送给应用服务器。其中,相关信息包括:设备新增数据点消息设备上下线消息设备对于下行命令的应答信息(仅限NB设备
11、)平台发起的HTTP请求主要包括:GET:用于用户所配置的URL有效性验证POST:用于推送新增数据点消息、设备上下线消息以及设备对于下行命令的应答信息推送服务提供数据过滤功能,用户可以以数据流模板为过滤条件,过滤掉例如设备的频繁的周期性上报等大量时间不敏感数据,只推送用户自己关心的实时性要求较高的数据。推送功能提供数据压缩的功能,用户可以设置数据量以及时间的压缩方式,将一定时间内的一定量的多包单信息报文,合并成为一包包含多条信息的json数据,可以大大减少应用服务器的处理压力。消息队列MQ消息队列MQ是为实现应用层快速可靠地获取设备消息而推出的消息中间件服务,用户可以自定义消息生产者生产的消
12、息类型,例如设备数据点,设备生命周期事件等,用户应用层可以作为消息消费者与服务建立长连接进行消息消费。消息队列MQ定位为OneNET设备接入服务使用的,用于实现应用层快速、即时、可靠地获取设备消息的物联网服务组件,服务模型如下:其中:topic为队列实体,一个MQ服务中可以创建多个队列实体sub(订阅 subscription)为实际消费代理,消费代理将数据消费后发送给client,一个队列可以支持多个消费代理,消费代理之间相互独立,可分别采用不同的模式消费队列中的数据服务特点消息缓存MQ服务支持消息缓存,可以有效的缓存由于网络或者应用服务器异常等原因导致的未能被即时消费的消息队列缓存具有一定
13、的容量上限,当队列容量达到上限后,服务将回收队列头部的数据削峰去谷MQ服务可以有效的缓冲前向突发的大并发量设备消息,以较低的较为平均的速率推送给消费客户端,从而减轻消费端压力最多一次与至少一次用户可以通过配置消息锁定时间来实现最多消费一次以及至少消费一次的消息模式,若启用消息锁定时间,在该时间内,若客户端无应答确认,则认为消费失败,锁定时间段之后,客户端可以再次消费到该未被确认的消息消息过期时间用户可以自定义消息过期时间,进入队列时长达到消息过期时间的消息将会被删除,即服务会删除进入队列超过一定时间的消息自定义消费位置支持用户自定义消费位置,例如从头部消费,从尾部消费或者从队列中某个位置消费,
14、完成设置后,客户端将消费到来自队列中自定义位置之后的消息只要消息没有因为超时或者缓存区已满而被删除,用户均可以通过指定消费位置重新消费到该消息多方独立消费服务支持用户为一个队列创建多个消费代理(sub),消费代理之间相互独立,可以分别采用不同的配置消费同一队列中的数据单点消费与集群消费MQ服务支持一个或者多个client同时与同一个sub(订阅 subscription)建立订阅关系当多个client同时与同一个topic中的同一个sub建立订阅关系时,MQ服务会认为客户端处于集群消费模式,消息将被均衡的发送至每个client,且每条消息仅能够被一个客户端消费,如下图所示:安全认证OneNET
15、提供用户资源访问安全认证机制,提供产品级以及设备级的不同粒度的密钥,并支持用户自定义密钥访问权限,最大限度保证用户设备以及应用层接入的安全性。鉴权方式概述OneNET支持普通以及安全两种鉴权认证方式,对比如下表:普通安全(推荐)核心密钥apiKeyaccessKey核心密钥更新不支持支持(即将到来)鉴权参数apiKey由多个参数组构成的token传输内容apiKey(直接传输密钥)token,不含密钥访问时间控制不支持支持自定义权限不支持支持(即将到来)设备资源占用较低较高安全性较低较高本章节重点介绍安全鉴权方式安全鉴权安全方案安全鉴权机制主要通过如下方式保证访问安全:避免核心密钥网络中直接传
16、输,从而避免核心密钥在传输中泄露通过包含由非可逆算法生成的签名的token来进行身份认证,即使token被窃取,攻击者也无法通过token反向获得核心密钥鉴权参数token具有用户自定义的过期时间属性,可从时间维度降低被攻击/仿冒的风险常见安全方案访问者(可以为应用或者设备)首先通过访问管理者获取临时访问token,访问管理者可根据需要自定义该token的访问有效期(即过期时间),访问者获取该token后方才能访问OneNET访问管理者直接将密钥授权给访问者(例如,直接为设备烧写key),访问者通过密钥生成token进行访问适用范围安全鉴权适用范围为:API鉴权、消息队列MQ连接鉴权、MQTT
17、S设备接入鉴权token 组成与算法token由多个参数构成,如下表:名称类型是否必须参数说明参数示例versionstring是参数组版本号,日期格式,目前仅支持2018-10-312018-10-31resstring是访问资源 resource格式为:父资源类/父资源ID/子资源类/子资源ID见res使用场景说明products/123123products/123123/devices/78329710mqs/osndf09nand9f21390etint是访问过期时间 expirationTime,unix时间当一次访问参数中的et时间小于当前时间时,平台会认为访问参数过期从而拒绝该
18、访问1537255523表示:北京时间 2018-09-18 15:25:23methodstring是签名方法 signatureMethod支持md5、sha1、sha256sha256signstring是签名结果字符串 signature关于token参数的特别说明:res使用场景说明使用场景如下表:场景res参数格式示例说明API访问products/product_idproducts/123123目前仅支持产品级鉴权消息队列MQ连接mqs/MQ_IDmqs/osndf09nand9f21390消息队列MQ作为独立资源访问MQTTS设备连接products/product_idpr
19、oducts/123123需使用产品级密钥products/product_id/devices/device_nameproducts/123123/devices/mydev需使用设备级密钥sign签名算法参数sign的生成算法为:sign = base64(hmac_(base64decode(accessKey), utf-8(StringForSignature) 其中:accessKey为OneNET为独立资源(例如,产品)分配的唯一访问密钥,其作为签名算法参数之一参与签名计算,为保证访问安全,请妥善保管accessKey参与计算前应先进行base64decode操作用于计算签名的
20、字符串 StringForSignature的组成顺序按照参数名称进行字符串排序,以n作为参数分隔,当前版本中按照如下顺序进行排序:et、method、res、versionStringForSignature组成示例如下:StringForSignature = et + n + method + n + res+ n + version注意:每个参数均为key=value格式组成,但是仅参数中的value参与计算签名的字符串 StringForSignature的组成,若token参数如下et = 1537255523method = sha1res = products/123123ve
21、rsion = 2018-10-31则用于计算签名的字符串StringForSignature为(按照et、method、res、version的顺序)StringForSignature = 1537255523 + n + sha1+ n + products/123123+ n + 2018-10-31计算出sign后,将每个参数均采用key=value的形式表示,并用&作为分隔符,示例如下:version=2018-10-31&res=products/123123&et=1537255523&method=sha1&sign=ZjA1NzZlMmMxYzIOTg3MjBzNjYTI2
22、MjA4Yw=参数编码token中key=value的形式的value部分需要经过URL编码,需要进行编码的特殊符号如下:序号符号编码1+%2B2空格%203/%2F4?%3F5%256#%237&%268=%3D编码后,上例中实际传输token为:version=2018-10-31&res=products%2F123123&et=1537255523&method=sha1&sign=ZjA1NzZlMmMxYzIOTg3MjBzNjYTI2MjA4Yw%3Dtoken生成示例python代码示例import base64import hmacimport timefrom urllib
23、.parse import quotedef token(id,access_key): version = 2018-10-31 res = mqs/%s % id # 通过MQ_ID访问MQ # res = products/%s % id # 通过产品ID访问产品API # 用户自定义token过期时间 et = str(int(time.time() + 3600) # 签名方法,支持md5、sha1、sha256 method = sha1 # 对access_key进行decode key = base64.b64decode(access_key) # 计算sign org =
24、et + n + method + n + res + n + version sign_b = hmac.new(key=key, msg=org.encode(), digestmod=method) sign = base64.b64encode(sign_b.digest().decode() # value 部分进行url编码,method/res/version值较为简单无需编码 sign = quote(sign, safe=) res = quote(res, safe=) # token参数拼接 token = version=%s&res=%s&et=%s&method=%
25、s&sign=%s % (version, res, et, method, sign) return tokenif _name_ = _main_: id = 123123 access_key = vt1vE9/j2016krqoNlJ264ymtMSDSUMWqOaLo94RnAs= print(token(id,access_key)Java代码示例import javax.crypto.Mac;import javax.crypto.spec.SecretKeySpec;import java.io.UnsupportedEncodingException;import .URLE
26、ncoder;import java.security.InvalidKeyException;import java.security.NoSuchAlgorithmException;import java.util.Base64;public class Token public static String assembleToken(String version, String resourceName, String expirationTime,String signatureMethod, String accessKey) throws UnsupportedEncodingE
27、xception, NoSuchAlgorithmException, InvalidKeyException StringBuilder sb = new StringBuilder(); /含特殊符号的value进行URL编码 String res = URLEncoder.encode(resourceName, UTF-8); String sig = URLEncoder.encode(generatorSignature(version, resourceName, expirationTime, accessKey, signatureMethod), UTF-8); sb.ap
28、pend(version=) .append(version) .append(&res=) .append(res) .append(&et=) .append(expirationTime) .append(&method=) .append(signatureMethod) .append(&sign=) .append(sig); return sb.toString(); public static String generatorSignature(String version, String resourceName, String expirationTime,String a
29、ccessKey, String signatureMethod) throws NoSuchAlgorithmException,InvalidKeyException /按照et method res version的顺序 String encryptText = expirationTime + n + signatureMethod + n + resourceName + n + version; String signature; byte bytes = HmacEncrypt(encryptText, accessKey, signatureMethod); signature = Base64.getEncoder().encodeToString(bytes); return signature; public static byte HmacEncrypt(String data,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 屋里尖尖角课件
- 西京学院《影视鉴赏》2023-2024学年第一学期期末试卷
- 西京学院《数据采集与预处理》2022-2023学年期末试卷
- 孝亲敬老,从我做起
- 西京学院《机器学习》2023-2024学年期末试卷
- 2024-2025学年高二物理举一反三系列1.4质谱仪和回旋加速器((含答案))
- 爆米花课件背景
- Module 4单元备课(说课稿)-2024-2025学年外研版(一起)英语三年级上册
- 西昌学院《土地评价学》2022-2023学年第一学期期末试卷
- 天然气净化高级单选题复习试题有答案
- 河北省地图介绍模板
- 全国职业英语技能大赛选拔赛职场应用样题
- 设备安全运行检查评分表
- 工程维修派工单格式
- 仓库收货台账
- 木结构设计规范
- 电子公章模板
- 小学音乐人音四年级上册(2023年新编)第5课童心-《荡秋千》教学设计
- 四年级数学上册课件-8. 沏茶 -人教版(共14张PPT)
- 计算书水泵耗电输冷比
- 四年级英语上册课件-Unit 4 My home Lets learn -人教PEP版(共20张PPT)
评论
0/150
提交评论