一种云端MQTT访问权限控制方法与流程

文档序号:29305546发布日期:2022-03-19 16:32阅读:1185来源:国知局
一种云端MQTT访问权限控制方法与流程
一种云端mqtt访问权限控制方法
技术领域
1.本发明涉及iot(internet of things,物联网)设备技术领域,特别是涉及一种基于iot设备和客户端用户登录的云端mqtt(message queuing telemetry transport,消息队列遥测传输协议)访问权限控制方法。


背景技术:

2.物联网的核心是连接万物,通过交换并分析数据使得生活更舒适与便捷;不过,敏感数据泄露或者设备被非法控制的后果也将非常严重,实际情况当前业界也频发安全漏洞导致智能设备被非法控制的案例。究其本质,并不是物联网技术本身有缺陷,而是在物联网系统的设计中最基本的安全设计被工程师轻视了,才导致整个系统的崩塌。mqtt(message queuing telemetry transport,消息队列遥测传输协议)作为物联网普遍使用的连接协议,已经有基础的安全特性来保证物联网项目的顺利实施。
3.当前普遍的mqtt安全设计方案如下:
4.1)网络层:有条件可以通过拉专线或者使用vpn来连接设备与mqtt代理;
5.2)传输层:传输层使用tls加密是确保安全的一个好手段
6.3)应用层:使用客户标识(client identifier)以及用户名密码,在应用层验证设备。
7.其中,不涉及用户登录的应用层安全验证方案的当前典型的做法如下:
8.1)客户端使用初始的静态鉴权信息,从云端签发x.509证书
9.2)客户端使用x.509证书做传输层tls安全加密和接入鉴权
10.3)通过数字证书鉴权的客户端则允许接入
11.然而,这种基于数字证书接入鉴权的方案,不适用于需要用户登录的业务场景;而且数字证书的签发流程一般比较复杂,需要集成类似于openssl等证书签发服务,且性能消耗较大不适合与频繁更新。
12.目前,涉及用户登录的应用层安全验证方案的当前典型做法是(如图1所示):
13.1)客户端通过安全协议比如https协议从鉴权服务器做用户登录,鉴权服务器会给登录成功的客户端分配mqtt登录信息,对应登录信息会存储在鉴权服务器;
14.2)客户端登录mqtt时携带分配的登录信息;
15.3)mqtt中介调用鉴权模块,对客户端接入携带登录信息与鉴权服务器存储的信息做匹配,如果通过则允许接入。
16.然而,上述方法仍存在如下缺点:
17.1)数据库存储客户端登录信息匹配的方案,在分布式系统中,如果客户端连接的mqtt中介与数字证书签发不在同一个区域,需要复杂的数据同步来保证在实际连接的mqtt中介中有对应的登录信息。
18.2)mqtt连接访问权限与业务权限分离,一旦单个客户端信息泄漏,即可能发生非法的业务主题发布到mqtt中介并传播到系统中其他客户端,造成系统信令风暴。
19.3)没有很好的适用于同时有无用户登录(物联网设备)和有用户登录(手机app)场景的简单鉴权方案。


技术实现要素:

20.为克服上述现有技术存在的不足,本发明之一目的在于提供一种云端mqtt访问权限控制方法,以实现一种适用于无用户登录(一阶段)和用户登录(二阶段)两种场景的鉴权方案。
21.本发明之另一目的在于提供一种云端mqtt访问权限控制方法,实现便捷签发mqtt登录身份信息,一阶段和二阶段可以有不同的签发实体,并支持一处签发,随处可用。
22.本发明之再一目的在于提供一种云端mqtt访问权限控制方法,省去复杂的登录信息存储和跨地域同步流程,并支持mqtt登录身份信息短周期动态刷新。
23.本发明之又一目的在于提供一种云端mqtt访问权限控制方法,通过mqtt发布者发布消息权限精细控制(设备绑定和风险用户才能发布),避免非法发布的主题在系统传播,造成信令风暴。
24.为达上述目的,本发明提出一种云端mqtt访问权限控制方法,包括如下步骤:
25.步骤s1,在第一阶段,作为控制的客户端与iot设备分别接入云端以申请服务资源和mqtt动态登录信息,获得云端返回的连接token,以该连接token中的动态登录信息连接mqtt中介进行mqtt登录的校验;
26.步骤s2,在第二阶段,客户端通过登录云端的单点登录服务器获得单点登录服务器分配的动态登录token,以分配的动态登录token的mqtt动态登录信息连接mqtt中介,以及订阅和发布相关主题,由mqtt中介发布需要经由api鉴权服务的mqtt主题到api鉴权服务,鉴权通过的api经由云端的设备影子服务做数据镜像和下发,由设备影子服务发布api对应的mqtt主题到mqtt中介,iot设备以分配的一阶段动态鉴权身份信息连接mqtt中介,以及订阅和发布相关主题。
27.优选地,步骤s1进一步包括:
28.步骤s100,客户端向云端的云服务器发送接入请求,以申请服务资源和mqtt动态登录信息;
29.步骤s101,云服务器根据客户端的接入请求返回动态的连接token,以分配服务资源和mqtt动态登录信息;
30.步骤s102,iot设备接入云服务器申请服务资源和mqtt动态登录信息;
31.步骤s103,云服务器分配根据iot设备的接入请求返回动态的连接token,以分配服务资源和mqtt动态登录信息;
32.步骤s104,iot设备与客户端以分配的动态登录信息连接mqtt中介,并订阅和发布相关主题,在iot设备与客户端访问mqtt中介时由mqtt鉴权服务对相应的mqtt鉴权身份信息和主题的读写权限校验;
33.步骤s105,鉴权通过后,mqtt中介发送相应的主题内容到客户端/iot设备。
34.优选地,于步骤s102中,所述iot设备携带原始内部验证码以https方式接入云服务器申请服务资源和mqtt动态登录信息。
35.优选地,步骤s2进一步包括:
36.步骤s200,客户端登录云端的单点登录服务器,获取单点登录服务器分配二阶段的的mqtt动态登录token;
37.步骤s201,客户端以分配的二阶段的mqtt动态登录信息连接mqtt中介,订阅和发布相关主题,访问mqtt中介时由mqtt鉴权服务对鉴权身份信息和主题的读写权限校验。
38.步骤s202,iot设备以分配的一阶段mqtt动态登录信息连接mqtt中介,订阅和发布业务相关mqtt主题,访问mqtt中介时由mqtt鉴权服务对鉴权身份信息和主题的读写权限校验。
39.优选地,步骤s201进一步包括:
40.步骤s201a,客户端以分配的二阶段的mqtt动态登录信息连接mqtt中介,订阅相关主题;
41.步骤s201b,客户端以分配的二阶段的mqtt动态登录信息连接mqtt中介,发布相关主题以对iot设备控制,访问mqtt中介时由mqtt鉴权服务对鉴权身份信息和主题的读写权限校验;
42.步骤s201c,mqtt中介发布需要经由api鉴权服务的mqtt主题到云端的api鉴权服务,经api鉴权服务鉴权通过的api经由云端的设备影子服务做数据镜像和下发,由设备影子服务发布api对应的mqtt主题到mqtt中介后发布给iot设备。
43.优选地,所述客户端访问mqtt中介时由mqtt鉴权服务对鉴权身份信息和主题的读写权限校验。
44.优选地,于步骤s201a后,还包括如下步骤:
45.鉴权通过后,mqtt中介根据客户端订阅的主题发布对应的主题内容到客户端。
46.优选地,步骤s202进一步包括:
47.步骤s202a,iot设备以分配的一阶段的mqtt动态登录信息连接mqtt中介,订阅相关主题;
48.步骤s202b,客户端以分配的一阶段的mqtt动态登录信息连接mqtt中介,发布相关主题到客户端。
49.优选地,所述iot设备访问mqtt中介时由mqtt鉴权服务对鉴权身份信息和主题的读写权限校验
50.优选地,于步骤s202a后,还包括:
51.鉴权通过后,所述mqtt中介发送iot设备订阅的mqtt主题内容到iot设备。
52.与现有技术相比,本发明具有如下优点:
53.1.登录信息分布式发放和分布式校验,降低登录信息签发服务到验证服务的数据同步,尤其是在系统跨全球多个不同区域部署的场景;
54.2.数字证书和登录信息动态更新,单机或批量信息泄漏可快速隔离并自愈;
55.3.基于登录信息,精细化mqtt订阅和发布的权限管理,避免信令风暴扩散到iot设备。
附图说明
56.图1为本发明一种云端mqtt访问权限控制方法的步骤流程图;
57.图2为本发明具体实施例中api命令的设备绑定关系校验流程图;
58.图3为本发明实施例中一阶段登录信息分发及鉴权的流程示意图;
59.图4为本发明实施例中二阶段登录信息分发及鉴权的流程示意图
60.图5为本发明实施例中iot设备与客户端连接访问mqtt中介的流程图;
61.图6为本发明具体实施例中客户端/iot设备发布和订阅mqtt主题(topic)的验证流程图。
具体实施方式
62.以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
63.在介绍本发明之前,先说明本发明所用到的一些概念:
64.mqtt,即消息队列遥测传输,是一种基于发布/订阅范式的“轻量级”消息协议,由ibm发布;
65.mqtt中介(mqtt agent):mqtt消息发布者和订阅者之间的管理和中介,服务订阅关系管理,消息分发;
66.mqtt发布者:使用mqtt协议,向系统发布消息;
67.mqtt订阅者:使用mqtt协议,向系统订阅并接受相应的消息;
68.loc server:云平台中,负责内部服务资源分配并给设备和手机app发放一阶段数字证书/登录信息的服务;
69.用户单点登录服务器(sso server):云平台中,负责用户登录并发放给手机app发送二阶段数字证书/登录信息的服务;
70.mqtt接入鉴权服务(mqtt auth):配合mqtt中介,完成客户端接入用户名密码校验及主题读写权限检查;
71.设备影子服务(device shadow):云平台中,iot设备在云端的景象管理实体,完成设备状态同步,设备控制/配置指令缓存及下发;
72.api鉴权服务(api auth):云平台负责手机客户端/第三方服务访问iot设备的对外接口模块;
73.云id:整个云平台业务内部唯一标识一个设备,云id出厂时打印设备的产品标签上面;
74.设备内部识别码(dv):内部识别码配套云id,在整个云平台证明设备的合法身份;部识别码在整个生产/销售环节不允许被生产工人,销售人员获取;
75.设备登录码(td):设备登录码指具有访问权限和周期的组合密码,并且定时变换,设备需要使用该密码访问设备。
76.图1为本发明一种云端mqtt访问权限控制方法的步骤流程图。如图1所示,本发明一种云端mqtt访问权限控制方法,包括如下步骤:
77.步骤s1,在第一阶段,作为控制的客户端与iot设备分别接入云端申请服务资源和mqtt动态登录信息,获得云端返回的连接token,以该连接token中的动态登录信息连接mqtt中介进行mqtt登录的校验。
78.具体地,步骤s1进一步包括:
79.步骤s100,客户端向云端的云服务器(loc server)发送接入请求(resource request),以申请服务资源和mqtt动态登录信息。
80.在本发明具体实施例中,客户端可以是手机app,对于作为客户端的手机app,以https方式接入云服务器(loc server)申请服务资源和mqtt登录信息。
81.步骤s101,云服务器(loc server)根据客户端的接入请求返回动态的连接token(connect token),以分配服务资源和mqtt动态登录信息,所述动态的连接token(connect token)中至少包括服务资源和mqtt动态登录信息。也就是说,当接收到请求时,云服务器会分配用户登录服务器,报警服务器,云升级服务器等的ip地址和端口信息;同时,包括mqtt动态登录信息。
82.在本发明中,云服务器(loc server)处于云平台中,负责内部服务资源分配并给客户端如手机app和iot设备发放一阶段mqtt动态登录信息的服务。
83.对于手机app的接入请求,云服务器(loc server)根据该接入请求分配动态的连接token(connect token),以分配服务资源和mqtt动态登录信息。
84.在本发明具体实施例中,动态连接token(connect token)采用jwt token,在第一阶段鉴权的jwt载荷定义如下:
[0085][0086]
在载荷中定义了exp字段,也就是jwt的有效期;则一旦过了有效期,该token将失效,并需要刷新。
[0087]
步骤s102,iot设备携带原始内部验证码以https方式接入云端的云服务器(loc server)申请服务资源和mqtt登录信息。
[0088]
步骤s103,云服务器(loc server)分配根据iot设备的接入请求返回动态的连接token(connect token),以分配服务资源和mqtt动态登录信息。
[0089]
步骤s104,iot设备与客户端以分配的动态登录信息连接mqtt中介(mqtt agent),并订阅和发布相关主题,在iot设备与客户端访问mqtt中介时由mqtt鉴权服务(mqtt auth)对相应的mqtt鉴权身份信息和主题的读写权限校验。
[0090]
在本发明中,mqtt中介,即mqtt agent,为mqtt消息发布者和订阅者之间的管理和中介,负责订阅关系管理,消息分发,mqtt接入鉴权服务(mqtt auth)用于配合mqtt中介,完成客户端/iot设备接入动态登录信息校验及主题读写权限检查。
[0091]
步骤s105,鉴权通过后,mqtt中介发送相应的主题及内容到客户端/iot设备。
[0092]
这里需说明的是,在一阶段,客户端和iot设备的校验是分别进行的,既没有顺序关系,也没有依赖关系。
[0093]
步骤s2,在第二阶段,客户端通过登录云端的单点登录服务器获得单点登录服务器分配的动态登录token,以分配的动态登录token的动态登录信息连接mqtt中介,以及订阅和发布相关主题,mqtt发布需要经由api鉴权服务的mqtt主题到api鉴权服务,鉴权通过
的api经由云端的设备影子服务做数据镜像和下发,iot设备则以分配的一阶段mqtt动态登录信息连接mqtt中介,以及订阅和发布相关主题。
[0094]
具体地,步骤s2进一步包括:
[0095]
步骤s200,客户端登录云端的单点登录服务器(sso server),获取单点登录服务器分配二阶段的mqtt动态登录token(login token)。
[0096]
在本发明具体实施例中,客户端例如手机app,当终端用户在手机app上输入终端用户名密码,以https方式登录单点登录服务器,单点登录服务器则给手机app分配登录的二阶段的mqtt动态登录token(login token),所述单点登录服务器(sso server)设置在云平台中,负责用户登录并给客户端例如手机app,发送二阶段的mqtt动态登录信息。
[0097]
同样,所述二阶段的mqtt动态登录信息也采用jwt token,二阶段鉴权的jwt载荷定义如下:
[0098][0099]
步骤s201,客户端以分配的二阶段的mqtt动态登录信息连接mqtt中介,访问mqtt中介时由mqtt鉴权服务(mqtt auth)对鉴权身份信息和主题的读写权限校验,于校验通过后,订阅和发布相关主题。
[0100]
具体地,步骤s201包括:
[0101]
步骤s201a,客户端以分配的二阶段的mqtt动态登录信息连接mqtt中介,客户端订阅相关主题。
[0102]
在本发明具体实施例中,客户端以手机app为例,手机app以分配的二阶段的mqtt动态登录信息登录mqtt中介,由mqtt鉴权服务(mqtt auth)对mqtt动态登录信息和主题的读写权限校验,于校验通过后,手机app订阅相关主题,具体地,参照图4,手机app的订阅流程如下:
[0103]
2.1 connect(mqtt agent)

