CN110290176B - 基于mqtt的点对点信息推送方法 - Google Patents
基于mqtt的点对点信息推送方法 Download PDFInfo
- Publication number
- CN110290176B CN110290176B CN201910453871.1A CN201910453871A CN110290176B CN 110290176 B CN110290176 B CN 110290176B CN 201910453871 A CN201910453871 A CN 201910453871A CN 110290176 B CN110290176 B CN 110290176B
- Authority
- CN
- China
- Prior art keywords
- user
- topic
- private
- server
- point
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- 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
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
-
- 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/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/101—Access control lists [ACL]
-
- 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/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- 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
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/26—Special purpose or proprietary protocols or architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Telephonic Communication Services (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种基于MQTT的点对点信息推送方法,属于信息交换技术领域。首先通过基于MQTT协议的emqttd服务器进行用户鉴权,业务系统再进行用户toptic与订阅用户账户的订阅控制,最后根据获取的需要推送的信息,生成需要推送的topic;业务系统将需要推送的消息,推送到emqttd服务器中生成的topic;emqttd服务器再将该消息推送给订阅用户,实现信息的推送。本发明解决了现有技术中存在的连接数、网络带宽达到瓶颈后的服务器不可用以及用户鉴权、订阅访问控制不能灵活配置的问题,实现了针对用户的安全可用的点对点信息推送的目的。
Description
技术领域
本发明属于信息交换技术领域,特别是涉及一种基于MQTT的点对点信息推送方法。
背景技术
现有的点对点推送都是客户端直接向服务端订阅,且通过服务端自行推送,这样的订阅会消耗服务端的服务器连接数且在连接数、网络带宽等达到瓶颈后,将会引起服务端整个服务的不可用;现有的emqttd性能虽然较强,能支持单机百万级的连接和推送,而且和业务系统解耦,不会影响业务系统,但其主要针对公共的共享信息推送具有较大优势,对私有信息的点对点推送的支持并不理想,其用户鉴权及订阅访问控制不能灵活配置。
因此,亟需一种基于MQTT的点对点信息推送方法,解决现有技术中存在的连接数、网络带宽达到瓶颈后的服务器不可用以及用户鉴权、订阅访问控制不能灵活配置的问题,实现了针对用户的安全可用的点对点信息推送的目的。
发明内容
本发明的目的在于提供一种基于MQTT的点对点信息推送方法,解决现有技术中存在的连接数、网络带宽达到瓶颈后的服务器不可用以及用户鉴权、订阅访问控制不能灵活配置的问题,实现了针对用户的安全可用的点对点信息推送的目的。
本发明所采用的技术方案是,提供一种基于MQTT的点对点信息推送方法,包括以下步骤:
S1,业务系统基于基础协议MQTT,通过emqttd服务器的认证插件进行用户鉴权;
S2,进行用户toptic与订阅用户账户的订阅控制,判断所述订阅用户是否具备订阅topic的权限;所述用户topic由推送信息前缀和用户唯一标识构成;所述订阅用户为只能订阅emqttd服务器消息的用户;
S3,业务系统通过所述S1和S2的判断获取需要推送的信息,并生成需要推送的topic;业务系统将需要推送的消息,推送到emqttd服务器中生成的topic;所述emqttd服务器再将该消息推送给订阅用户,实现信息的推送。
进一步地,所述S1的用户鉴权过程是通过AUTH用户密码认证判断用户名是否为私有用户,具体判断规则及过程为:
若判断用户名不是私有用户,则进行公共用户的登录认证:若公共用户通过用户名、密码认证失败,则本次登录失败;若公共用户通过用户名、密码认证成功,则本次登录成功;所述公共用户是公共的共享信息推送的目标群体;
若判断用户名是私有用户名,则进行客户端传参和服务端签名及秘钥校验:若校验成功则私有用户认证成功,本次登录成功;否则,本次登录失败;所述客户端传参和服务端签名及秘钥校验是按照用户账户、秘钥对、随机数加散列签名的方式进行。
进一步地,所述S2订阅控制的过程是通过ACL访问控制认证判断用户名是否为私有用户,具体判断规则及过程为:
若判断用户名不是私有用户,则识别为公共用户并标记为订阅失败;所述公共用户不能进行私有订阅;
若判断用户名是私有用户,则验证用户订阅的topic是否为用户自身的topic:校验成功则私有用户订阅自身个人topic成功;否则,私有用户订阅自身个人topic失败。
本发明的有益效果是:
1.本发明通过指定推送用户特定的topic实现用户数据分离,进行用户数据的点对点推送。
2.本发明通过用户自定义登录鉴权,可结合业务系统中的用户数据,对个人用户进行识别。
3.本发明通过指定用户只能订阅对应topic的订阅控制,来保护用户数据的订阅安全。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是个人用户登录流程图。
图2是个人用户订阅流程图。
图3是点对点信息推送流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本方案主要采用了以下技术组合,实现基于MQTT的安全的点对点信息推送方法:
1.基础协议—MQTT:
MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:
1)使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;
2)对负载内容屏蔽的消息传输;
3)使用TCP/IP提供网络连接;
4)有三种消息发布服务质量:
“至多一次”,消息发布完全依赖底层TCP/IP网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
“至少一次”,确保消息到达,但消息重复可能会发生。
“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
5)小型传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量;
6)使用Last Will和Testament特性通知有关各方客户端异常中断的机制。
2.推送中间件--emqttd:
emqttd是基于Erlang/OTP语言平台开发,支持大规模连接和分布式集群,发布订阅模式的开源MQTT消息服务器,为大规模客户端连接(100万+)的移动推送、移动消息、物联网、车联网、智能硬件等应用,提供一个完全开放源码、安装部署简便、企业级稳定可靠、可弹性扩展、易于定制开发的MQTT消息服务器。
3.点对点推送实现策略:
①用户鉴权:通过emqttd的http认证插件进行用户鉴权实现,策略为通过固定用户名识别为需要进行点对点推送的用户(即后文中所讲的“特定用户”;“需要进行点对点推送的用户”可以理解为由业务系统给定的需要进行点对点推送的用户群体),用户密码为系统中的用户账户名、随机数以及密码的散列算法组合,用户客户端ID传入值只能为系统中的用户账户名;不按以上规则进行传参的参数,会校验失败;
②订阅控制:用户只能订阅客户端ID(用户名)对应用户名的私有topic(这里的私有topic可以理解为每类业务数据根据每个用户的用户名生成的topic,即下文提到的topic或专用topic);
③点对点推送:推送到对应功能前缀加对应用户账户名组合的私有topic;给特定用户(这里的特定用户是由业务系统给定的需要进行点对点推送的用户群体)分配专用的topic,专用topic只有对应的用户能订阅;将emqttd用户认证同业务系统的用户模块数据进行对接,实现动态的用户订阅认证;
认证:emqttd http认证插件;推送:服务端针对专用topic进行点对点数据推送;
用户认证安全:实现并启用emqttd http认证插件,采用用户账户、秘钥对、随机数加散列签名的方式进行客户端传参和服务端签名及秘钥校验;
用户topic订阅安全:用户订阅时,会进行topic和订阅用户账户的匹配校验,不匹配则拒绝;
个人用户登录流程:(这里相当于前述的“用户鉴权”)
本方案实现并启用emqttd自定义http认证插件,将订阅用户和服务端业务系统中的用户进行结合,采用用户账户、秘钥对、随机数加散列签名的方式进行客户端传参和服务端签名及秘钥校验,实现动态的个人用户登录认证;
具体登录(即AUTH用户名及密码认证)流程如图1所示,判断用户名是否为私有用户:
若判断用户名不是私有用户,则进行公共用户的登录认证;若公共用户通过用户名、密码认证失败,则本次登录失败;若公共用户通过用户名、密码认证成功,则本次登录成功;
若判断用户名是私有用户,则按照用户账户、秘钥对、随机数加散列签名的方式进行客户端传参和服务端签名及秘钥校验,校验成功则私有用户认证成功,本次登录成功;若验证私有用户的登录参数及秘钥签名失败,则私有用户认证失败,本次登录失败。
个人用户订阅流程:(相当于前述的“订阅控制”)
用户订阅时,会进行topic和订阅用户账户的匹配校验,将推送的个人信息和关联的订阅用户进行绑定,使对应的个人用户,只能订阅自身的个人topic信息,既利用了emqttd的高效推送性能,也保障了用户个人信息的安全,且通过服务端业务系统提供的校验接口,可支持将个人用户的topic和对应用户进行动态绑定;
具体个人用户订阅(即ACL访问控制)流程如图2所示,判断用户名是否为私有用户:
若判断用户名不是私有用户,则识别为公共用户并标记为订阅失败(公共用户不能进行私有订阅);
若判断用户名是私有用户,则校验该用户订阅的topic是否是该用户自身的topic(私有topic中包含有私有用户的唯一标识),校验成功则私有用户订阅自身个人topic成功;若验证不是该用户自身的topic,则私有用户订阅该topic失败。
实施例
1.用户鉴权:通过emqttd的http认证插件进行用户鉴权实现,策略为通过固定用户名识别为需要进行点对点推送的用户,用户密码为系统中的用户账户名、随机数以及密码的散列算法组合,用户客户端ID传入值只能为密码中对应的用户名;不按以上规则进行传参的参数,会校验失败;
2.订阅控制:用户只能订阅客户端ID(用户名)对应用户名的私有topic;
3.点对点推送:当业务系统需要将某一用户(如用户A)的私有信息(如用户A的资产信息)推送给用户A自己时,首先会将用户A的资产信息推送到emqttd服务器对应功能前缀加对应用户账户名组合的私有topic上,当且仅当用户A订阅成功用户A对应的该私有topic时,用户A会收到由业务服务器发起的用户A自己的私有信息推送。
业务服务器需要推送对应的私有消息给用户时,具体实现方式如附图3。得到需要推送的信息;根据得到的需要推送的信息,获取对应的消息类型(如需要向用户推送用户资产信息时,消息类型即为用户资产信息),得到对应类型的topic前缀,此时topic=topic前缀+用户唯一标识(如:用户ID);业务服务器将需要推送的消息,推送到emqttd服务器生成的topic;emqttd服务器再将该消息推送给成功订阅了S2生成的topic的用户;推送成功后,订阅了该topic的用户即可收到该消息。以上即为一个完整的点对点私有消息推送流程。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (1)
1.一种基于MQTT的点对点信息推送方法,其特征在于,包括以下步骤:
S1,业务系统基于基础协议MQTT,通过emqttd服务器的认证插件进行用户鉴权;
所述用户鉴权过程是通过AUTH用户密码认证判断用户名是否为私有用户,具体判断规则及过程为:
若判断用户名不是私有用户,则进行公共用户的登录认证:若公共用户通过用户名、密码认证失败,则本次登录失败;若公共用户通过用户名、密码认证成功,则本次登录成功;所述公共用户是公共的共享信息推送的目标群体;
若判断用户名是私有用户名,则进行客户端传参和服务端签名及秘钥校验:若校验成功则私有用户认证成功,本次登录成功;否则,本次登录失败;所述客户端传参和服务端签名及秘钥校验是按照用户账户、秘钥对、随机数加散列签名的方式进行;
S2,进行用户toptic与订阅用户账户的订阅控制,判断所述订阅用户是否具备订阅topic的权限;所述用户topic由推送信息前缀和用户唯一标识构成;所述订阅用户为只能订阅emqttd服务器消息的用户;
所述订阅控制的过程是通过ACL访问控制认证判断用户名是否为私有用户,具体判断规则及过程为:
若判断用户名不是私有用户,则识别为公共用户并标记为订阅失败;所述公共用户不能进行私有订阅;
若判断用户名是私有用户,则验证用户订阅的topic是否为用户自身的topic:校验成功则私有用户订阅自身个人topic成功;否则,私有用户订阅自身个人topic失败;
S3,业务系统通过所述S1和S2的判断获取需要推送的信息,并生成需要推送的topic;
业务系统将需要推送的消息,推送到emqttd服务器中生成的topic;所述emqttd服务器再将该消息推送给订阅用户,实现信息的推送。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910453871.1A CN110290176B (zh) | 2019-05-28 | 2019-05-28 | 基于mqtt的点对点信息推送方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910453871.1A CN110290176B (zh) | 2019-05-28 | 2019-05-28 | 基于mqtt的点对点信息推送方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110290176A CN110290176A (zh) | 2019-09-27 |
CN110290176B true CN110290176B (zh) | 2020-07-28 |
Family
ID=68002854
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910453871.1A Expired - Fee Related CN110290176B (zh) | 2019-05-28 | 2019-05-28 | 基于mqtt的点对点信息推送方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110290176B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110740195B (zh) * | 2019-11-20 | 2022-05-20 | 山东鲁能软件技术有限公司 | 一种基于消息引擎的分布式系统数据同步方法及系统 |
CN112039882B (zh) * | 2020-08-31 | 2023-04-07 | 广州鲁邦通物联网科技股份有限公司 | 一种消息传输处理方法、系统、设备及存储介质 |
CN115102749B (zh) * | 2022-06-16 | 2024-03-19 | 上海商汤阡誓科技有限公司 | 一种资源交互方法、装置、设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109788003A (zh) * | 2019-03-26 | 2019-05-21 | 华南理工大学 | 一种基于mqtt协议的智能公厕设备交互方法及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105763426B (zh) * | 2016-04-12 | 2018-04-06 | 北京理工大学 | 一种基于多协议即时通信系统的物联网业务处理系统 |
TWI659659B (zh) * | 2017-09-06 | 2019-05-11 | 國立臺灣大學 | 車輛資訊及環境監測複合式車載系統及其資料處理及傳輸方法 |
CN109768885B (zh) * | 2018-12-28 | 2022-04-15 | 厦门熵基生物识别信息技术有限公司 | 一种支持多协议分布式高并发通信服务端设备和通信方法 |
-
2019
- 2019-05-28 CN CN201910453871.1A patent/CN110290176B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109788003A (zh) * | 2019-03-26 | 2019-05-21 | 华南理工大学 | 一种基于mqtt协议的智能公厕设备交互方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110290176A (zh) | 2019-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106656959B (zh) | 访问请求调控方法和装置 | |
US7882245B2 (en) | Presence service access device, presence service system and method for publishing and acquiring presence information | |
CN101626369B (zh) | 一种单点登录方法、设备及系统 | |
CN110290176B (zh) | 基于mqtt的点对点信息推送方法 | |
US8495155B2 (en) | Enterprise management of public instant message communications | |
CN109474916B (zh) | 一种设备鉴权方法、装置以及机器可读介质 | |
CN111740989A (zh) | 一种面向区块链的物联网芯片轻量级数据加密方法 | |
CN103503408A (zh) | 用于提供访问凭证的系统和方法 | |
CN110958111A (zh) | 一种基于区块链的电力移动终端身份认证机制 | |
EP2404427B1 (en) | Method and apparatus for securing network communications | |
CN109088735B (zh) | 一种基于智能家居的安全认证方法 | |
CN112968963B (zh) | 基于WebSocket进行用户强制实时下线的方法 | |
CN112910861A (zh) | 基于群组认证和分段鉴权的电力物联网终端设备认证方法 | |
CN109150800A (zh) | 一种登录访问方法、系统和存储介质 | |
JP2006279636A (ja) | クライアント間通信ログの整合性保証管理システム | |
CN109714370A (zh) | 一种基于http协议端云安全通信的实现方法 | |
US8453229B2 (en) | Push type communications system | |
WO2011079650A1 (zh) | 即时通讯控制的实现方法和系统 | |
CN109150290B (zh) | 一种卫星轻量化数据传输保护方法及地面安全服务系统 | |
CN103428161A (zh) | 一种电话认证服务系统 | |
CN113259418B (zh) | 传输数据的方法、设备以及计算机可读存储介质 | |
CN102811369A (zh) | 在视频共享时进行安全认证方法及手持设备 | |
CN114338082A (zh) | 一种智能网关安全连接云平台方法和系统 | |
CN112153163B (zh) | 基于mqtt的安全通信方法及其系统 | |
CN100428748C (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20200728 |