欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 消息中间件访问方法、装置、设备及存储介质独创技术41718字

消息中间件访问方法、装置、设备及存储介质

2021-02-06 20:37:45

消息中间件访问方法、装置、设备及存储介质

  技术领域

  本发明涉及网络安全领域,尤其涉及一种消息中间件访问方法、装置、设备及存储介质。

  背景技术

  随着社会的进步和人工智能的发展,目前的计算机系统服务之间,为了提高并发量从而达到系统解耦的目的通常会引入消息中间件。与此同时,这些消息中间件只提供了简单的信息接收和中转,并未提供权限验证功能。

  若程序连接上消息中间件,则可以往任意一个主题中写入消息数据或者读取任意主题中的数据,不受任何控制。用户在传输数据过程中,不能基于发送和消费两种行为进行独立的配置,从而无法保证数据的安全性,无法保证消息中间件数据安全。

  发明内容

  本发明的主要目的在于解决保证消息中间件数据安全,实现消息主题的权限管理的技术问题。

  本发明第一方面提供了一种消息中间件访问方法,包括:

  接收客户端的接入请求,其中,所述接入请求中包括接入参数、客户端令牌;

  根据所述接入请求中的接入参数,计算服务端令牌;

  判断所述服务端令牌与所述客户端令牌是否一致;

  若所述服务端令牌与所述客户端令牌一致,则确定所述客户端是否存在越权权限;

  若所述客户端存在越权权限,则根据预设的越权权限与消息主题类型的对应关系,确定所述消息主题类型对应的通信协议建立所述客户端与所述消息主题Topic对应的服务的通信连接;

  若所述客户端不存在越权权限,则拒绝所述客户端的接入请求。

  可选的,在本发明第一方面的第一种实现方式中,在所述接收客户端的接入请求的步骤之前,还包括:

  确定所有可接入服务端的客户端;

  分别给每一客户端分配一个标识、与所述标识对应的密钥,以及与所述越权权限对应的消息主题类型,其中所述消息主题类型包括授权发送主题集合Topic-P和授权消费主题集合Topic-C。

  可选的,在本发明第一方面的第二种实现方式中,所述根据所述接入请求中的接入参数,计算服务端令牌包括:

  提取所述接入参数中所携带的客户端的标识、与所述标识对应密钥和访问时间参数;

  通过计算所述客户端令牌相同的算法,根据所述客户端的标识、与所述标识对应密钥和访问时间参数,计算服务端令牌。

  可选的,在本发明第一方面的第三种实现方式中,所述计算客户端令牌的算法为:

  TOKEN=SHA-256(ID+M+T),

  其中,TOKEN表示服务端令牌,SHA-256表示安全散列算法,ID表示客户端的标识ID,M表示标识ID对应的密钥,T表示客户端访问服务端的时间参数。

  可选的,在本发明第一方面的第四种实现方式中,所述根据所述接入请求中的接入参数,计算服务端令牌之前,还包括:

  若所述服务端令牌与所述客户端令牌一致,则获取当前时间T1;

  计算所述当前时间T1与所述接入参数中携带的时间参数T之间的时间差值;

  判断所述时间差值是否大于预设时间阈值L;

  若是,则确定所述客户端超时访问并拒绝所述接入请求;

  若否,则执行根据所述接入请求中的接入参数,计算服务端令牌的步骤。

  可选的,在本发明第一方面的第五种实现方式中,所述若所述服务端令牌与所述客户端令牌一致,则确定所述客户端是否存在越权权限确定所述客户端是否存在越权权限包括:

  若所述服务端令牌与所述客户端令牌一致,则提取所述客户端的标识对应的授权信息;

  判断所述授权信息对应的消息主题类型,其中,所述消息主题类型包括授权发送主题Topic和授权消费主题Topic;

  基于所述授权信息对应的消息主题类型,确定所述客户端的越权权限;

  若所述客户端被授权发送的主题是Topic-P,则判断所述Topic-P是否存在于所述服务端中对应的授权发送主题集合P;若是,则越权验证通过;若否,则越权验证不通过;

  若所述客户端需要发送的主题是Topic-C,则判断所述Topic-C是否存在于所述服务端中对应的授权发送主题集合C;若是,则越权验证通过;若否,则越权验证不通过。

  可选的,在本发明第一方面的第六种实现方式中,所述若所述客户端不存在越权权限,则拒绝所述客户端的接入请求之后,还包括:

  每隔预设时间,更新所述主题集合C和主题集合P所包含的消息主题Topic。

  本发明第二方面提供了一种消息中间件访问装置,包括:

  接收模块,用于接收客户端的接入请求,其中,所述接入请求中包括接入参数、客户端令牌;

  第一计算模块,用于根据所述接入请求中的接入参数,计算服务端令牌,;

  第一判断模块,用于判断所述服务端令牌与所述客户端令牌是否一致;

  第一确定模块,用于当所述服务端令牌与所述客户端令牌一致,确定所述客户端是否存在越权权限;

  第一通信连接模块,用于当所述客户端存在越权权限,根据预设的越权权限与消息主题类型的对应关系,确定所述消息主题类型对应的通信协议建立所述客户端与所述消息主题Topic对应的服务的通信连接;

  第二通信连接模块,用于当所述客户端不存在越权权限,拒绝所述客户端的接入请求。

  可选的,在本发明第二方面的第一种实现方式中,所述消息中间件访问装置,还包括:

  第二确定模块,用于确定所有可接入服务端的客户端;

  分配模块,用于分别给每一客户端分配一个标识I、与所述标识I对应的密钥,以及与所述越权权限对应的消息主题类型,其中所述消息主题类型包括授权发送主题集合Topic-P和授权消费主题集合Topic-C。

  可选的,在本发明第二方面的第二种实现方式中,所述计算模块包括:

  提取单元,用于提取所述接入参数中所携带的客户端的标识、与所述标识对应密钥和访问时间参数T;

  计算单元,用于通过计算所述客户端令牌相同的算法,根据所述客户端的标识、与所述标识对应密钥和访问时间参数,计算服务端令牌。

  可选的,在本发明第二方面的第三种实现方式中,所述消息中间件访问装置,还包括:

  获取模块,用于获取当前时间T1;

  第二计算模块,用于计算所述当前时间T1与所述接入参数中携带的时间参数T之间的时间差值;

  第二判断模块,用于判断所述时间差值是否大于预设时间阈值L,若是,则确定所述客户端超时访问并拒绝所述接入请求;若否,则确定所述客户端是否存在越权权限。

  可选的,在本发明第二方面的第四种实现方式中,所述第一确定模块具体用于:

  若所述服务端令牌与所述客户端令牌一致,则提取所述接入参数中所述客户端对应授权主题Topic;

  判断所述授权主题Topic对应的消息主题类型,其中,所述消息主题类型包括授权发送主题Topic和授权消费主题Topic;

  若所述主题Topic的类型是发送主题Topic-P,则判断所述Topic-P是否存在于所述服务端中对应的授权发送主题集合P;若是,则越权验证通过;若否,则越权验证不通过;

  若所述主题Topic的类型是消费主题Topic-C,则判断所述Topic-C是否存在于所述服务端中对应的授权发送主题集合C;若是,则越权验证通过;若否,则越权验证不通过。

  本发明第三方面提供了一种消息中间件访问设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述消息中间件访问设备执行上述的消息中间件访问方法。

  本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的消息中间件访问方法。

  本发明提供的技术方案中,主要通过为每一个接入消息中间件的程序(客户端)颁发一个对应的标识ID和密钥M,通过判断客户端产生的令牌与服务端产生的令牌是否一致来决定是否接入对应客户端,并对接入消息中间件的程序(客户端)进行权限控制,保证消息中间件数据安全,能够基于发送和消费两种行为进行独立的配置,解决了消息中间件未能提供的权限管理功能的技术问题。

  附图说明

  图1为本发明实施例中消息中间件访问方法的第一个实施例示意图;

  图2为本发明实施例中消息中间件访问方法的第二个实施例示意图;

  图3为本发明实施例中消息中间件访问方法的第三个实施例示意图;

  图4为本发明实施例中消息中间件访问装置的第一个实施例示意图;

  图5为本发明实施例中消息中间件访问装置的第二个实施例示意图;

  图6为本发明实施例中消息中间件访问设备的一个实施例示意图。

  具体实施方式

  本发明实施例提供了一种消息中间件访问方法、装置、设备及存储介质,本发明通过提供一种消息中间件访问方法,主要通过为每一个接入消息中间件的程序(客户端)颁发一个对应的标识ID和密钥M,通过判断客户端产生的令牌与服务端产生的令牌是否一致来决定是否接入对应客户端,并对接入消息中间件的程序(客户端)进行权限控制,保证消息中间件数据安全,能够基于发送和消费两种行为进行独立的配置,解决了消息中间件未能提供的权限管理功能的技术问题。

  本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

  为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中消息中间件访问方法的一个实施例包括:

  101、接收客户端的接入请求,其中,所述接入请求中包括接入参数、客户端令牌;

  本实施例中,客户端就是待接入的客户端,准备连接上消息中间件的程序。本实施例中,首先要接收客户端的接入请求,根据接入请求,客户端才能接入消息中间件。比如,客户端发送一个接入请求,系统接收到接入请求,才会将对应的客户端连接至消息中间件。

  102、根据所述接入请求中的接入参数,计算服务端令牌;

  本实施例中,根据接入请求中携带的接入参数确定待接入的客户端,进而获取对应客户端的标识ID和密钥M,每一个客户端都有唯一对应的标识ID。比如,客户端X要接入消息中间件,根据客户端X,我们可以确定客户端的标识ID为ID-X,密钥为M。

  本实施例中,根据客户端的接入参数,利用预置算法计算服务器的TOKEN。其中,客户端携带的参数包括{TOKEN,ID,T},通过调用服务权限获取对应的密钥M。

  本实施例中,ID是服务器给每一个接入消息中间件的客户端分配的,与之对应的还有密钥M。每一个客户端都有唯一对应的标识ID。比如,客户端X要接入消息中间件,根据客户端X,我们可以确定客户端的标识ID为ID-X,密钥为M-X。

  103、判断所述服务端令牌与所述客户端令牌是否一致;

  本实施例中,若所述服务端令牌与客户端令牌一致,则说明客户端为合法客户端,比如说,这个客户端要连接我的消息中间件,读取/写入消息数据至主题,那么根据它携带的的标识ID和密钥M,产生出TOKEN,若这个TOKEN与服务器产生的TOKEN一致,则说明它的标识ID和密钥M的确是“我(服务端)”颁发给他的,则说明该客户端为合法客户端。反之,如果TOKEN不一致,认为是非法,服务端拒绝连接请求。同时,为了避免同一个TOKEN重复使用导致的攻击行为,利用参数T做时间参数。比如,当前时间为T1,如果T1-T>L,则代表超时访问,拒绝。其中L是指超时阈值,如60s就代表这个TOKEN最长能使用1分钟。

  104、若所述服务端令牌与所述客户端令牌一致,则确定所述客户端是否存在越权权限;

  本实施例中,若客户端产生的令牌与服务端产生的令牌一致,则说明该客户端为合法客户端。若客户端是合法客户端,在对该客户端进行越权验证,因为,并非所有的合法客户端都可以访问xx数据,即使是合法客户端,可以访问的也只有特定的xx数据,所以需要进行验证,判断该客户端是否可以访问对应的主题。比如说,原来是没有权限控制的,导致主题中的消息数据可以被接入的任意客户端访问,现在,根据权限服务给每一个合法客户端提供的标识ID,确定该客户端可以发送的主题和消费主题集合。比如,ID被授权发送的主题集合是P,被授权消费的主题集合是C。那么如果ID需要消费的主题是Topic-C。

  本实施例中,若客户端通过越权权限验证,则判断该客户端要访问的数据是否存在于所述对应主题集合中。若存在,才允许访问该主题,若不存在,则不允许访问该主题,以保证数据的安全。比如说,ID被授权发送的主题集合是P,被授权消费的主题集合是C。那么如果ID需要消费的主题是Topic-C,服务器只需要判断Topic-C是否在集合C中,需要发送的主题是Topic-P,服务器只需要判断Topic-P是否在集合P中,在就允许连接建立,否则拒绝服务,得到越权权限验证结果。

  本实施例中,若客户端通过越权权限验证,则判断该客户端要访问的数据是否存在于所述对应主题集合中。若存在,才允许访问该主题,若不存在,则不允许访问该主题,以保证数据的安全。比如说,ID被授权发送的主题集合是P,被授权消费的主题集合是C。那么如果ID需要消费的主题是Topic-C,服务器只需要判断Topic-C是否在集合C中,需要发送的主题是Topic-P,服务器只需要判断Topic-P是否在集合P中,在就允许连接建立,否则拒绝服务,得到权限验证结果。

  105、若所述客户端存在越权权限,则根据预设的越权权限与消息主题类型的对应关系,确定所述消息主题类型对应的通信协议建立所述客户端与所述消息主题Topic对应的服务的通信连接;

  本实施例中,如果客户端需要访问的主题存在于所述主题集合,则根据接入请求,将客户端与对应主题建立连接,若不是,则拒绝客户端与服务端之间建立通信连接。比如,ID被授权发送的主题集合是P,被授权消费的主题集合是C。那么如果ID需要消费的主题是Topic-C,服务器只需要判断Topic-C是否在集合C中,需要发送的主题是Topic-P,服务器只需要判断Topic-P是否存在于集合P中,若存在就允许连接建立,否则拒绝建立连接。比如说,为了保证数据的安全,很多数据访问都是有时效性的,过了预先设定的时间,主题集合中的xx主题可能已经自动销毁或者无法访问,这时,如果xx主题中已经没有了该客户端原本要访问的数据,那么,客户端访问该主题也是无意义的,还有可能会使主题中其他数据信息泄露,无法保证数据的安全,则直接拒绝与该客户端建立通信连接,保证数据的安全。

  106、若所述客户端不存在越权权限,则拒绝所述客户端的接入请求。

  本实施例中,如果客户端不存在越权权限,则拒绝客户端与服务端之间建立通信连接。比如,ID被授权发送的主题集合是P,被授权消费的主题集合是C。那么如果ID需要消费的主题是Topic-C,服务器只需要判断Topic-C是否在集合C中,需要发送的主题是Topic-P,服务器只需要判断Topic-P是否存在于集合P中,若存在就允许连接建立,否则拒绝建立连接。比如说,为了保证数据的安全,很多数据访问都是有时效性的,过了预先设定的时间,主题集合中的xx主题可能已经自动销毁或者无法访问,则直接拒绝与该客户端建立通信连接,保证数据的安全。

  可以理解的是,本发明的执行主题可以为消息中间件访问装置,还可以是终端或者服务器,具体此处不做限定。本发明实施例以服务器为执行主题为例进行说明。

  本发明实施例中,主要通过为每一个接入消息中间件的程序(客户端)颁发一个对应的标识ID和密钥M,通过判断客户端产生的令牌与服务端产生的令牌是否一致来决定是否接入对应客户端,并对接入消息中间件的程序(客户端)进行权限控制,保证消息中间件数据安全,能够基于发送和消费两种行为进行独立的配置,解决了消息中间件未能提供的权限管理功能的技术问题。

  请参阅图2,本发明实施例中消息中间件访问方法的第二个实施例包括:

  201、确定所有可接入服务端的客户端;

  202、分别给每一客户端分配一个标识、与所述标识对应的密钥,以及与所述越权权限对应的消息主题类型,其中所述消息主题类型包括授权发送主题集合Topic-P和授权消费主题集合Topic-C;

  203、接收客户端的接入请求,其中,所述接入请求中包括接入参数、客户端令牌;

  204、根据所述接入请求中的接入参数,计算服务端令牌;

  205、判断所述服务端令牌与所述客户端令牌是否一致;

  206、提取所述接入参数中所述客户端对应授权主题Topic;

  本实施例中,如果所述服务端令牌与所述客户端令牌一致,则该客户端通过了合法性验证,为合法客户端,进一步地,为了验证客户端的越权权限,需要首先得到客户端的标识ID对应的授权可访问的信息。

  本实施例中,如果客户端令牌与服务端令牌一致,则说明该客户端通过了合法性验证,也就是说,当前的这个客户端拥有我方消息中间件的的连接权限(读写权限需要进一步验证),进一步地,我们要获取客户端的标识ID对应的该客户端的访问权限,也即客户端可访问的具体的访问对象,包括:对应授权发送的主题集合P和授权消费的主题集合C。

  207、判断所述授权主题Topic对应的消息主题类型;

  本实施例中,由于客户端被授权访问的消息主题类型有发送(写入)类型和消费(读取)类型,所以,当得到客户端的标识ID对应的授权可访问的信息时,需要对消息主题的类型进行判断。

  208、若所述主题Topic的类型是发送主题Topic-P,则判断所述Topic-P是否存在于所述服务端中对应的授权发送主题集合P;若是,则越权验证通过;若否,则越权验证不通过;

  本实施例中,若客户端被授权发送的主题是Topic-P,则判断Topic-P是否存在于服务端中对应的授权发送主题集合P中。对于数据发送场景:如果客户端的标识ID需要发送数据的主题是Topic-P,当客户端发送数据到服务器时,服务器得到信息{ID,Topic-P},服务器通过调用权限服务获得标识ID被授权允许发送的主题集合P,判定Topic-P是否属于集合P中。若Topic-P∈P,代表标识为ID的客户端有Topic-P的发送授权。若Topic-P不属于P代表没有授权,数据将不会被写入。

  本实施例中,根据集合P的消息数据,判断主题Topic-P是否存在于集合P。比如,集合P中包含有主题1,主题2,主题3,···主题n,判断主题Topic-P是否存在于集合P中。

  本实施例中,判断主题Topic-P是否存在于集合P,如果主题Topic-P存在于集合P,则允许客户端向Topic-P发送消息数据,也即与所述集合P建立连接。如果主题Topic-P不存在于集合P,则不允许客户端向Topic-P发送消息数据,也即拒绝客户端与所述集合P建立连接。

  209、若所述主题Topic的类型是消费主题Topic-C,则判断所述Topic-C是否存在于所述服务端中对应的授权发送主题集合C;若是,则越权验证通过;若否,则越权验证不通过;

  本实施例中,若客户端被授权发送的主题是Topic-C,则判断Topic-C是否存在于服务端中对应的授权发送主题集合C中。如果客户端的标识ID需要读取数据的主题是Topic-C,当客户端读取请求到服务器时,服务器得到信息{ID,Topic-C},服务器通过调用权限服务获得标识ID被授权允许消费读取的主题集合C,判定Topic-C是否属于集合C中。若Topic-C∈C,代表标识为ID的客户端有Topic-C的读取授权。若Topic-C不属于C代表没有授权,数据将不会被读取。

  本实施例中,根据集合C的消息数据,判断主题Topic-C是否存在于集合C。比如,集合P中包含有主题1,主题2,主题3,···主题n,判断主题Topic-C是否存在于集合C中。

  本实施例中,判断主题Topic-C是否存在于集合C,如果主题Topic-P存在于集合C,则允许客户端读取Topic-C中的消息数据,也即与所述集合C建立连接。如果主题Topic-C不存在于集合C,则不允许客户端读取Topic-C中的消息数据,也即拒绝客户端与所述集合C建立连接。

  本实施例中,若客户端对应的消息主题Topic存在于授权发送主题的集合P或授权消费的主题集合C中,则确定客户端通过越权权限验证,存在越权权限。

  210、若所述客户端存在越权权限,则根据预设的越权权限与消息主题类型的对应关系,确定所述消息主题类型对应的通信协议建立所述客户端与所述消息主题Topic对应的服务的通信连接;

  211、若所述客户端不存在越权权限,则拒绝所述客户端的接入请求;

  212、每隔预设时间,更新所述主题集合C和主题集合P所包含的消息主题Topic。

  本发明实施例中,主要通过为每一个接入消息中间件的程序(客户端)颁发一个对应的标识ID和密钥M,通过判断客户端产生的令牌与服务端产生的令牌是否一致来决定是否接入对应客户端,并对接入消息中间件的程序(客户端)进行权限控制,保证消息中间件数据安全,能够基于发送和消费两种行为进行独立的配置,解决了消息中间件未能提供的权限管理功能的技术问题。

  请参阅图3,本发明实施例中消息中间件访问方法的第三个实施例包括:

  301、确定所有可接入服务端的客户端;

  本实施例中,确定所有想要连接上消息中间件的客户端(程序),这些客户端就是本实施例中所说的客户端,同时,包括所有客户端的数据信息。比如,客户端W,客户端E,客户端R,客户端T,客户端Y,客户端U,以及这些客户端所携带的数据信息。

  302、分别给每一客户端分配一个标识、与所述标识对应的密钥,以及与所述越权权限对应的消息主题类型,其中所述消息主题类型包括授权发送主题集合Topic-P和授权消费主题集合Topic-C。

  本实施例中,分别给每一个客户端分配一个标识ID,以及与标识ID对应的密钥M,进一步地,通过预置接口,获取客户端的时间戳。

  本实施例中,ID和M是权限服务生成的,所以消息中间服务器是可以根据ID获得对应的M,T就是unix时间戳,是客户端连接服务器的时候携带过来的。其中,M不是客户端携带过来,是从权限服务中获取的。

  303、接收客户端的接入请求,其中,所述接入请求中包括接入参数、客户端令牌;

  304、提取所述接入参数中所携带的客户端的标识、与所述标识对应密钥M和访问时间参数;

  本实施例中,提取所述接入参数中所携带的客户端的标识ID、与所述标识ID对应密钥M和访问时间参数T。

  305、通过计算所述客户端令牌相同的算法,根据所述客户端的标识、与所述标识对应密钥和访问时间参数,计算服务端令牌;

  本实施例中,采用如下公式计算所述客户端令牌:TOKEN=SHA-256(ID+M+T),

  其中,TOKEN表示服务端令牌,SHA-256表示安全散列算法,是SHA(Secure HashAlgorithm)系列算法之一,ID表示客户端的标识ID,M表示标识ID对应的密钥,T表示客户端访问服务端的时间参数;

  本实施例中,安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。SHA256算法使用的哈希值长度是256位。

  本实施例中,SHA-256,简单来说,就是一种散列算法,或者有点像数学中的函数映射。有个特点,对于同一段内容A,使用函数sha-256计算后,会得到一个固定的值,如:V=SHA-256(A),A是内容,SHA-256是函数,V是函数值,只要内容不变A,计算出来的V就不变,同时由V推算不出A,因为SHA-256是不可逆的摘要算法。在本实施例中,A=ID+M+T,ID是用户标识,M是给这个ID分配的密钥串,T是时间戳,T是一个很大的数字,准确的术语是“unix时间戳”。进一步地,如果没有权限服务分配的ID和M,就一定产生不了正确的A,那么经过SHA-256产生的V就是不正确的。由于SHA-256有不可逆的性质,所以由V推算不出A,自然推送不出ID和M,这样就保证了安全性。假设ID=USER,M=HELLO,T=”2019-12-16 18:00:00”

  那么ID+M+T=USERHELLO2019-12-16 18:00:00

  TOKEN=SHA-256(USERHELLO2019-12-16 18:00:00)。

  306、判断所述服务端令牌与所述客户端令牌是否一致;

  307、获取当前时间T1;

  本实例中,客户端携带的T指客户端发生连接动作的时刻计数,T1是指中间件服务器收到连接请求动作的时刻计数,计算机系统中有标准的时钟基础服务接口可以获得时刻计数。

  308、计算所述当前时间T1与所述接入参数中携带的时间参数T之间的时间差值;

  本实施例中,获取客户端当前试图访问服务端中数据的当前时间T1,计算当前时间T1与接入参数中携带的时间参数T之间的时间差值。

  309、所述时间差值大于预设时间阈值L;

  本实施例中,若服务端令牌与所述客户端令牌一致,则允许客户端与服务端建立通信连接,但是为了进一步地保证数据的安全性,访问权限只在预设时间内有效,超过这个时间,就不能再建立通信连接,所以此时要判断当前时间T1与时间戳T之间的差值,是否大于预设时间阈值。也即,为了避免同一个TOKEN重复使用导致的攻击行为,利用参数T做时间参数。比如,当前时间为T1,如果T1-T>L,则代表超时访问,拒绝。其中L是指超时阈值,如60s就代表这个TOKEN最长能使用1分钟。

  310、确定所述客户端超时访问并拒绝所述接入请求;

  本实施例中,若当前时间T1与时间戳T之间的差值大于预设阈值,则代表客户端对应(预设时间内的)访问权限已失效,不能再与服务端建立通信连接。比如,T1-T>L,其中L是指超时阈值,若L=60s,就代表这个TOKEN最长能使用1分钟,当时间超过60秒之后,则确定客户端访问超时,不能再与服务端建立通信连接。

  本实施例中,客户端所携带的参数T,当前的时间为T1,若T1与T的差值L大于预设时间阈值,则代表超时访问,拒绝接入请求。如果L<预设时间阈值,代表TOKEN有效,代表客户端程序有正确的ID和密钥M以及正确的TOKEN生成算法,且待访问的数据在可访问有效期内,进一步地,需要确定该客户端是否有越权权限。

  本实施例中,设置的时间阈值越小,代表TOKEN的有效时间越小,安全性越高。因为时间间隔越短,被窃取的可能性越小,攻击的难度越高。

  本实施例中,若当前时间T1与时间戳T之间的差值小于预设阈值,则代表被访问数据还在有效时间内,若客户端为合法客户端,还是可以访问对应数据,则执行根据所述接入请求中的接入参数,计算服务端令牌的步骤。客户端所携带的参数T,当前的时间为T1,若T1与T的差值L大于预设时间阈值,则代表超时访问,此时,该客户端不能访问数据,拒绝接入请求。进一步地,需要确定该客户端是否有越权权限。需要说明的是,本步骤可以在接收客户端接入请求之后就执行,也可以在确定待接入客户端是否为合法客户端之后再执行。

  311、若所述服务端令牌与所述客户端令牌一致,则确定所述客户端是否存在越权权限;

  312、若所述客户端存在越权权限,则根据预设的越权权限与消息主题类型的对应关系,确定所述消息主题类型对应的通信协议建立所述客户端与所述消息主题Topic对应的服务的通信连接;

  313、若所述客户端不存在越权权限,则拒绝所述客户端的接入请求;

  本实施例中,若客户端对应的消息主题Topic存在于授权发送主题的集合P或授权消费的主题集合C中,则确定客户端通过权限验证,对集合P或集合C有访问权限,若否,则确定客户端没能通过权限验证。

  314、每隔预设时间,更新所述主题集合C和主题集合P所包含的消息主题Topic。

  本实施例中,为了实现对客户权限的灵活配置,即一个ID的可发送集合P,可消费集合C是变化的,我们在消息中间件中引入定时刷新机制,每隔一段时间G就从权限服务更新一次每个客户端的授权集合P和集合C,从而实现权限的灵活快速配置。比如,客户端A被授权消费的主题集合为Topic-C,且Topic-C存在于主题集合C中,那么客户端A可以与主题集合C建立连接,但若主题集合C半个小时后就更新以后,不再包含Topic-C,那么客户端就无法从Topic-C读取到数据。

  由上可见,本发明主要通过为每一个接入消息中间件的程序(客户端)颁发一个对应的标识ID和密钥M,通过判断客户端产生的令牌与服务端产生的令牌是否一致来决定是否接入对应客户端,并对接入消息中间件的程序(客户端)进行权限控制,保证消息中间件数据安全,能够基于发送和消费两种行为进行独立的配置,解决了消息中间件未能提供的权限管理功能的技术问题。

  上面对本发明实施例中消息中间件访问方法进行了描述,下面对本发明实施例中消息中间件访问装置进行描述,请参阅图4,本发明实施例中消息中间件访问装置的第一个实施例包括:

  接收模块401,用于接收客户端的接入请求,其中,所述接入请求中包括接入参数、客户端令牌;

  第一计算模块402,用于根据所述接入请求中的接入参数,计算服务端令牌;

  第一判断模块403,用于判断所述服务端令牌与所述客户端令牌是否一致;

  第一确定模块404,用于当所述服务端令牌与所述客户端令牌一致,确定所述客户端是否存在越权权限;

  第一通信连接模块405,用于当所述客户端存在越权权限,根据预设的越权权限与消息主题类型的对应关系,确定所述消息主题类型对应的通信协议建立所述客户端与所述消息主题Topic对应的服务的通信连接;

  第二通信连接模块406,用于当所述客户端不存在越权权限,拒绝所述客户端的接入请求。

  本发明实施例中,通过为每一个接入消息中间件的程序(客户端)颁发一个对应的标识ID和密钥M,通过判断客户端产生的令牌与服务端产生的令牌是否一致来决定是否接入对应客户端,并对接入消息中间件的程序(客户端)进行权限控制,保证消息中间件数据安全,能够基于发送和消费两种行为进行独立的配置,解决了消息中间件未能提供的权限管理功能的技术问题。

  可选的,请参阅图5,本发明实施例中消息中间件访问装置第二个实施例包括:

  接收模块501,用于接收客户端的接入请求,其中,所述接入请求中包括接入参数、客户端令牌;

  第一计算模块502,用于根据所述接入请求中的接入参数,计算服务端令牌,其中,所述接入参数包括:客户端的标识ID、与所述标识ID对应密钥M与时间参数T;

  第一判断模块503,用于判断所述服务端令牌与所述客户端令牌是否一致;

  第一确定模块504,用于当所述服务端令牌与所述客户端令牌一致,确定所述客户端是否存在越权权限;

  第一通信连接模块505,用于当所述客户端存在越权权限,根据预设的越权权限与消息主题类型的对应关系,确定所述消息主题类型对应的通信协议建立所述客户端与所述消息主题Topic对应的服务的通信连接;

  第二通信连接模块506,用于当所述客户端不存在越权权限,拒绝所述客户端的接入请求;

  第二确定模块507,用于确定所有可接入服务端的客户端;

  分配模块508,用于分别给每一客户端分配一个标识ID、与所述标识ID对应的密钥M,以及与所述越权权限对应的消息主题类型,其中所述消息主题类型包括授权发送主题集合Topic-P和授权消费主题集合Topic-C;

  获取模块509,用于获取当前时间T1;

  第二计算模块510,用于计算所述当前时间T1与所述接入参数中携带的时间参数T之间的时间差值;

  第二判断模块511,用于判断所述时间差值是否大于预设时间阈值L,若是,则确定所述客户端超时访问并拒绝所述接入请求;若否,则执行根据所述接入请求中的接入参数,计算服务端令牌的步骤;

  更新模块512,用于每隔预设时间,更新所述主题集合C和主题集合P所包含的消息主题Topic。

  可选的,第一计算模块502具体用于:

  提取所述接入参数中所携带的客户端的标识、与所述标识对应密钥和访问时间参数;

  通过计算所述客户端令牌相同的算法,根据所述客户端的标识、与所述标识对应密钥和访问时间参数,计算服务端令牌。

  可选的,第一确定模块504具体用于:

  提取所述接入参数中所述客户端对应授权主题Topic;

  判断所述授权主题Topic对应的消息主题类型;

  若所述主题Topic的类型是发送主题Topic-P,则判断所述Topic-P是否存在于所述服务端中对应的授权发送主题集合P;若是,则越权验证通过;若否,则越权验证不通过;

  若所述主题Topic的类型是消费主题Topic-C,则判断所述Topic-C是否存在于所述服务端中对应的授权发送主题集合C;若是,则越权验证通过;若否,则越权验证不通过。

  本发明实施例中,通过为每一个接入消息中间件的程序(客户端)颁发一个对应的标识和密钥,通过判断客户端产生的令牌与服务端产生的令牌是否一致来决定是否接入对应客户端,并对接入消息中间件的程序(客户端)进行权限控制,保证消息中间件数据安全,能够基于发送和消费两种行为进行独立的配置,解决了消息中间件未能提供的权限管理功能的技术问题。

  上面图4和图5从模块化功能实体的角度对本发明实施例中的消息中间件访问装置进行详细描述,下面从硬件处理的角度对本发明实施例中消息中间件访问设备进行详细描述。

  图6是本发明实施例提供的一种消息中间件访问设备的结构示意图,该消息中间件访问设备600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)610(例如,一个或一个以上处理器)和存储器620,一个或一个以上存储应用程序633或数据632的存储介质630(例如一个或一个以上海量存储设备)。其中,存储器620和存储介质630可以是短暂存储或持久存储。存储在存储介质630的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对消息中间件访问设备600中的一系列指令操作。更进一步地,处理器610可以设置为与存储介质630通信,在消息中间件访问设备600上执行存储介质630中的一系列指令操作。

  消息中间件访问设备600还可以包括一个或一个以上电源640,一个或一个以上有线或无线网络接口650,一个或一个以上输入输出接口660,和/或,一个或一个以上操作系统631,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图6示出的消息中间件访问设备结构并不构成对消息中间件访问设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

  本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述消息中间件访问方法的步骤。

  所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

  所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

  以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

《消息中间件访问方法、装置、设备及存储介质.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)