[0104]
3 authenticate(mqtt auth)

[0105]
2.1 sub(mqtt agent)
[0106]
优选地,于步骤s201a后,还包括:
[0107]
鉴权通过后,mqtt中介则根据客户端订阅的主题发布对应的主题及内容到客户端。
[0108]
步骤s201b,客户端以分配的二阶段的mqtt动态登录信息连接mqtt中介,客户端发布相关主题(topic)以对iot设备控制。
[0109]
同样,客户端以手机app为例,手机app以分配的二阶段的mqtt动态登录信息登录mqtt中介,由mqtt鉴权服务(mqtt auth)对mqtt动态登录信息和主题的读写权限校验,于校
验通过后,手机app发布相关主题(例如手机要经过mqtt中介将修改“移动侦测开关”的请求发送给iot设备。
[0110]
所述设备影子服务(device shadow)是指云平台中,iot设备在云端的景象管理实体,完成设备状态同步,设备控制/配置指令缓存及下发,所述api鉴权服务(api auth)在云平台负责手机客户端/第三方服务访问iot设备的对外接口模块。
[0111]
在本发明实施例中,参照图4,手机app发布topic到iot设备接收的流程如下:
[0112]
2.1 connect(mqtt agent)

[0113]
3 authenticate(mqtt auth)

[0114]
2.1 pub(mqtt agent)

[0115]
4 publish topic(api auth)

[0116]
5转发到(deviceshadow)

[0117]
6转发到(mqtt agent)

[0118]
7.2 publish topic(iot设备)
[0119]
图2为本发明具体实施例中二阶段客户端发布主题,并订阅和接受响应消息对应的主题的流程图。具体地,在与mqtt中介建立mqtt连接后,客户端发布请求主题(topic)/订阅响应主题(topic),首先通过api向mqtt中介请求topic(与一阶段不同,一阶段用于基础连接服务比如p2p不涉及终端用户的账号登录;二阶段,必需终端用户登录sso之后,api模块根据登录的终端用户账号,以及该账号与设备的绑定关系做绑定关系的检查并通过后,然后才允许经过mqtt下发到iot设备),mqtt中介通过mqtt鉴权服务(mqtt auth)对主题的访问权限进行校验,即检查是否有验证topic缓存,若有则直接通过校验,若无则验证topic访问权限,不通过则断开mqtt连接,通过则访问权限校验通过,mqtt中介发布需要经由api鉴权服务的api请求topic(mqtt主题)到云端的api鉴权服务(api auth),在api鉴权服务(api auth)鉴权,具体地,验证用户/设备绑定关系(该关系是在用户注册时绑定的,并非在本发明执行过程中绑定,也就是说,本发明是基于终端用户在通过手机app在云平台中以邮箱注册了一个账号,以该账号登录sso服务器,然后以该账号绑定了一个iot设备的基础上的操作),鉴权通过则直接发布api”成功”响应主题到客户端如手机app,并转发api请求到设备影子服务(device shadow),由设备影子服务(device shadow)发布api请求对应的主题,经由mqtt中介到iot设备;若不通过,则直接发布api“鉴权失败”响应主题,经由mqtt中介到客户端如手机app。。
[0120]
步骤s202,iot设备以分配的一阶段mqtt动态登录信息连接mqtt中介,并订阅和发布业务相关mqtt主题,访问mqtt中介时由mqtt鉴权服务(mqtt auth)对鉴权身份信息和主题的读写权限校验。
[0121]
具体地,步骤s202进一步包括:
[0122]
步骤s202a,iot设备以分配的一阶段的mqtt动态登录信息连接mqtt中介,订阅相关主题,访问mqtt中介时由mqtt鉴权服务(mqtt auth)对鉴权身份信息和主题的读写权限校验;
[0123]
步骤s202b,iot设备以分配的一阶段的mqtt动态登录信息连接mqtt中介,发布相关主题到客户端,访问mqtt中介时由mqtt鉴权服务(mqtt auth)对鉴权身份信息和主题的读写权限校验。
[0124]
优选地,于步骤s202a后,还包括:
[0125]
鉴权通过后,mqtt中介则根据客户端订阅的主题发布对应的主题及内容到客户端。
[0126]
mqtt中介则根据iot设备订阅的主题发布对应的主题内容到iot设备。
[0127]
参阅图4,iot设备的订阅流程如下:
[0128]
7.1 connect(mqtt agent)

[0129]
3 authenticate(mqtt auth)

[0130]
7.1 sub(mqtt agent)。
[0131]
iot设备发布主题到手机app接收的流程如下:
[0132]
7.1 connect(mqtt agent)

[0133]
3.authenticate(mqtt auth)

[0134]
7.2 pub(mqtt agent)


[0135]
实施例
[0136]
图3为本发明实施例中一阶段登录信息分发及鉴权的流程示意图。在本实施例中,一阶段的过程如下:
[0137]
1.1:手机app以https方式接入云服务器(loc server)申请服务资源和mqtt登录信息;
[0138]
1.2:云服务器(loc server)分配服务资源和动态登录信息;
[0139]
2.1:iot设备携带原始内部验证码以https方式接入云服务器(loc server)申请服务器资源和mqtt登录信息;
[0140]
2.2:云服务器(loc server)分配服务器资源和mqtt动态登录信息;
[0141]
3.1:手机app以分配的动态登录信息连接mqtt中介(mqtt agent),以及订阅和发布相关主题;
[0142]
3.2:mqtt中介(mqtt agent)发送手机订阅的主题内容到手机;
[0143]
4:iot设备和手机app访问mqtt中介(mqtt agent)时由mqtt鉴权服务(mqtt auth)对鉴权身份信息和主题的读写权限校验;
[0144]
5.1:iot设备以分配的动态登录信息连接mqtt中介(mqtt agent),以及订阅和发布业务相关主题
[0145]
5.2:mqtt中介(mqtt agent)发送iot设备订阅的主题内容到iot设备。
[0146]
图4为本发明实施例中二阶段登录信息分发及鉴权的流程示意图。在本实施例中,二阶段的流程如下:
[0147]
1.1:手机app输入终端用户名密码,以https方式登录单点登录服务器(sso server);
[0148]
1.2:单点登录服务器(sso server)分配登录的动态token;
[0149]
2.1:手机app以分配的二阶段动态登录信息连接mqtt中介(mqtt agent),以及订阅和发布相关主题;
[0150]
2.2:mqtt中介(mqtt agent)发送手机app订阅的主题内容到手机app;
[0151]
3:iot设备和手机app访问mqtt中介(mqtt agent)时由有mqtt鉴权服务(mqtt auth)对鉴权身份信息和主题的读写权限校验;
[0152]
4:mqtt中介(mqtt agent)发布需要经由api鉴权服务的mqtt主题到api鉴权服务(api auth);
[0153]
5:鉴权通过的api经由设备影子服务(device shadow)做数据镜像和下发;
[0154]
6:设备影子服务(device shadow)发布api对应mqtt主题到mqtt中介(mqtt agent);
[0155]
7.1:iot设备以分配的一阶段动态鉴权身份信息连接mqtt中介(mqtt agent),并订阅和发布业务相关mqtt主题;
[0156]
7.2:mqtt中介(mqtt agent)发送iot设备订阅的mqtt主题内容到iot设备。
[0157]
图5为本发明实施例中iot设备与客户端连接访问mqtt中介的流程图。如图5所示,客户端/iot设备获取mqtt用户名密码(其为动态登录信息,只是以用户名和密码来呈现),发出mqtt连接请求(该请求中包含mqtt用户名和密码);mqtt中介收到mqtt连接请求后,通过mqtt鉴权服务(mqtt auth)验证用户名和密码,若验证成功,则直接验证通过,当前客户端/iot设备连接mqtt中介成功,若验证结果不通过,则进一步验证是否系统用户(本发明中,云端的api模块对于mqtt中介来说其实也是一个客户端,它连接mqtt时就是用的系统用户,这个连接是在服务器内网,不需要在internet传输,安全性有保障),若是则当前客户端/iot设备连接mqtt中介成功,否则当前客户端/iot设备连接mqtt中介失败。
[0158]
在本实施例中,mqtt鉴权服务(mqtt auth)对用户密码验证规则如下:
[0159]
1)、iot设备或未登录用户的手机app连接mqtt中介,是用动态分配的b_***格式的用户名和jwt格式的密码登录,mqtt鉴权服务验证jwt密码的签名,验证成功后将jwt中的cli-id和cli-type存入redis缓存,返回登录成功;
[0160]
2)、已有用户登录的手机app连接mqtt中介,jwt密码登录,用户名动态生成,用户名为c_***格式,jwt密码由oauth2服务生成,mqtt鉴权服务验证jwt密码的签名,验证成功后将jwt中的cli-id和cli-type存入redis缓存,返回登录成功;
[0161]
图6为本发明具体实施例中客户端/iot设备发布和订阅mqtt主题(topic)的验证流程图。如图6所示,当客户端/iot设备连接mqtt中介成功后,客户端/iot设备发布、订阅主题(topic),mqtt中介判断是否有验证主题(topic)缓存(mqtt中介提升性能的一个机制,客户端连接过程中,已经验证过的主题不再重复验证),若有,则直接验证通过,若没有,则通过mqtt鉴权服务(mqtt auth)验证mqtt登录用户的主题(topic)权限,若验证结果通过,则发布、订阅mqtt主题(topic)成功;若验证结果不通过,则进一步验证是否系统用户,若是,则发布、订阅mqtt主题(topic)成功,否则断开mqtt连接。
[0162]
在本实施例中,mqtt的主题(topic)验证规则如下:
[0163]
不同cli-type类型对topic的读写权限保存在mqtt鉴权服务的配置文件中,例如:
[0164][0165][0166]
1)cli-type=dev类型的设备
[0167]
订阅topic需要满足两个条件:
[0168]
1、仅可订阅有tdk.rabbitmq-topic-auth.dev.read下的字符串的topic,如devid为a_0000的设备订阅主题tdk.iot.*.get.a_0000(包含tdk.iot.*.get.字符串,)可订阅成功,订阅tdk.iot.shadow(不包含tdk.iot.shadow.get.的完整字符串)就会失败;
[0169]
2、订阅的topic中必须包含设备的id,如devid为a_0000的设备订阅tdk.iot.shadow.get.a_1111(不包含a_0000)就会失败,订阅tdk.iot.shadow.get.a_0000是成功的;
[0170]
发布消息需要满足一个条件:
[0171]
1、仅可发布到包含tdk.rabbitmq-topic-auth.dev.write下的字符串的topic,如发布到device.ust.json是成功的2)cli-type=app类型的app(无用户登录)
[0172]
订阅topic需要满足两个条件:
[0173]
1、仅可订阅有tdk.rabbitmq-topic-auth.app.read下的字符串的topic;
[0174]
2、订阅的topic中必须包含app的clientid,如clientid为b_0000的设备订阅b_1111.ust.json(不包含b_0000)就会失败,订阅b_0000.ust.json是成功的;
[0175]
发布消息需要满足一个条件:
[0176]
1、仅可发布到包含tdk.rabbitmq-topic-auth.app.write下的字符串的topic
[0177]
3)cli-type=app_user类型的app(用户登录后的app连接mqtt)
[0178]
订阅topic需要满足三个条件:
[0179]
1、仅可订阅有tdk.rabbitmq-topic-auth.app-user.read下的字符串的topic;
[0180]
2、订阅的topic中必须包含app的clientid;
[0181]
3、订阅的topic中必须包含登录app用户的userid;
[0182]
发布消息需要满足三个条件:
[0183]
1、仅可发布到包含tdk.rabbitmq-topic-auth.app-user.write下的字符串的topic
[0184]
2、发布的topic中必须包含app的clientid;
[0185]
3、发布的topic中必须包含登录app用户的userid;
[0186]
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1