CN111371889B - 消息处理方法、装置、物联网系统和存储介质 - Google Patents
消息处理方法、装置、物联网系统和存储介质 Download PDFInfo
- Publication number
- CN111371889B CN111371889B CN202010139643.XA CN202010139643A CN111371889B CN 111371889 B CN111371889 B CN 111371889B CN 202010139643 A CN202010139643 A CN 202010139643A CN 111371889 B CN111371889 B CN 111371889B
- Authority
- CN
- China
- Prior art keywords
- message
- client
- publishing
- user role
- release
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请涉及一种消息处理方法、装置、物联网系统和存储介质。其中,消息处理方法,包括步骤:接收到发布客户端发送的发布消息时,获取发布客户端的用户角色;若基于用户角色确认发布客户端具备发布权限,则检测发布消息的主题是否符合预设格式;预设格式包括主题包含识别信息;在检测的结果为是时,推送发布消息。本申请能够提高物联网系统的安全性,确保MQTT消息不会被恶意窃取和伪造。
Description
技术领域
本申请涉及物联网技术领域,特别是涉及一种消息处理方法、装置、物联网系统和存储介质。
背景技术
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)协议是物联网(IOT,Internet of things)系统中广泛的协议。它是一种基于主题的消息发布/订阅协议,客户端可以发布消息到指定的主题上,其它客户端如果关心该主题的消息,可以订阅该主题的消息,在该主题有消息发布时,消息会自动推送给订阅者。
MQTT协议的简单使用情况,可以如图1所示:消息订阅者Client C先向MQTT服务订阅(subscribe)指定的主题,比如这里订阅的是/report/data主题。消息发布者Client A和Client B在任何时候都可向/report/data主题发布消息,发布的消息会被推送到订阅者Client C。在正常的情况下:1.每个客户端都可以订阅消息和发布消息。如图1所示,ClientA、Client B和Client C都可以订阅消息和发布消息;2.每个客户端都可以订阅任何主题的消息。系统中可以有多个主题,每个客户端都可以订阅任何主题上的消息;3.每个客户端都可以发布任何主题的消息。系统中可以有多个主题,每个客户端都可以向任何主题发布消息;4.消息的发布者和消息的订阅者是没有联系的,如图1所示,Client C并不能确定消息是由Client A还是Client B发布的。
在实现过程中,发明人发现传统技术中至少存在如下问题:MQTT仅仅定义了通讯协议,存在较大的安全隐患;例如,客户端无法区分一个消息是正常消息还是恶意消息,即传统物联网系统存在安全性低的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高安全性的消息处理方法、装置、物联网系统和存储介质。
为了实现上述目的,本发明实施例提供了一种消息处理方法,包括步骤:
接收到发布客户端发送的发布消息时,获取发布客户端的用户角色;
若基于用户角色确认发布客户端具备发布权限,则检测发布消息的主题是否符合预设格式;预设格式包括主题包含识别信息;
在检测的结果为是时,推送发布消息。
在其中一个实施例中,用户角色为根据IoT的业务逻辑分类得到;识别信息包括设备ID;发布消息包含发布客户端的上报数据;
发布消息用于指示订阅客户端根据设备ID对上报数据进行分类存储。
在其中一个实施例中,还包括步骤:
接收到订阅客户端发送的订阅消息时,获取订阅客户端的用户角色;
若基于用户角色确认订阅客户端具备订阅权限,则确定订阅客户端针对订阅消息的主题的订阅。
在其中一个实施例中,用户角色包括数据存储服务;
基于用户角色确认订阅客户端具备订阅权限的步骤包括:
在获取到的订阅客户端的用户角色为数据存储服务时,确定订阅客户端具备订阅权限。
在其中一个实施例中,用户角色包括设备;
在接收到发布客户端发送的发布消息时,获取发布客户端的用户角色的步骤之前,还包括步骤:
在发布客户端登录时,记录发布客户端的用户角色,并获取发布客户端的设备信息;设备信息包括设备密码和设备ID;
若确定发布客户端的用户角色为设备,则验证设备信息,并在验证的结果为通过时,记录设备ID。
在其中一个实施例中,基于用户角色确认发布客户端具备发布权限的步骤包括:
在获取到的发布客户端的用户角色为设备时,确定发布客户端具备发布权限;
检测发布消息的主题是否符合预设格式的步骤包括:
确定主题中包含设备ID、且查找到设备ID的记录时,确认发布消息的主题符合预设格式;
若基于用户角色确认发布客户端具备发布权限,则检测发布消息的主题是否符合预设格式的步骤之后,还包括步骤:
在检测的结果为否时,丢弃发布消息;
在连续多次检测到不合法事件时,断开与发布客户端的连接;不合法事件为具备发布权限的发布客户端发送的发布消息不符合预设格式。
一种消息发布方法,包括步骤:
向服务器发送发布消息;发布消息用于指示服务器获取本发布客户端的用户角色,且在基于用户角色确认本发布客户端具备发布权限时,检测发布消息的主题是否符合预设格式,并在检测的结果为是时,推送发布消息;其中,预设格式包括主题包含识别信息。
在其中一个实施例中,用户角色包括设备;识别信息包括设备ID;
向服务器发送发布消息的步骤之前,还包括步骤:
在登录服务器时,向服务器传输设备信息;设备信息包括设备密码和设备ID;设备信息用于指示服务器在确定本发布客户端的用户角色为设备时,验证设备信息,并在验证的结果为通过时,记录设备ID。
一种消息处理装置,包括:
角色获取模块,用于接收到发布客户端发送的发布消息时,获取发布客户端的用户角色;
格式检测模块,用于若基于用户角色确认发布客户端具备发布权限,则检测发布消息的主题是否符合预设格式;预设格式包括主题包含识别信息;
消息推送模块,用于在检测的结果为是时,推送发布消息。
一种消息发布装置,包括:
消息发布模块,用于向服务器发送发布消息;发布消息用于指示服务器获取本发布客户端的用户角色,且在基于用户角色确认本发布客户端具备发布权限时,检测发布消息的主题是否符合预设格式,并在检测的结果为是时,推送发布消息;其中,预设格式包括主题包含识别信息。
一种物联网系统,包括发布客户端、订阅客户端和服务器;服务器分别连接发布客户端、订阅客户端;
服务器用于执行上述任一项消息处理方法的步骤;
发布客户端用于执行上述任一项消息发布方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一项方法的步骤。
上述技术方案中的一个技术方案具有如下优点和有益效果:
本申请提出基于用户角色进行客户端(例如,发布客户端或订阅客户端)的权限管理,同时检测发布消息的主题是否符合预设格式,仅在符合格式时推送相应的发布消息。具体的,基于用户角色可以实现粗粒度的权限管理,进一步的,通过对消息主题的格式限定,例如,主题包含识别信息,使得每个发布客户端都向一个独立的主题发布消息,进而能够区分发布客户端的身份,实现基于识别信息和主题进行客户端的权限管理。以上,本申请能够提高物联网系统的安全性,确保MQTT消息不会被恶意窃取和伪造。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为传统物联网系统中消息发布订阅示意图;
图2为一个实施例中消息处理方法的应用环境图;
图3为一个实施例中消息处理方法的流程示意图;
图4为一个实施例中物联网系统消息处理方法的流程示意图;
图5为另一个实施例中消息处理方法的流程示意图;
图6为一个实施例中消息处理装置的结构框图;
图7为一个实施例中服务器的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请涉及的技术术语:
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM(International Business Machines Corporation)开发的一个即时通讯协议,已经成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,可用做传感器和制动器的通信协议。
物联网(IOT)是新一代信息技术的重要组成部分,也是“信息化”时代的重要发展阶段。其英文名称是:“Internet of things”。顾名思义,物联网就是物物相连的互联网。
然,发明人在实践过程中发现MQTT只是定义了通讯协议,无法对MQTT的客户端权限进行限制;如图1所示,从安全性方面来看,传统物联网系统存在较大安全隐患:①由于每个客户端都可以向任何主题发布消息,Client A可以冒充Client B发布一个恶意的消息,由于消息的发布者和消息的订阅者是没有联系的,Client C收到这个消息后,没有办法区分这是一个正常消息还是一个恶意消息。②由于每个客户端都可以订阅任何主题的消息,在MQTT上传输的消息就缺乏安全性(没有秘密可言)。而实践中往往存在这样的需求,只需要特定的客户端才能看到某个主题的消息,或者只能向某个主题发布消息。
本申请提出一种MQTT服务权限管理方式,利用用户角色、设备ID和主题三者互相配合,实现MQTT的权限管理。进一步的,本申请运用MQTT协议,设备可以很方便地连接到物联网云服务,管理设备并处理数据,最后应用到各种业务场景。
本申请提供的消息处理方法,可以应用于如图2所示的应用环境中。其中,图2提供了一种典型的温度监控系统的架构,IoT主要功能就是设备上传数据到云端,云端存储接收到的设备数据。图2中,各设备(即发布客户端)分别与服务器(即MQTT服务器)通信,服务器与数据存储服务(即订阅客户端)通信。其中,设备可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,以及智能家居中的各类设备,例如温度监控器;而服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现,也可以是云端服务器。
在一个实施例中,如图3所示,提供了一种消息处理方法,以该方法应用于图2中的服务器为例进行说明,包括以下步骤:
步骤302,接收到发布客户端发送的发布消息时,获取发布客户端的用户角色。
其中,用户角色可以根据IoT的业务逻辑分类得到。即本申请中的用户角色是根据IoT的业务逻辑分类的;在如图2所示的系统中,可以把MQTT的用户角色分成两类:①设备;在一个具体示例中,设备可以是温度监控器,它定时向MQTT服务发布消息,以上报当前位置的温度。②数据存储服务,该服务可以采用云端服务器(也即数据存储服务器)予以实现,数据存储服务器注册MQTT服务中上报温度的主题,在收到上报的温度时,把它们存储到数据库中。
需要说明的是,按照实际需求,本申请还可提供其他很多用户角色,比如,用户APP(Application),用户APP通过MQTT可以远程控制设备;又如,账单统计服务,账单统计服务通过MQTT统计设备的流量,可以作为收费的依据;本申请各实施例中以设备和数据存储服务为例进行说明,而用户APP和账单统计服务亦是可选的用户角色。
具体地,本申请提出可以根据客户端的用户角色,明确的定义各客户端的权限;例如,用户角色为设备的客户端:可发布消息,但不能订阅消息。用户角色为数据存储服务的客户端:可订阅消息,但不能发布消息。此外,本申请中提到的客户端,可以是发布客户端,也可以是订阅客户端,上述命名主要是以客户端当前的实际应用需求出发得到的。
本申请提出服务器在接收到发布客户端发送的发布消息时,获取发布客户端的用户角色;在一个具体的实施例中,可以在客户端登录时,服务器即记录它的用户角色,进而基于用户角色实现粗粒度的权限管理。
在一个具体的实施例中,用户角色包括设备;
在接收到发布客户端发送的发布消息时,获取发布客户端的用户角色的步骤之前,还包括步骤:
在发布客户端登录时,记录发布客户端的用户角色,并获取发布客户端的设备信息;设备信息包括设备密码和设备ID;
若确定发布客户端的用户角色为设备,则验证设备信息,并在验证的结果为通过时,记录设备ID。
具体而言,客户端(例如,发布客户端)登录,服务器记录它的用户角色,如果角色为设备则记录下它的ID。客户端发布消息时,服务器根据它的角色和设备ID判断它是否有权限发布消息,是否有权限在该主题上发布消息,如果有权限则允许发布该消息。
而从设备侧(即发布客户端)而言,设备登录服务器(例如,MQTT服务器)时,必须先输入设备ID和设备密码,服务器会验证设备ID和设备密码,验证通过后记录设备ID,后续设备发布主题/report/data/xxx消息时,服务器会验证主题中的xxx和登录时的设备ID是否相同。
步骤304,若基于用户角色确认发布客户端具备发布权限,则检测发布消息的主题是否符合预设格式;在检测的结果为是时,推送发布消息。
其中,预设格式包括主题包含识别信息。在MQTT标准中,主题是字符串,本申请规定发布消息的主题必须符合预定义的格式(即预设格式),进而实现权限管理。
具体而言,服务器在基于用户角色确认某一发布客户端具备发布权限时,进一步的,服务器需判断该发布客户端是否有权限在某一主题上发布消息;本申请提出检测发布消息的主题是否符合预设格式,若符合预设格式,则推送该发布消息。
本申请提出基于用户角色实现粗粒度的权限管理,然而在实际应用中,如图2所示,若设备xxx冒充设备yyy发布一个消息,依然会出现安全隐患。例如,设备xxx和设备yyy共用一个主题/report/data发布消息,传统技术无法对它们进行区分。
而本申请提出把识别信息引入到主题中,如图4所示,识别信息为xxx的设备向主题/report/data/xxx发布消息,识别信息为yyy的设备向主题/report/data/yyy发布消息,也就是每个设备都向一个独立的主题发布消息。进而使得有多少个设备,就要有多少个对应的独立的主题。
而引入识别信息后,设备只能发布自己识别信息的主题;如识别信息为xxx的设备只能发布主题为/report/data/xxx的消息,不能发布主题为/report/data/yyy的消息,而识别信息为yyy的设备之只能发布主题为/report/data/yyy的消息。
在一个具体的实施例中,识别信息可以包括设备ID,也即当前发布消息所述的发布客户端的设备ID。具体地,MQTT标准中,主题是字符串,而本申请规定发布消息的主题必须符合预定义的格式(即预设格式),比如/report/data/xxx,其中xxx就是设备ID,进而实现权限管理。
此外,服务器会检查所有消息的主题,对于不符合预设格式(例如,/report/data/xxx)的认定为非法消息,只有符合的消息才会被推送,进而被数据存储服务存储起来。
在一个具体的实施例中,基于用户角色确认发布客户端具备发布权限的步骤包括:
在获取到的发布客户端的用户角色为设备时,确定发布客户端具备发布权限;
检测发布消息的主题是否符合预设格式的步骤包括:
确定主题中包含设备ID、且查找到设备ID的记录时,确认发布消息的主题符合预设格式;
若基于用户角色确认发布客户端具备发布权限,则检测发布消息的主题是否符合预设格式的步骤之后,还包括步骤:
在检测的结果为否时,丢弃发布消息;
在连续多次检测到不合法事件时,断开与发布客户端的连接;不合法事件为具备发布权限的发布客户端发送的发布消息不符合预设格式。
具体而言,从设备(即发布客户端)侧而言,设备发布主题/report/data/xxx消息时,MQTT服务器会验证主题中的xxx和登录时的设备ID是否相同。进一步的,设备的主题必须符合预定义的格式,比如/report/data/xxx,其中xxx可以是设备ID。
本申请中发布消息的流程可以包括:客户端登录,服务器记录它的用户角色,如果角色为设备则记录下它的ID。客户端发布消息,服务器收到消息后,如果主题格式不合法,会抛弃该消息,如果客户端频繁发送不合法的消息,服务器会断开客户的连接。
上述消息处理方法中,本申请提出基于用户角色进行客户端(例如,发布客户端或订阅客户端)的权限管理,同时检测发布消息的主题是否符合预设格式,仅在符合格式时推送相应的发布消息。具体的,基于用户角色可以实现粗粒度的权限管理,进一步的,通过对消息主题的格式限定,例如,主题包含识别信息,使得每个发布客户端都向一个独立的主题发布消息,进而能够区分发布客户端的身份,实现基于识别信息和主题进行客户端的权限管理。以上,本申请能够提高物联网系统的安全性,确保MQTT消息不会被恶意窃取和伪造。
在一个实施例中,如图5所示,提供了一种消息处理方法,以该方法应用于图2中的服务器为例进行说明,包括以下步骤:
步骤S502,接收到发布客户端发送的发布消息时,获取发布客户端的用户角色;
步骤S504,若基于用户角色确认发布客户端具备发布权限,则检测发布消息的主题是否符合预设格式;预设格式包括主题包含识别信息;在检测的结果为是时,推送发布消息。
步骤S506,接收到订阅客户端发送的订阅消息时,获取订阅客户端的用户角色;
步骤S508,若基于用户角色确认订阅客户端具备订阅权限,则确定订阅客户端针对订阅消息的主题的订阅。
在其中一个实施例中,用户角色为根据IoT的业务逻辑分类得到;识别信息包括设备ID;发布消息包含发布客户端的上报数据;
发布消息用于指示订阅客户端根据设备ID对上报数据进行分类存储。
在其中一个实施例中,用户角色包括数据存储服务;
基于用户角色确认订阅客户端具备订阅权限的步骤包括:
在获取到的订阅客户端的用户角色为数据存储服务时,确定订阅客户端具备订阅权限。
具体而言,本申请中订阅消息的流程可以包括:客户端登录,服务器记录它的用户角色,如果角色为设备则记录下它的ID。客户端订阅消息,服务器根据它的角色和设备ID判断它是否有权限订阅消息,是否有权限订阅该主题上的消息,如果有权限则允许订阅该主题。
在设备登录到MQTT服务时,就可确定设备的ID,然后就以此来判断它是否有权限在某个主题上发布消息或订阅某个主题上的消息。
其中,上报的数据可以是温度监控器上报的温度;订阅客户端在收到上报的温度时,把它们存储到数据库中。在一个具体的示例中,数据存储服务可以订阅全部设备的数据,然后根据主题中的设备ID,按设备ID分类存储数据。
上述消息处理方法中,利用用户角色、设备ID和主题三者互相配合,实现MQTT的权限管理。本申请提出基于用户角色进行客户端(例如,发布客户端或订阅客户端)的权限管理,同时检测发布消息的主题是否符合预设格式,仅在符合格式时推送相应的发布消息。具体的,基于用户角色可以实现粗粒度的权限管理,进一步的,通过对消息主题的格式限定,例如,主题包含识别信息,使得每个发布客户端都向一个独立的主题发布消息,进而能够区分发布客户端的身份,实现基于识别信息和主题进行客户端的权限管理。以上,本申请能够提高物联网系统的安全性,确保MQTT消息不会被恶意窃取和伪造。
在一个实施例中,提供了一种消息发布方法,以该方法应用于图2中的发布客户端(即设备侧)为例进行说明,包括步骤:
向服务器发送发布消息;发布消息用于指示服务器获取本发布客户端的用户角色,且在基于用户角色确认本发布客户端具备发布权限时,检测发布消息的主题是否符合预设格式,并在检测的结果为是时,推送发布消息;其中,预设格式包括主题包含识别信息。
在其中一个实施例中,用户角色包括设备;识别信息包括设备ID;
向服务器发送发布消息的步骤之前,还包括步骤:
在登录服务器时,向服务器传输设备信息;设备信息包括设备密码和设备ID;设备信息用于指示服务器在确定本发布客户端的用户角色为设备时,验证设备信息,并在验证的结果为通过时,记录设备ID。
需要说明的是,本实施例中发布客户端(即设备)与MQTT的具体交互过程,可以参阅前文所述,此处不再赘述。
在一个实施例中,提供了一种消息订阅方法,以该方法应用于图2中的订阅客户端(即数据存储服务侧)为例进行说明,包括步骤:
接收服务器推送的发布消息;发布消息由发布客户端发送给服务器的发布消息,经服务器获取发布客户端的用户角色,且在基于用户角色确认发布客户端具备发布权限时,检测发布消息的主题是否符合预设格式,并在检测的结果为是时推送的;其中,预设格式包括主题包含识别信息。
在其中一个实施例中,用户角色为根据IoT的业务逻辑分类得到;识别信息包括设备ID;发布消息包含发布客户端的上报数据;
还包括步骤:
根据设备ID对上报数据进行分类存储。
在其中一个实施例中,还包括步骤:
向服务器发送订阅消息;订阅消息用于指示服务器获取本订阅客户端的用户角色,并在基于用户角色确认本订阅客户端具备订阅权限时,确定本订阅客户端针对订阅消息的主题的订阅。
需要说明的是,本实施例中订阅客户端(即数据存储服务)与MQTT的具体交互过程,可以参阅前文所述,此处不再赘述。
应该理解的是,虽然图2-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图6所示,提供了一种消息处理装置,包括:
角色获取模块610,用于接收到发布客户端发送的发布消息时,获取发布客户端的用户角色;
格式检测模块620,用于若基于用户角色确认发布客户端具备发布权限,则检测发布消息的主题是否符合预设格式;预设格式包括主题包含识别信息;
消息推送模块630,用于在检测的结果为是时,推送发布消息。
关于消息处理装置的具体限定可以参见上文中对于消息处理方法的限定,在此不再赘述。上述消息处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种消息发布装置,包括:
消息发布模块,用于向服务器发送发布消息;发布消息用于指示服务器获取本发布客户端的用户角色,且在基于用户角色确认本发布客户端具备发布权限时,检测发布消息的主题是否符合预设格式,并在检测的结果为是时,推送发布消息;其中,预设格式包括主题包含识别信息。
关于消息发布装置的具体限定可以参见上文中对于消息发布方法的限定,在此不再赘述。上述消息处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种消息订阅装置,包括:
消息接收模块,用于接收服务器推送的发布消息;发布消息由发布客户端发送给服务器的发布消息,经服务器获取发布客户端的用户角色,且在基于用户角色确认发布客户端具备发布权限时,检测发布消息的主题是否符合预设格式,并在检测的结果为是时推送的;其中,预设格式包括主题包含识别信息。
关于消息订阅装置的具体限定可以参见上文中对于消息订阅方法的限定,在此不再赘述。上述消息处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,如图4所示,提供了一种物联网系统,包括发布客户端、订阅客户端和服务器;服务器分别连接发布客户端、订阅客户端;
服务器用于执行上述任一项消息处理方法的步骤;
发布客户端用于执行上述任一项消息发布方法的步骤;
订阅客户端用于执行上述任一项消息订阅方法的步骤。
在一个具体的实施例中,服务器为MQTT服务器;发布客户端为温度监控器;订阅客户端为数据存储服务器。
具体而言,物联网系统可以为图4所示的温度监控系统。在这个系统中,可以把MQTT的用户角色分成两类:①设备。设备可以是温度监控器;温度监控器定时向MQTT服务发布消息,以上报当前位置的温度。②数据存储服务。数据存储服务注册MQTT服务中上报温度的主题,在收到上报的温度时,把上报的温度存储到数据库中。
进一步的,本申请提出可以根据它们的角色,明确的定义它们的权限:①设备:可发布消息,但不能订阅消息。②数据存储服务:可订阅消息,但不能发布消息。
基于用户角色可以实现粗粒度的权限管理,但是设备xxx仍然可以冒充设备yyy发布一个消息。如果共用一个主题/report/data发布消息,就没办法对设备进行区分,本申请提出把设备ID引入到主题中:设备ID为xxx的设备向主题/report/data/xxx发布消息,设备ID为yyy的设备向主题/report/data/yyy发布消息,也就是每个设备都向一个独立的主题发布消息。
在设备登录到MQTT服务时,可确定设备的ID,然后就以此来判断它是否有权限在某个主题上发布消息或订阅某个主题上的消息。
具体地,引入设备ID后,设备只能发布自己设备ID的主题,如设备ID为xxx的设备只能发布主题为/report/data/xxx的消息,不能发布主题为/report/data/yyy的消息,而设备ID为yyy的设备之只能发布主题为/report/data/yyy的消息;而数据存储服务可以订阅全部设备的数据,然后根据主题中的设备ID,按设备ID分类存储数据。
基于本申请物联网系统的发布消息的流程可以如下:
1.客户端登录,服务器记录它的用户角色,如果角色为设备则记录下它的ID。
2.客户端发布消息,服务器根据它的角色和设备ID判断它是否有权限发布消息,是否有权限在该主题上发布消息,如果有权限则允许发布该消息。
基于本申请物联网系统的订阅消息的流程可以如下:
1.客户端登录,服务器记录它的用户角色,如果角色为设备则记录下它的ID。
2.客户端订阅消息,服务器根据它的角色和设备ID判断它是否有权限订阅消息,是否有权限订阅该主题上的消息,如果有权限则允许订阅该主题。
在一个实施例中,提供了一种服务器,其内部结构图可以如图7所示。该服务器包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该服务器的处理器用于提供计算和控制能力。该服务器的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该服务器的数据库用于存储用户角色、设备ID等数据。该服务器的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种消息处理方法。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一项方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线式动态随机存储器(Rambus DRAM,简称RDRAM)、以及接口动态随机存储器(DRDRAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (11)
1.一种消息处理方法,其特征在于,所述方法包括步骤:
接收到发布客户端发送的发布消息时,获取所述发布客户端的用户角色;所述用户角色为根据IoT的业务逻辑分类得到;所述用户角色包括设备;
若基于所述用户角色确认所述发布客户端具备发布权限,则检测所述发布消息的主题是否符合预设格式;所述预设格式包括所述主题包含识别信息;
在所述检测的结果为是时,推送所述发布消息;
所述方法还包括步骤:
接收到订阅客户端发送的订阅消息时,获取所述订阅客户端的所述用户角色;所述用户角色包括数据存储服务;
若基于所述用户角色确认所述订阅客户端具备订阅权限,则确定所述订阅客户端针对所述订阅消息的主题的订阅。
2.根据权利要求1所述的消息处理方法,其特征在于,所述识别信息包括设备ID;所述发布消息包含所述发布客户端的上报数据;
所述发布消息用于指示订阅客户端根据所述设备ID对所述上报数据进行分类存储。
3.根据权利要求1或2所述的消息处理方法,其特征在于,基于所述用户角色确认所述订阅客户端具备订阅权限的步骤包括:
在获取到的所述订阅客户端的用户角色为数据存储服务时,确定所述订阅客户端具备所述订阅权限。
4.根据权利要求1或2所述的消息处理方法,其特征在于,在接收到发布客户端发送的发布消息时,获取所述发布客户端的用户角色的步骤之前,还包括步骤:
在所述发布客户端登录时,记录所述发布客户端的用户角色,并获取所述发布客户端的设备信息;所述设备信息包括设备密码和设备ID;
若确定所述发布客户端的用户角色为设备,则验证所述设备信息,并在所述验证的结果为通过时,记录所述设备ID。
5.根据权利要求4所述的消息处理方法,其特征在于,基于所述用户角色确认所述发布客户端具备发布权限的步骤包括:
在获取到的所述发布客户端的用户角色为设备时,确定所述发布客户端具备所述发布权限;
检测所述发布消息的主题是否符合预设格式的步骤包括:
确定所述主题中包含设备ID、且查找到所述设备ID的记录时,确认所述发布消息的主题符合所述预设格式;
若基于所述用户角色确认所述发布客户端具备发布权限,则检测所述发布消息的主题是否符合预设格式的步骤之后,还包括步骤:
在所述检测的结果为否时,丢弃所述发布消息;
在连续多次检测到不合法事件时,断开与所述发布客户端的连接;所述不合法事件为具备发布权限的发布客户端发送的发布消息不符合所述预设格式。
6.一种消息发布方法,其特征在于,包括步骤:
向服务器发送发布消息;所述发布消息用于指示所述服务器获取本发布客户端的用户角色,且在基于所述用户角色确认本发布客户端具备发布权限时,检测所述发布消息的主题是否符合预设格式,并在所述检测的结果为是时,推送所述发布消息;其中,所述预设格式包括所述主题包含识别信息;所述用户角色为根据IoT的业务逻辑分类得到;所述用户角色包括设备。
7.根据权利要求6所述的消息发布方法,其特征在于,所述识别信息包括设备ID;
向服务器发送发布消息的步骤之前,还包括步骤:
在登录所述服务器时,向所述服务器传输设备信息;所述设备信息包括设备密码和所述设备ID;所述设备信息用于指示所述服务器在确定本发布客户端的用户角色为设备时,验证所述设备信息,并在所述验证的结果为通过时,记录所述设备ID。
8.一种消息处理装置,其特征在于,包括:
角色获取模块,用于接收到发布客户端发送的发布消息时,获取所述发布客户端的用户角色;所述用户角色为根据IoT的业务逻辑分类得到;所述用户角色包括设备;所述角色获取模块,还用于接收到订阅客户端发送的订阅消息时,获取所述订阅客户端的所述用户角色;所述用户角色包括数据存储服务;
格式检测模块,用于若基于所述用户角色确认所述发布客户端具备发布权限,则检测所述发布消息的主题是否符合预设格式;所述预设格式包括所述主题包含识别信息;所述格式检测模块,还用于若基于所述用户角色确认所述订阅客户端具备订阅权限,则确定所述订阅客户端针对所述订阅消息的主题的订阅;
消息推送模块,用于在所述检测的结果为是时,推送所述发布消息。
9.一种消息发布装置,其特征在于,包括:
消息发布模块,用于向服务器发送发布消息;所述发布消息用于指示所述服务器获取本发布客户端的用户角色,且在基于所述用户角色确认本发布客户端具备发布权限时,检测所述发布消息的主题是否符合预设格式,并在所述检测的结果为是时,推送所述发布消息;其中,所述预设格式包括所述主题包含识别信息;所述用户角色为根据IoT的业务逻辑分类得到;所述用户角色包括设备。
10.一种物联网系统,其特征在于,包括发布客户端、订阅客户端和服务器;所述服务器分别连接所述发布客户端、所述订阅客户端;
所述服务器用于执行权利要求1至5中任一项所述方法的步骤;
所述发布客户端用于执行权利要求6或7所述方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010139643.XA CN111371889B (zh) | 2020-03-03 | 2020-03-03 | 消息处理方法、装置、物联网系统和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010139643.XA CN111371889B (zh) | 2020-03-03 | 2020-03-03 | 消息处理方法、装置、物联网系统和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111371889A CN111371889A (zh) | 2020-07-03 |
CN111371889B true CN111371889B (zh) | 2023-03-31 |
Family
ID=71212471
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010139643.XA Active CN111371889B (zh) | 2020-03-03 | 2020-03-03 | 消息处理方法、装置、物联网系统和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111371889B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112287643B (zh) * | 2020-09-01 | 2023-01-24 | 上海泛微软件有限公司 | 消息监听方法、装置、设备及计算机可读存储介质 |
CN112612985B (zh) * | 2020-12-24 | 2024-07-23 | 广州致远电子股份有限公司 | 基于WebSocket的多用户和多类型消息的推送系统及方法 |
CN113596140B (zh) * | 2021-07-26 | 2023-09-22 | 深圳Tcl新技术有限公司 | 基于mqtt协议的信息发布方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109428922A (zh) * | 2017-08-29 | 2019-03-05 | 华为技术有限公司 | 一种订阅发布方法及服务器 |
WO2019141111A1 (zh) * | 2018-01-16 | 2019-07-25 | 华为技术有限公司 | 通信方法和通信装置 |
US10447683B1 (en) * | 2016-11-17 | 2019-10-15 | Amazon Technologies, Inc. | Zero-touch provisioning of IOT devices with multi-factor authentication |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0621409D0 (en) * | 2006-10-27 | 2006-12-06 | Ibm | Access control within a publish/subscribe system |
WO2017094774A1 (ja) * | 2015-12-04 | 2017-06-08 | 株式会社リコー | 制御システム、通信制御方法、及びプログラム |
JP6741853B2 (ja) * | 2016-07-14 | 2020-08-19 | コンヴィーダ ワイヤレス, エルエルシー | サブスクリプションおよび通知サービス |
US10645181B2 (en) * | 2016-12-12 | 2020-05-05 | Sap Se | Meta broker for publish-subscribe-based messaging |
CN106657130B (zh) * | 2017-01-09 | 2020-05-19 | 上海浦东软件园汇智软件发展有限公司 | 一种基于mqtt的访问认证的方法及设备 |
CN107332787A (zh) * | 2017-06-29 | 2017-11-07 | 北京奇艺世纪科技有限公司 | 一种消息分发方法和装置 |
CN110460638A (zh) * | 2019-07-11 | 2019-11-15 | 深圳职业技术学院 | 消息推送方法及装置 |
-
2020
- 2020-03-03 CN CN202010139643.XA patent/CN111371889B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10447683B1 (en) * | 2016-11-17 | 2019-10-15 | Amazon Technologies, Inc. | Zero-touch provisioning of IOT devices with multi-factor authentication |
CN109428922A (zh) * | 2017-08-29 | 2019-03-05 | 华为技术有限公司 | 一种订阅发布方法及服务器 |
WO2019141111A1 (zh) * | 2018-01-16 | 2019-07-25 | 华为技术有限公司 | 通信方法和通信装置 |
Non-Patent Citations (1)
Title |
---|
基于XMPP协议的Android消息推送设计与实现;汪海占等;《科技广场》;20150228(第02期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111371889A (zh) | 2020-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10091230B1 (en) | Aggregating identity data from multiple sources for user controlled distribution to trusted risk engines | |
CN111371889B (zh) | 消息处理方法、装置、物联网系统和存储介质 | |
CN108923908B (zh) | 授权处理方法、装置、设备及存储介质 | |
US10476758B2 (en) | Systems and methods for providing notifications of changes in a cloud-based file system | |
US9152808B1 (en) | Adapting decoy data present in a network | |
CN110995695B (zh) | 异常账户检测方法及装置、电子设备及存储介质 | |
US20160234015A1 (en) | Method and system for providing a secure secrets proxy and distributing secrets | |
CN109194671B (zh) | 一种异常访问行为的识别方法及服务器 | |
US20210126769A1 (en) | Integration of blockchain-enabled readers with blockchain network using machine-to-machine communication protocol | |
CN113271296B (zh) | 一种登录权限管理的方法和装置 | |
CN111880919B (zh) | 数据调度方法、系统和计算机设备 | |
CN108289074B (zh) | 用户账号登录方法及装置 | |
CN111666539B (zh) | 一种房地产资源管理方法、装置、服务器及存储介质 | |
CN111294337B (zh) | 一种基于令牌的鉴权方法及装置 | |
US9350551B2 (en) | Validity determination method and validity determination apparatus | |
CN113360868A (zh) | 应用程序登录方法、装置、计算机设备和存储介质 | |
CN113225351A (zh) | 一种请求处理方法、装置、存储介质及电子设备 | |
CN111966967A (zh) | 一种基于区块链技术和cdn的版权存证方法及系统 | |
CN114866258A (zh) | 一种访问关系的建立方法、装置、电子设备及存储介质 | |
CN110910141A (zh) | 交易处理方法、系统、装置、设备及计算机可读存储介质 | |
CN113259429A (zh) | 会话保持管控方法、装置、计算机设备及介质 | |
CN111327680B (zh) | 认证数据同步方法、装置、系统、计算机设备和存储介质 | |
CN110324426B (zh) | 一种数据获取方法、装置和系统 | |
US20230244797A1 (en) | Data processing method and apparatus, electronic device, and medium | |
CN111092958A (zh) | 一种节点接入方法、装置、系统及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 510000 room 306, 3rd floor, 43 Sicheng Road, software park, Tianhe District, Guangzhou City, Guangdong Province Applicant after: GUANGZHOU ZHIYUAN ELECTRONICS Co.,Ltd. Address before: 510665 room 517, 1023 Gaopu Road, Tianhe Software Park, Tianhe District, Guangzhou City, Guangdong Province Applicant before: GUANGZHOU ZHIYUAN ELECTRONICS Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |