分布式微服务数据传输的方法、装置、系统和电子设备转让专利

申请号 : CN202110439097.6

文献号 : CN113141365B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 梁静汤仲喆段小燕孙孟雷

申请人 : 中国工商银行股份有限公司

摘要 :

本公开提供了一种分布式微服务数据传输的方法、装置、系统和电子设备,可用于大数据领域或者金融领域等,该方法包括:接收源自客户端的数据请求,数据请求包括身份验证信息和请求对象信息;响应于数据请求,给数据请求的请求头添加来源令牌和会话标识,得到封装后数据请求;以及发送封装后数据请求给主控服务器端,以便主控服务器端响应于来源令牌将会话标识传输给次级服务器端,使得次级服务器端能够对基于会话标识从指定存储空间中获取的身份验证信息中至少部分验证信息进行验证,并且在验证成功后返回与数据请求对应的请求结果,其中,指定存储空间包括由主控服务器端实现关联存储地至少部分验证信息和会话标识。

权利要求 :

1.一种由网关执行的分布式微服务数据传输的方法,包括:

接收源自客户端的数据请求,所述数据请求包括身份验证信息和请求对象信息;

响应于所述数据请求,给所述数据请求的请求头添加来源令牌和会话标识,得到封装后数据请求;以及发送所述封装后数据请求给主控服务器端,以便主控服务器端响应于所述来源令牌将所述会话标识传输给次级服务器端,使得所述次级服务器端能够对基于所述会话标识从指定存储空间中获取的所述身份验证信息中至少部分验证信息进行验证,并且在验证成功后返回与所述数据请求对应的请求结果,其中,所述指定存储空间包括由主控服务器端实现关联存储地至少部分验证信息和会话标识。

2.根据权利要求1所述的方法,还包括:在所述发送所述封装后数据请求给主控服务器端之后,接收来自所述主控服务器端的请求结果,所述请求结果包括解密后的目标数据;以及如果所述请求结果包括所述来源令牌,则将所述解密后的目标数据传输给所述客户端。

3.根据权利要求1所述的方法,其中,所述发送所述封装后数据请求给所述主控服务器端包括:基于服务发现框架确定与所述请求对象信息对应的目标主控服务器端和次级服务器端;以及发送所述封装后数据请求给所述目标主控服务器端和所述次级服务器端。

4.根据权利要求3所述的方法,其中,所述发送所述封装后数据请求给所述目标主控服务器端和所述次级服务器端包括:所述服务发现框架基于负载均衡策略从与所述目标主控服务器端对应的多个次级服务器端中确定目标次级服务器端;以及通过调用所述目标主控服务器端,将所述数据请求传输给所述目标主控服务器端,以便所述目标主控服务器端通过调用所述目标次级服务器端,将所述数据请求传输给所述目标次级服务器端。

5.根据权利要求1所述的方法,还包括:

通过断路器对请求头参数或响应头参数进行处理,以对服务转发和/或调用进行熔断处理或者降级处理。

6.一种由主控服务器端执行的分布式微服务数据传输的方法,包括:接收来自网关的封装后数据请求,所述封装后数据请求包括身份验证信息;

响应于所述封装后数据请求,如果所述封装后数据请求的请求头包括表征来自指定网关的来源令牌,则对所述身份验证信息进行验证,并且在指定存储空间中关联地存储会话标识和所述身份验证信息中至少部分验证信息;以及如果验证成功,则在所述封装后数据请求的请求头中设置会话令牌,得到分布式数据请求,并且将所述分布式数据请求发送给次级服务器端,其中,所述会话令牌包括会话标识,以便次级服务器端对基于所述会话标识从所述指定存储空间中获取的所述身份验证信息中至少部分验证信息进行验证,并且在验证成功后返回与所述数据请求对应的请求结果。

7.根据权利要求6所述的方法,还包括:

接收来自所述次级服务器端的请求结果;

从所述请求结果中解析出第一序列串,所述第一序列串的值作为目标下标,并且从所述请求结果中加密后目标数据的头部截取第一指定长度的第一数组;

对所述第一数组和实际秘钥进行第一可逆位运算,得到解密后第一子目标数据,其中,所述实际秘钥是基于身份验证信息中至少部分验证信息生成的;以及利用所述解密后第一子目标数据替换所述加密后目标数据的头部的所述第一数组,得到解密后目标数据。

8.根据权利要求7所述的方法,还包括:在所述接收来自次级服务器端的请求结果之后,从所述请求结果中加密后目标数据的尾部截取第二指定长度的第二数组,其中,所述第一数组和所述第二数组不同;

对所述第二数组和所述实际秘钥进行第二可逆位运算,得到解密后第二子目标数据;

以及

利用所述解密后第二子目标数据替换所述加密后目标数据的尾部的所述第二数组进行替换,得到解密后目标数据。

9.根据权利要求6所述的方法,其中,所述请求结果包括令牌串;

所述方法还包括:

基于所述令牌串对所述请求结果进行篡改检测,所述令牌串是至少基于所述来源令牌和所述会话标识生成的。

10.根据权利要求9所述的方法,其中,所述请求结果还包括校验位;

所述基于所述令牌串对所述请求结果进行篡改检测包括:

从所述请求结果中获取令牌串;

从所述令牌串中获取来源令牌和会话令牌;

基于会话令牌从指定存储空间中获取身份验证信息中至少部分验证信息;

对所述来源令牌和所述身份验证信息中至少部分验证信息进行第一加密,得到第一加密结果;

以会话令牌为盐对所述第一加密结果进行第二加密,得到比对位;以及如果所述校验位和所述比对位一致,则篡改检测通过。

11.一种由次级服务器端执行的分布式微服务数据传输的方法,包括:接收来自主控服务器端的分布式数据请求;

响应于所述分布式数据请求,如果所述分布式数据请求的请求头中包括来源令牌和会话令牌,所述会话令牌包括会话标识,则基于所述会话标识从指定存储空间中获取身份验证信息中至少部分验证信息进行验证,所述指定存储空间包括由所述主控服务器端实现关联存储地至少部分验证信息和会话标识;以及在验证成功后返回与所述分布式数据请求对应的请求结果,

其中,所述请求结果包括令牌串和加密后的目标数据,以便所述主控服务器端基于所述令牌串对所述加密后的目标数据进行篡改检测,所述令牌串至少基于所述来源令牌和所述会话标识生成的。

12.根据权利要求11所述的方法,其中,所述请求结果的生成方法包括:随机生成第一序列串,所述第一序列串的值作为目标下标;

从所述目标数据的头部截取第一指定长度的第三数组;

对所述第三数组和实际秘钥进行第一可逆位运算,得到加密后第一子目标数据,其中,所述实际秘钥是基于身份验证信息中至少部分验证信息生成的;以及利用所述加密后第一子目标数据替换所述目标数据的头部的所述第三数组,得到加密后的目标数据。

13.根据权利要求12所述的方法,其中,所述请求结果的生成方法还包括:从所述目标数据的尾部截取第二指定长度的第四数组,其中,所述第三数组和所述第四数组不同;

对所述第四数组和所述实际秘钥进行第二可逆位运算,得到加密后第二子目标数据;

以及

利用所述加密后第二子目标数据替换所述目标数据的尾部的所述第四数组,得到加密后的目标数据。

14.根据权利要求12所述的方法,其中,所述实际秘钥通过如下方式生成:随机生成第二序列串;

采用不可逆加解密算法对所述身份验证信息中至少部分验证信息进行加密,得到原始秘钥;

从所述原始秘钥中获取与所述来源令牌等长的第一片段;以及

将所述第一序列串的值作为目标下标,并且将所述第一片段和所述来源令牌中与所述目标下标对应的值进行置换,得到所述实际秘钥。

15.一种由分布式系统执行的分布式微服务数据传输的方法,所述分布式系统包括客户端、网关、主控服务器端和次级服务器端,上述方法包括:所述网关接收源自客户端的数据请求,所述数据请求包括身份验证信息和请求对象信息;

所述网关响应于所述数据请求,给所述数据请求的请求头添加来源令牌和会话标识,得到封装后数据请求;

所述网关发送所述封装后数据请求给主控服务器端;

所述主控服务器端响应于所述封装后数据请求,如果所述封装后数据请求的请求头包括表征来自所述网关的来源令牌,则对所述身份验证信息进行验证,并且在指定存储空间中关联地存储会话标识和所述身份验证信息中至少部分验证信息;

所述主控服务器端如果验证成功,则在所述封装后数据请求的请求头中设置会话令牌,得到分布式数据请求,并且将所述分布式数据请求发送给次级服务器端;

所述次级服务器端响应于所述分布式数据请求,如果所述分布式数据请求的请求头中包括来源令牌和会话令牌,所述会话令牌包括会话标识,则对基于所述会话标识从所述指定存储空间中获取的所述身份验证信息中至少部分验证信息进行验证;以及所述次级服务器端在验证成功后返回与所述分布式数据请求对应的请求结果,其中,所述请求结果包括令牌串和加密后的目标数据,以便所述主控服务器端基于所述令牌串对所述加密后的目标数据进行篡改检测,所述令牌串是至少基于所述来源令牌和所述会话标识生成的。

16.一种分布式微服务数据传输的装置,设置在网关中,所述装置包括:数据请求接收模块,用于接收源自客户端的数据请求,所述数据请求包括身份验证信息和请求对象信息;

数据请求响应模块,用于响应于所述数据请求,给所述数据请求的请求头添加来源令牌和会话标识,得到封装后数据请求;以及封装后数据请求发送模块,用于发送所述封装后数据请求给主控服务器端,以便主控服务器端响应于所述来源令牌将所述会话标识传输给次级服务器端,使得所述次级服务器端能够基于来自所述主控服务器端的所述会话标识从指定存储空间中获取的所述身份验证信息中至少部分验证信息进行验证,并且在验证成功后返回与所述数据请求对应的请求结果,其中,所述指定存储空间包括由主控服务器端实现关联存储地至少部分验证信息和会话标识。

17.一种分布式微服务数据传输的装置,设置在主控服务器端中,所述装置包括:封装后数据请求接收模块,用于接收来自网关的封装后数据请求,所述封装后数据请求包括身份验证信息;

封装后数据请求响应模块,用于响应于所述封装后数据请求,如果所述封装后数据请求的请求头包括表征来自指定网关的来源令牌,则对所述身份验证信息进行验证,并且在指定存储空间中关联地存储会话标识和所述身份验证信息中至少部分验证信息;以及分布式数据请求生成模块,用于如果验证成功,则在所述封装后数据请求的请求头中设置会话令牌,得到分布式数据请求,并且将所述分布式数据请求发送给次级服务器端,其中,所述会话令牌包括会话标识,以便次级服务器端基于所述会话标识从指定存储空间中获取的所述身份验证信息中至少部分验证信息进行验证,并且在验证成功后返回与所述数据请求对应的请求结果。

18.一种分布式微服务数据传输的装置,设置在次级服务器端中,上述装置包括:分布式数据请求接收模块,用于接收来自主控服务器端的分布式数据请求;

分布式数据请求响应模块,用于响应于所述分布式数据请求,如果所述分布式数据请求的请求头中包括来源令牌和会话令牌,所述会话令牌包括会话标识,则基于所述会话标识从指定存储空间中获取身份验证信息中至少部分验证信息进行验证,所述指定存储空间包括由所述主控服务器端实现关联存储地至少部分验证信息和会话标识;以及请求结果返回模块,用于在验证成功后返回与所述分布式数据请求对应的请求结果,其中,所述请求结果包括令牌串和加密后的目标数据,以便所述主控服务器端基于所述令牌串对所述加密后的目标数据进行篡改检测,所述令牌串至少基于所述来源令牌和所述会话标识生成的。

19.一种分布式微服务数据传输的系统,包括:客户端、网关、主控服务器端和次级服务器端,其中:所述网关用于接收源自客户端的数据请求,所述数据请求包括身份验证信息和请求对象信息;响应于所述数据请求,给所述数据请求的请求头添加来源令牌和会话标识,得到封装后数据请求;发送所述封装后数据请求给主控服务器端;

所述主控服务器端用于响应于所述封装后数据请求,如果所述封装后数据请求的请求头包括表征来自所述网关的来源令牌,则对所述身份验证信息进行验证,并且在指定存储空间中关联地存储会话标识和所述身份验证信息中至少部分验证信息;如果验证成功,则在所述封装后数据请求的请求头中设置会话令牌,得到分布式数据请求,并且将所述分布式数据请求发送给次级服务器端;以及所述次级服务器端用于响应于所述分布式数据请求,如果所述分布式数据请求的请求头中包括来源令牌和会话令牌,所述会话令牌包括会话标识,则对基于所述会话标识从所述指定存储空间中获取的所述身份验证信息中至少部分验证信息进行验证;在验证成功后返回与所述分布式数据请求对应的请求结果,其中,所述请求结果包括令牌串和加密后的目标数据,以便所述主控服务器端基于所述令牌串对所述加密后的目标数据进行篡改检测,所述令牌串至少基于所述来源令牌和所述会话标识生成的。

20.一种电子设备,包括:

一个或多个处理器;

存储装置,用于存储可执行指令,所述可执行指令在被所述处理器执行时,实现根据权利要求1~5任一项所述的方法,或者实现根据权利要求6~10任一项所述的方法,或者实现根据权利要求11~14任一项所述的方法。

说明书 :

分布式微服务数据传输的方法、装置、系统和电子设备

技术领域

[0001] 本公开涉及大数据技术领域,更具体地,涉及一种分布式微服务数据传输的方法、装置、系统和电子设备。

背景技术

[0002] 微服务构架的分布式系统,由基于业务逻辑的多个分立服务通过数据共享和信息交互构成,具有低耦合、易开发、易部署、易伸缩等的特点,且在处理高并发的需求下具有天生的优势,是目前解决大业务场景下最主要的技术路线和系统框架。
[0003] 在实现本公开构思的过程中,发明人发现相关技术中至少存在如下问题,分布式系统中数据安全跨域访问是目前数据安全传输方面的迫切要求和研究探索的热点之一。

发明内容

[0004] 有鉴于此,本公开提供了一种用于提升数据跨域访问的安全性的分布式微服务数据传输的方法、装置、系统和电子设备。
[0005] 本公开的一个方面提供了一种由网关执行的分布式微服务数据传输的方法,包括:接收源自客户端的数据请求,数据请求包括身份验证信息和请求对象信息;响应于数据请求,给数据请求的请求头添加来源令牌和会话标识,得到封装后数据请求;以及发送封装后数据请求给主控服务器端,以便主控服务器端响应于来源令牌将会话标识传输给次级服务器端,使得次级服务器端能够基于来自主控服务器端的会话标识从指定存储空间中获取的身份验证信息中至少部分验证信息进行验证,并且在验证成功后返回与数据请求对应的请求结果,其中,指定存储空间包括由主控服务器端实现关联存储地至少部分验证信息和会话标识。
[0006] 本公开的一个方面提供了一种由主控服务器端执行的分布式微服务数据传输的方法,包括:接收来自网关的封装后数据请求,封装后数据请求包括身份验证信息;响应于封装后数据请求,如果封装后数据请求的请求头包括表征来自指定网关的来源令牌,则对身份验证信息进行验证,并且在指定存储空间中关联地存储会话标识和身份验证信息中至少部分验证信息;以及如果验证成功,则在封装后数据请求的请求头中设置会话令牌,得到分布式数据请求,并且将分布式数据请求发送给次级服务器端,其中,会话令牌包括会话标识,以便次级服务器端对基于会话标识从指定存储空间中获取的身份验证信息中至少部分验证信息进行验证,并且在验证成功后返回与数据请求对应的请求结果。
[0007] 本公开的一个方面提供了一种由次级服务器端执行的分布式微服务数据传输的方法,包括:接收来自主控服务器端的分布式数据请求;响应于分布式数据请求,如果分布式数据请求的请求头中包括来源令牌和会话令牌,会话令牌包括会话标识,则基于会话标识从指定存储空间中获取身份验证信息中至少部分验证信息进行验证,指定存储空间包括由主控服务器端实现关联存储地至少部分验证信息和会话标识;以及在验证成功后返回与分布式数据请求对应的请求结果,其中,请求结果包括令牌串和加密后的目标数据,以便主控服务器端基于令牌串对加密后的目标数据进行篡改检测,令牌串至少基于来源令牌和会话标识生成的。
[0008] 本公开的一个方面提供了一种由分布式系统执行的分布式微服务数据传输的方法,分布式系统包括客户端、网关、主控服务器端和次级服务器端,上述方法包括:网关接收源自客户端的数据请求,数据请求包括身份验证信息和请求对象信息;网关响应于数据请求,给数据请求的请求头添加来源令牌和会话标识,得到封装后数据请求;网关发送封装后数据请求给主控服务器端;主控服务器端响应于封装后数据请求,如果封装后数据请求的请求头包括表征来自网关的来源令牌,则对身份验证信息进行验证,并且在指定存储空间中关联地存储会话标识和身份验证信息中至少部分验证信息;主控服务器端如果验证成功,则在封装后数据请求的请求头中设置会话令牌,得到分布式数据请求,并且将分布式数据请求发送给次级服务器端;次级服务器端响应于分布式数据请求,如果分布式数据请求的请求头中包括来源令牌和会话令牌,会话令牌包括会话标识,则对基于会话标识从指定存储空间中获取的身份验证信息中至少部分验证信息进行验证;以及次级服务器端在验证成功后返回与分布式数据请求对应的请求结果,其中,请求结果包括令牌串和加密后的目标数据,以便主控服务器端基于令牌串对加密后的目标数据进行篡改检测,令牌串是至少基于来源令牌和会话标识生成的。
[0009] 本公开的一个方面提供了一种分布式微服务数据传输的装置,设置在网关中,上述装置包括:数据请求接收模块,用于接收源自客户端的数据请求,数据请求包括身份验证信息和请求对象信息;数据请求响应模块,用于响应于数据请求,给数据请求的请求头添加来源令牌和会话标识,得到封装后数据请求;以及封装后数据请求发送模块,用于发送封装后数据请求给主控服务器端,以便主控服务器端响应于来源令牌将会话标识传输给次级服务器端,使得次级服务器端能够基于来自主控服务器端的会话标识从指定存储空间中获取的身份验证信息中至少部分验证信息进行验证,并且在验证成功后返回与数据请求对应的请求结果,其中,指定存储空间包括由主控服务器端实现关联存储地至少部分验证信息和会话标识。
[0010] 本公开的一个方面提供了一种分布式微服务数据传输的装置,设置在主控服务器端中,上述装置包括:封装后数据请求接收模块,用于接收来自网关的封装后数据请求,封装后数据请求包括身份验证信息;装后数据请求响应模块,用于响应于封装后数据请求,如果封装后数据请求的请求头包括表征来自指定网关的来源令牌,则对身份验证信息进行验证,并且在指定存储空间中关联地存储会话标识和身份验证信息中至少部分验证信息;以及分布式数据请求生成模块,用于如果验证成功,则在封装后数据请求的请求头中设置会话令牌,得到分布式数据请求,并且将分布式数据请求发送给次级服务器端,其中,会话令牌包括会话标识,以便次级服务器端基于会话标识从指定存储空间中获取的身份验证信息中至少部分验证信息进行验证,并且在验证成功后返回与数据请求对应的请求结果。
[0011] 本公开的一个方面提供了一种分布式微服务数据传输的装置,设置在次级服务器端中,上述装置包括:分布式数据请求接收模块,用于接收来自主控服务器端的分布式数据请求;分布式数据请求响应模块,用于响应于分布式数据请求,如果分布式数据请求的请求头中包括来源令牌和会话令牌,会话令牌包括会话标识,则基于会话标识从指定存储空间中获取身份验证信息中至少部分验证信息进行验证,指定存储空间包括由主控服务器端实现关联存储地至少部分验证信息和会话标识;以及请求结果返回模块,用于在验证成功后返回与分布式数据请求对应的请求结果,其中,请求结果包括令牌串和加密后的目标数据,以便主控服务器端基于令牌串对加密后的目标数据进行篡改检测,令牌串至少基于来源令牌和会话标识生成的。
[0012] 本公开的一个方面提供了一种分布式微服务数据传输的系统,包括:客户端、网关、主控服务器端和次级服务器端,其中:网关用于接收源自客户端的数据请求,数据请求包括身份验证信息和请求对象信息;响应于数据请求,给数据请求的请求头添加来源令牌和会话标识,得到封装后数据请求;发送封装后数据请求给主控服务器端;主控服务器端用于响应于封装后数据请求,如果封装后数据请求的请求头包括表征来自网关的来源令牌,则对身份验证信息进行验证,并且在指定存储空间中关联地存储会话标识和身份验证信息中至少部分验证信息;如果验证成功,则在封装后数据请求的请求头中设置会话令牌,得到分布式数据请求,并且将分布式数据请求发送给次级服务器端;以及次级服务器端用于响应于分布式数据请求,如果分布式数据请求的请求头中包括来源令牌和会话令牌,会话令牌包括会话标识,则对基于会话标识从指定存储空间中获取的身份验证信息中至少部分验证信息进行验证;在验证成功后返回与分布式数据请求对应的请求结果,其中,请求结果包括令牌串和加密后的目标数据,以便主控服务器端基于令牌串对加密后的目标数据进行篡改检测,令牌串至少基于来源令牌和会话标识生成的。
[0013] 本公开的另一方面提供了一种电子设备,包括一个或多个处理器以及存储装置,其中,存储装置用于存储可执行指令,可执行指令在被处理器执行时,实现如上的方法。
[0014] 本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,指令在被执行时用于实现如上的方法。
[0015] 本公开的另一方面提供了一种计算机程序,计算机程序包括计算机可执行指令,指令在被执行时用于实现如上的方法。
[0016] 本公开实施例提供的分布式微服务数据传输的方法、装置、系统和电子设备,数据请求的请求头包括来源令牌和会话标识,其中,来源令牌用于认证数据请求或请求结果的来源合法性,会话标识使得次级服务器端能够对基于会话标识从指定存储空间中获取的身份验证信息中至少部分验证信息进行验证,有效改善了分布式会话(Session)不一致的问题,提升了数据跨域访问的安全性。
[0017] 本公开实施例提供的分布式微服务数据传输的方法、装置、系统和电子设备,在现有加密算法基础上进行扩展,融入非对称加解密算法的思想,该加密方法不仅保证了数据加密安全传输,同时密钥也是安全的传输的,极大提高了数据的传输中的安全性。

附图说明

[0018] 通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
[0019] 图1示意性示出了根据本公开实施例的可以应用分布式微服务数据传输的方法、装置的示例性系统架构;
[0020] 图2示意性示出了根据本公开实施例的分布式微服务数据传输的方法的流程图;
[0021] 图3示意性示出了根据本公开实施例的网关的数据流图;
[0022] 图4示意性示出了根据本公开另一实施例的分布式微服务数据传输的方法的流程图;
[0023] 图5示意性示出了根据本公开实施例的主控服务器端的数据流图;
[0024] 图6示意性示出了根据本公开另一实施例的分布式微服务数据传输的方法的流程图;
[0025] 图7示意性示出了根据本公开实施例的安全认证流程图;
[0026] 图8示意性示出了根据本公开实施例的实际密钥生成过程示意图;
[0027] 图9示意性示出了根据本公开实施例的加密后目标数据的头部的示意图;
[0028] 图10示意性示出了根据本公开实施例的加密后目标数据的尾部的示意图;
[0029] 图11示意性示出了根据本公开另一实施例的分布式微服务数据传输的方法的流程图;
[0030] 图12示意性示出了根据本公开实施例的分布式微服务数据传输的装置的框图;
[0031] 图13示意性示出了根据本公开另一实施例的分布式微服务数据传输的装置的框图;
[0032] 图14示意性示出了根据本公开另一实施例的分布式微服务数据传输的装置的框图;
[0033] 图15示意性示出了根据本公开实施例的分布式微服务数据传输系统的方框图;
[0034] 图16示意性示出了根据本公开实施例的分布式微服务数据传输系统执行的逻辑图;以及
[0035] 图17示意性示出了根据本公开实施例的电子设备的方框图。

具体实施方式

[0036] 以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
[0037] 在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
[0038] 在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
[0039] 在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个特征。
[0040] 微服务构架的分布式系统,由基于业务逻辑的多个分立服务通过数据共享和信息交互构成,具有低耦合、易开发、易部署、易伸缩等的特点,且在处理高并发的需求下具有天生的优势,是目前解决大业务场景下最主要的技术路线和系统框架。鉴于此,分布式系统中数据安全跨域访问是目前数据安全传输方面的迫切要求和研究探索的热点之一。
[0041] 目前分布式框架主要分为远程过程调用(RPC)以及RestFul(一种网络应用程序的设计风格和开发方式)两种风格。近年来随着互联网技术的逐渐发展,以超文本传输协议(HTTP)轻量级协议为基础Spring Cloud(一系列框架的有序集和)分布式框架为代表的RestFul风格框架占据重要地位。Spring Cloud框架集众家之长并加以简化封装为搭建分布式系统提供了高效简洁的方式。此外随着目前Java的持续更新,以WebFlux(一套全新的Reactive Web技术栈,实现完全非阻塞,支持Reactive Sreams背压等特性,并且运行环境不限于Servlet容器,如Netty等)技术为代表的响应式编程技术凭借其异步非阻塞的特性,在目前高并发的环境下由于其天生的优势越来越受到大家的喜爱。Spring官方也逐渐朝着响应式编程的方向靠齐,对于之前非响应式的组件将不再维护,后续也持续推出并升级响应式的替代组件。因此本公开立足于新兴技术,采用SpringCloud框架,结合WebFlux技术搭建分布式系统框架。
[0042] 在分布式安全框架方面,Spring Security OAuth2安全框架是一种普遍使用的分布式安全框架。但是由于目前该框架已经开源,且负载较为繁重。本公开将其JWT协议的思想结合机构(如金融机构)的特点设计一种新的更为简洁高效的定制化分布式安全认证框架。此外,该框架同时结合自主研发的扩展加密算法,保证了分布式系统间数据的安全传输。
[0043] 本公开的目的在于提供一种分布式微服务间数据安全传输方案。在现有分布式框架基础上,解决分布式Session存储问题。此外,融合自主研发的扩展加密算法并结合现有安全框架思想保证数据的安全传输以及认证识别。
[0044] 本公开的实施例提供了一种分布式微服务数据传输的方法、装置、系统和电子设备。该由网关执行的分布式微服务数据传输的方法包括数据请求封装过程和数据请求传输过程。在数据请求封装过程中,首先,接收源自客户端的数据请求,数据请求包括身份验证信息和请求对象信息;然后,响应于数据请求,给数据请求的请求头添加来源令牌和会话标识,得到封装后数据请求。在完成数据请求封装过程之后进入数据请求过程,发送封装后数据请求给主控服务器端,以便主控服务器端响应于来源令牌将会话标识传输给次级服务器端,使得次级服务器端能够对基于会话标识从指定存储空间中获取的身份验证信息中至少部分验证信息进行验证,并且在验证成功后返回与数据请求对应的请求结果,其中,指定存储空间包括由主控服务器端实现关联存储地至少部分验证信息和会话标识。
[0045] 需要说明的是,本公开实施例提供的分布式微服务数据传输的方法、装置、系统和电子设备可用于大数据、分布式技术在微服务数据传输相关方面,也可用于除计大数据、分布式技术之外的多种领域,如金融领域等。本公开实施例提供的分布式微服务数据传输的方法、装置、系统和电子设备的应用领域不做限定。
[0046] 图1示意性示出了根据本公开实施例的分布式微服务数据传输的方法、装置、系统和电子设备的应用场景。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
[0047] 如图1所示,根据该实施例的系统架构100可以包括终端设备101、102、103,网络104和服务器105、106、107。网络104可以包括多个路由器、网线等,用以在终端设备101、
102、103和服务器105、106、107之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
[0048] 用户可以使用终端设备101、102、103通过网络104与其他终端设备和服务器105、106、107进行交互,以接收或发送信息等,如发送数据请求、业务请求和接收处理结果等。终端设备101、102、103可以安装有各种通讯用户端应用,例如银行类应用、网页浏览器应用、办公类应用、搜索类应用、即时通信工具、邮箱用户端、社交平台软件等应用(仅为示例)。
[0049] 终端设备101、102、103包括但不限于智能手机、虚拟现实设备、增强现实设备、平板电脑、膝上型便携计算机等等。
[0050] 服务器105、106、107可以接收请求,并对请求进行处理。例如,服务器105、106、107可以为后台管理服务器、网关、服务器集群等。后台管理服务器可以对接收到的数据请求等进行分析处理,并将处理结果(如目标数据等)反馈给终端设备。
[0051] 需要说明的是,本公开实施例所提供的参数校验方法一般可以由服务器105、106、107执行。应该理解,终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
[0052] 图2示意性示出了根据本公开实施例的分布式微服务数据传输的方法的流程图。
[0053] 如图2所示,该由网关执行的分布式微服务数据传输的方法可以包括操作S201~操作S203。
[0054] 在操作S201,接收源自客户端的数据请求,数据请求包括身份验证信息和请求对象信息。
[0055] 在本实施例中,源自客户端的数据请求可以首先经过静态资源服务器(Nginx),然后由Nginx发送给网关。网关可以是独立的网关,也可以集成在主控服务器端上。
[0056] 例如,用户访问登陆页面进行登陆操作,发送数据请求(其可以是针对某个业务的数据请求),数据请求经过Nginx路由到框架的网关(Gateway)处。
[0057] 在一个实施例中,上述方法还可以包括如下操作,通过断路器对请求头参数或响应头参数进行处理,以对服务转发和/或调用进行熔断处理或者降级处理。例如,通过断路器(如Resilience4J)对服务转发调用提供熔断降级保证。
[0058] 在操作S202,响应于数据请求,给数据请求的请求头添加来源令牌和会话标识,得到封装后数据请求。
[0059] 其中,在Gateway中还对网页会话(Web Session)进行配置,会话标识(Session ID)通过请求头参数进行传递,保证了分布式Session的一致性。
[0060] 图3示意性示出了根据本公开实施例的网关的数据流图。
[0061] 如图3所示,所有的数据请求(request)经过Nginx路由到框架的网关(Gateway)处,所有的request都需要经过Gateway进行转发。request到达Gateway后,通过Gateway全局过滤器,对请求头设置参数来源令牌(tkn1),用于下游服务校验是否请求均来自Gateway,即判断是否通过合法操作调用。全局过滤器可以包括前置断路器(Circuit‑Breaker)和后置断路器。网关还可以包括路由器(router)用于在数据请求的头部设置来源令牌(tkn1).下游服务器反馈的请求结果中可以包括来源令牌(tkn1)和会话令牌(tkn2),会话令牌中可以包括会话标识。
[0062] 在操作S203,发送封装后数据请求给主控服务器端,以便主控服务器端响应于来源令牌将会话标识传输给次级服务器端,使得次级服务器端能够对基于会话标识从指定存储空间中获取的身份验证信息中至少部分验证信息进行验证,并且在验证成功后返回与数据请求对应的请求结果,其中,指定存储空间包括由主控服务器端实现关联存储地至少部分验证信息和会话标识。
[0063] 在一个实施例中,发送封装后数据请求给主控服务器端可以包括如下操作。
[0064] 首先,基于服务发现框架确定与请求对象信息对应的目标主控服务器端和次级服务器端。
[0065] 然后,发送封装后数据请求给目标主控服务器端和次级服务器端。
[0066] 其中,发送封装后数据请求给目标主控服务器端和次级服务器端可以包括如下操作。
[0067] 首先,服务发现框架基于负载均衡策略从与目标主控服务器端对应的多个次级服务器端中确定目标次级服务器端。负载均衡策略用于基于多个次级服务器端的运行状态(如中央处理器CPU的使用率、内存使用率、保持的连接数等)对源自客户端的数据请求进行分配,如尽量分配给处于空置状态的次级服务器等。
[0068] 然后,通过调用目标主控服务器端,将数据请求传输给目标主控服务器端,以便目标主控服务器端通过调用目标次级服务器端,将数据请求传输给目标次级服务器端。
[0069] 例如,Gateway对请求进行包装后在Eureka中通过服务命查找下游服务,并通过负载均衡策略调用下游user‑service服务。
[0070] 在一个实施例中,在发送封装后数据请求给主控服务器端之后,上述方法还可以包括如下操作。
[0071] 首先,接收来自主控服务器端的请求结果,请求结果包括解密后的目标数据。
[0072] 然后,如果请求结果包括来源令牌,则将解密后的目标数据传输给客户端。
[0073] 通过上述操作可以便于主控服务器端和次级服务器端基于来源令牌进行来源合法性验证。此外,主控服务器端可以将会话标识和身份验证信息绑定存储在指定存储空间,使得次级服务器端可以基于会话标识从指定存储空间中获取身份验证信息进行验证,提升信息传递安全性。
[0074] 本公开的另一方面提供了一种由主控服务器端执行的分布式微服务数据传输的方法。
[0075] 图4示意性示出了根据本公开另一实施例的分布式微服务数据传输的方法的流程图。
[0076] 如图4所示,该方法可以包括操作S401~操作S403。
[0077] 在操作S401,接收来自网关的封装后数据请求,封装后数据请求包括身份验证信息。
[0078] 在操作S402,响应于封装后数据请求,如果封装后数据请求的请求头包括表征来自指定网关的来源令牌,则对身份验证信息进行验证,并且在指定存储空间中关联地存储会话标识和身份验证信息中至少部分验证信息。
[0079] 例如,封装后数据请求到达主控服务器端(user‑service)后,如图4所示,主控服务器端检查数据请求的请求头是否包含来源令牌tkn1。如果是,则查询数据库来确定登陆信息(身份验证信息)是否验证成功,并设置会话(Session)值放入Redis中。其中,Session值中可以包括身份验证信息中的至少部分信息。当Session值中仅包括部分身份验证信息时,有助于提升身份验证信息的安全性,提升隐私保护能力。
[0080] 在操作S403,如果验证成功,则在封装后数据请求的请求头中设置会话令牌,得到分布式数据请求,并且将分布式数据请求发送给次级服务器端。
[0081] 其中,会话令牌包括会话标识,以便次级服务器端对基于会话标识从指定存储空间中获取的身份验证信息中至少部分验证信息进行验证,并且在验证成功后返回与数据请求对应的请求结果。
[0082] 图5示意性示出了根据本公开实施例的主控服务器端的数据流图。
[0083] 如图5所示,通过数据请求中包括的身份验证信息登陆主控服务器端成功后,主控服务器端调用各地次级服务器端。主控服务器端通过Reactive WebClient调用各地次级服务器端,同时在请求头中设置参数tkn2(存放Session ID信息)。例如,可以通过user‑service检测请求头中是否包括来源令牌,如果不包括来源令牌,则确定非法请求。如果包括来源令牌,则判断发起该数据请求的客户端是否是第一次登陆服务器端,如果是,则将会话标识和会话值(可以包括身份验证信息中至少部分信息)关联地存储在指定存储空间中。这样便于次级服务器端基于会话标识从指定存储空间中确定身份验证信息。
[0084] 例如,次级服务器端首先判断请求头中是否包含tkn1与tkn2,检验请求的来源合法性。然后再通过Session ID读取Redis中的信息(sn)进行身份验证。然后从数据库中读取数据并通过tkn1,tkn2按照预设加解密算法进行加密,如基于自主开发的扩展加密算法进行加密。最后再将tkn1与sn1分别进行Base64加密,再将两者加密后的信息以tkn2为盐进行SHA256加盐加密得到sec1加密串,最后将Base64加密后的tkn1,tkn2以及sec1一起组合成为JWT串,再将JWT串与加密后的数据信息进行组合传输返回主控系统。需要说明的是,Base64算法和SHA256算法仅为示例性示出,还可以采用多种其它算法进行加密,不能理解为对本公开的限定。
[0085] 在一个实施例中,请求结果包括令牌串。相应地,上述方法还可以包括如下操作。基于令牌串对请求结果进行篡改检测,令牌串是至少基于来源令牌和会话标识生成的。
[0086] 例如,请求结果还包括校验位。相应地,基于令牌串对请求结果进行篡改检测可以包括如下操作。
[0087] 首先,从请求结果中获取令牌串。
[0088] 然后,从令牌串中获取来源令牌和会话令牌。
[0089] 接着,基于会话令牌从指定存储空间中获取身份验证信息中至少部分验证信息。
[0090] 然后,对来源令牌和身份验证信息中至少部分验证信息进行第一加密,得到第一加密结果。
[0091] 接着,以会话令牌为盐对第一加密结果进行第二加密,得到比对位。
[0092] 然后,如果校验位和比对位一致,则篡改检测通过。
[0093] 例如,主控服务器端接收到响应信息后对数据进行解析,从响应头中获取令牌串(如Json Web Token串,简称JET串),然后通过Base64解密得到tkn1与tkn2,再根据tkn2去Redis中获取Session信息(sn2),再将sn2与tkn1分别进行Base64加密再通过tkn2进行SHA256加密得到sec2,将sec1与sec2进行对比,如果一致表示数据没有被篡改。此外,还可以再经过Gateway继续返回客户端目标数据,经过Gateway时通过拦截器对响应头参数进行包装整理,在客户端页面渲染前,对数据进行解密展示。
[0094] 在一个实施例中,可以在主控服务器端对接收的请求结果进行解析、解密等,来得到解密后的目标数据,以便将解密后的目标数据发送给客户端,降低客户端的运算量。
[0095] 例如,可以基于针对次级服务器端对目标数据的加密过程的逆过程来实现对请求结果的解密过程。次级服务器端对目标数据的加密过程会在后续部分进行详细说明。例如,主控服务器端解析出ind1,ind2(在加解密算法部分进行详细说明),并根据tkn2获取Session信息生成原始密钥,再重新生成实际密钥dKey。按照加密逆运算进行解密得到数据。
[0096] 例如,在接收来自次级服务器端的请求结果之后,上述方法还可以包括如下操作。
[0097] 首先,接收来自次级服务器端的请求结果。
[0098] 然后,从请求结果中解析出第一序列串,第一序列串的值作为目标下标,并且从请求结果中加密后目标数据的头部截取第一指定长度的第一数组。
[0099] 接着,对第一数组和实际秘钥进行第一可逆位运算,得到解密后第一子目标数据,其中,实际秘钥是基于身份验证信息中至少部分验证信息生成的。
[0100] 然后,利用解密后第一子目标数据替换加密后目标数据的头部的第一数组,得到解密后目标数据。
[0101] 例如,在接收来自次级服务器端的请求结果之后,上述方法还可以包括如下操作。
[0102] 从请求结果中加密后目标数据的尾部截取第二指定长度的第二数组,其中,第一数组和第二数组不同。
[0103] 对第二数组和实际秘钥进行第二可逆位运算,得到解密后第二子目标数据。
[0104] 利用解密后第二子目标数据替换加密后目标数据的尾部的第二数组进行替换,得到解密后目标数据。
[0105] 本公开的另一方面提供了一种由次级服务器端执行的分布式微服务数据传输的方法。
[0106] 图6示意性示出了根据本公开另一实施例的分布式微服务数据传输的方法的流程图。
[0107] 如图6所示,该方法可以包括操作S601~操作S603。
[0108] 在操作S601,接收来自主控服务器端的分布式数据请求。
[0109] 在操作S602,响应于分布式数据请求,如果分布式数据请求的请求头中包括来源令牌和会话令牌,会话令牌包括会话标识,则基于会话标识从指定存储空间中获取身份验证信息中至少部分验证信息进行验证,指定存储空间包括由主控服务器端实现关联存储地至少部分验证信息和会话标识。
[0110] 在操作S603,在验证成功后返回与分布式数据请求对应的请求结果。
[0111] 其中,请求结果包括令牌串和加密后的目标数据,以便主控服务器端基于令牌串对加密后的目标数据进行篡改检测,令牌串至少基于来源令牌和会话标识生成的。
[0112] 图7示意性示出了根据本公开实施例的安全认证流程图。
[0113] 如图7所示,数据请求(request)发送给网关(Gateway)之后,网关会在请求头中设置tkn1和会话标识(Session ID),主控系统将Session值和会话ID相关联地存储在Redis中。主控系统需要验证数据请求的身份:是否来自指定网关。主控系统将包括会话令牌和会话标识的分布式数据请求发送给次级系统,次级系统基于Session ID从Redis中获取身份验证信息,验证通过后从数据库中获取与分布式数据请求对应的目标数据,并对目标数据进行加密,生成JWT串以便主控系统基于JWT串进行防止篡改检测。主控系统在接收到来自次级系统的请求结果后,可以根据JWT判断是否被篡改。
[0114] 目前大部分的加密算法都是开源或是国外的加密算法,在此基础上根据框架自身特性设计一套扩展加密算法。
[0115] 以下对目标数据加密过程进行示例性说明。
[0116] 在一个实施例中,可以仅对目标数据的头部进行加密,如请求结果的生成方法可以包括如下操作。
[0117] 首先,随机生成第一序列串,第一序列串的值作为目标下标。
[0118] 然后,从目标数据的头部截取第一指定长度的第三数组。第一指定长度可以是预设设定的长度,该长度不超过目标数据的长度。
[0119] 接着,对第三数组和实际秘钥进行第一可逆位运算,得到加密后第一子目标数据,其中,实际秘钥是基于身份验证信息中至少部分验证信息生成的。
[0120] 然后,利用加密后第一子目标数据替换目标数据的头部的第三数组,得到加密后的目标数据。
[0121] 在一个实施例中,可以仅对目标数据的尾部进行加密,如请求结果的生成方法还可以包括如下操作。
[0122] 首先,从目标数据的尾部截取第二指定长度的第四数组,其中,第三数组和第四数组不同。
[0123] 然后,对第四数组和实际秘钥进行第二可逆位运算,得到加密后第二子目标数据。
[0124] 接着,利用加密后第二子目标数据替换目标数据的尾部的第四数组,得到加密后的目标数据。
[0125] 需要说明的是,也可以同时对目标数据的头部和尾部进行加密,在此不做限定。
[0126] 在一个实施例中,实际秘钥可以通过如下方式生成。
[0127] 首先,随机生成第二序列串。
[0128] 然后,采用不可逆加解密算法对身份验证信息中至少部分验证信息进行加密,得到原始秘钥。
[0129] 接着,从原始秘钥中获取与来源令牌等长的第一片段。
[0130] 然后,将第一序列串的值作为目标下标,并且将第一片段和来源令牌中与目标下标对应的值进行置换,得到实际秘钥。
[0131] 图8示意性示出了根据本公开实施例的实际密钥生成过程示意图。
[0132] 如图8所示,加密过程发生在各地次级服务器端,首先分别生成两串随机序列ind1,ind2,并再根据Session信息进行不可逆加密,如MD5加密生成原始密钥key1,再从key1中截取tkn1等长的片段s1,将s1与tkn1以ind1值(如图8中右侧数组所示)为下标进行置换。置换后得到实际加密密钥key2。
[0133] 图9示意性示出了根据本公开实施例的加密后目标数据的头部的示意图。
[0134] 如图9所示,将待加密数据data从头截取一段与指定长度(如Lind2/2,当然还可以是其它长度)的长度相等的数组data1,将data1与key2以ind2值(如图9中右侧数组所示)为下标进行第一可逆位运算(如异或位运算或移位运算等)得到data11后再放回原data中。
[0135] 图10示意性示出了根据本公开实施例的加密后目标数据的尾部的示意图。
[0136] 如图10所示,从data末尾开始截取一段与指定长度(如Lind2/2)长度相等的数组data2,将data2与key2以ind2后半部分的值为下标进行第二可逆位运算(如异或位运算或移位运算等)得到data22,并将data22放回原data处。
[0137] 然后,可以将ind1与ind2以及加密后的Data组合拼接作为返回值返回主控系统。
[0138] 本公开实施例中,结合Spring Cloud分布式架构以Spring Boot框架及http轻量级协议为基础并采取Web Flux技术实现全流程异步非阻塞响应式编程,在应对高并发环境下有巨大的优势,同时结合lambda表达式实现函数式编程,使框架的实现更为简洁高效,并能兼容最新的Resilience4J、WebClient等响应式技术组件。其次,该框架至少部分解决了分布式Session不一致的问题,并将其与目前开源的安全框架思想结合起来量身定制了一套更适用于该框架自身的分布式认证防篡改体系。特别指出的是,对于安全认证部分用到的Base64加密算法也是根据现有的Base64思想自主重新实现的。最后基于目前大部分加密算法均来自开源的加密算法,本公开中涉及的加密算法在现有加密算法基础上进行扩展,融入非对称密算法的思想,该加密方法不仅保证了数据加密安全传输,同时密钥也是安全的传输的,极大提高了数据的传输中的安全性。
[0139] 本公开的另一方面提供了一种由分布式系统执行的分布式微服务数据传输的方法。
[0140] 图11示意性示出了根据本公开另一实施例的分布式微服务数据传输的方法的流程图。分布式系统包括客户端、网关、主控服务器端和次级服务器端。
[0141] 如图11所示,该方法可以包括操作S1101~S1107。
[0142] 在操作S1101,网关接收源自客户端的数据请求,数据请求包括身份验证信息和请求对象信息。
[0143] 在操作S1102,网关响应于数据请求,给数据请求的请求头添加来源令牌和会话标识,得到封装后数据请求。
[0144] 在操作S1103,网关发送封装后数据请求给主控服务器端。
[0145] 在操作S1104,主控服务器端响应于封装后数据请求,如果封装后数据请求的请求头包括表征来自网关的来源令牌,则对身份验证信息进行验证,并且在指定存储空间中关联地存储会话标识和身份验证信息中至少部分验证信息。
[0146] 在操作S1105,主控服务器端如果验证成功,则在封装后数据请求的请求头中设置会话令牌,得到分布式数据请求,并且将分布式数据请求发送给次级服务器端。
[0147] 在操作S1106,次级服务器端响应于分布式数据请求,如果分布式数据请求的请求头中包括来源令牌和会话令牌,会话令牌包括会话标识,则对基于会话标识从指定存储空间中获取的身份验证信息中至少部分验证信息进行验证。
[0148] 在操作S1107,次级服务器端在验证成功后返回与分布式数据请求对应的请求结果。
[0149] 其中,请求结果包括令牌串和加密后的目标数据,以便主控服务器端基于令牌串对加密后的目标数据进行篡改检测,令牌串是至少基于来源令牌和会话标识生成的。
[0150] 本公开的另一方面提供了一种分布式微服务数据传输的装置,设置在网关中。
[0151] 图12示意性示出了根据本公开实施例的分布式微服务数据传输的装置的框图。
[0152] 如图12所示,上述装置1200可以包括数据请求接收模块1210、数据请求响应模块1220和封装后数据请求发送模块1230。
[0153] 数据请求接收模块1210用于接收源自客户端的数据请求,数据请求包括身份验证信息和请求对象信息。
[0154] 数据请求响应模块1220用于响应于数据请求,给数据请求的请求头添加来源令牌和会话标识,得到封装后数据请求。
[0155] 封装后数据请求发送模块1230用于发送封装后数据请求给主控服务器端,以便主控服务器端响应于来源令牌将会话标识传输给次级服务器端,使得次级服务器端能够基于来自主控服务器端的会话标识从指定存储空间中获取的身份验证信息中至少部分验证信息进行验证,并且在验证成功后返回与数据请求对应的请求结果,其中,指定存储空间包括由主控服务器端实现关联存储地至少部分验证信息和会话标识。
[0156] 本公开的另一方面提供了一种分布式微服务数据传输的装置,设置在主控服务器端中。
[0157] 图13示意性示出了根据本公开另一实施例的分布式微服务数据传输的装置的框图。
[0158] 如图13所示,上述装置1300包括:封装后数据请求接收模块1310、封装后数据请求响应模块1320和分布式数据请求生成模块1330。
[0159] 封装后数据请求接收模块1310用于接收来自网关的封装后数据请求,封装后数据请求包括身份验证信息。
[0160] 封装后数据请求响应模块1320用于响应于封装后数据请求,如果封装后数据请求的请求头包括表征来自指定网关的来源令牌,则对身份验证信息进行验证,并且在指定存储空间中关联地存储会话标识和身份验证信息中至少部分验证信息。
[0161] 分布式数据请求生成模块1330用于如果验证成功,则在封装后数据请求的请求头中设置会话令牌,得到分布式数据请求,并且将分布式数据请求发送给次级服务器端,其中,会话令牌包括会话标识,以便次级服务器端基于会话标识从指定存储空间中获取的身份验证信息中至少部分验证信息进行验证,并且在验证成功后返回与数据请求对应的请求结果。
[0162] 本公开的另一方面提供了一种分布式微服务数据传输的装置,设置在次级服务器端中。
[0163] 图14示意性示出了根据本公开另一实施例的分布式微服务数据传输的装置的框图。
[0164] 如图14所示,上述装置1400可以包括分布式数据请求接收模块1410、分布式数据请求响应模块1420和请求结果返回模块1430。
[0165] 分布式数据请求接收模块1410用于接收来自主控服务器端的分布式数据请求。
[0166] 分布式数据请求响应模块1420用于响应于分布式数据请求,如果分布式数据请求的请求头中包括来源令牌和会话令牌,会话令牌包括会话标识,则基于会话标识从指定存储空间中获取身份验证信息中至少部分验证信息进行验证,指定存储空间包括由主控服务器端实现关联存储地至少部分验证信息和会话标识。
[0167] 请求结果返回模块1430用于在验证成功后返回与分布式数据请求对应的请求结果,其中,请求结果包括令牌串和加密后的目标数据,以便主控服务器端基于令牌串对加密后的目标数据进行篡改检测,令牌串至少基于来源令牌和会话标识生成的。
[0168] 本公开的另一方面提供了一种分布式微服务数据传输的系统。
[0169] 图15示意性示出了根据本公开实施例的分布式微服务数据传输系统的方框图。
[0170] 如图15所示,该系统可以包括:客户端、网关、主控服务器端和次级服务器端。
[0171] 具体地,该系统可以包括静态资源服务器Nginx,网关Gateway路由拦截系统,用户登录与验证系统,主控系统,各地次级数据存储系统。
[0172] 其中,网关用于接收源自客户端的数据请求,数据请求包括身份验证信息和请求对象信息;响应于数据请求,给数据请求的请求头添加来源令牌和会话标识,得到封装后数据请求;发送封装后数据请求给主控服务器端。
[0173] 主控服务器端用于响应于封装后数据请求,如果封装后数据请求的请求头包括表征来自网关的来源令牌,则对身份验证信息进行验证,并且在指定存储空间中关联地存储会话标识和身份验证信息中至少部分验证信息;如果验证成功,则在封装后数据请求的请求头中设置会话令牌,得到分布式数据请求,并且将分布式数据请求发送给次级服务器端。
[0174] 次级服务器端用于响应于分布式数据请求,如果分布式数据请求的请求头中包括来源令牌和会话令牌,会话令牌包括会话标识,则对基于会话标识从指定存储空间中获取的身份验证信息中至少部分验证信息进行验证;在验证成功后返回与分布式数据请求对应的请求结果,其中,请求结果包括令牌串和加密后的目标数据,以便主控服务器端基于令牌串对加密后的目标数据进行篡改检测,令牌串至少基于来源令牌和会话标识生成的。
[0175] 图16示意性示出了根据本公开实施例的分布式微服务数据传输系统执行的逻辑图。
[0176] 如图16所示,框架的安全认证主要是结合分布式Session一致性与JWT协议的思想并结合加密算法本身定制化设计。如图5所示,请求到达Gateway后对转发的请求头进行包装添加tkn1参数。到达user‑servise后先验证请求来源的合法性,再添加保存Session ID信息的请求头tkn2,继续转发请求至主控系统,主控系统根据tkn1,tkn2判断请求的合法性,并通过读取Session信息进行对应用户权限的数据读取操作,转发请求至各地次级服务器端。各地次级服务器端对请求来源进行判断后,根据tkn2从redis读取Session信息sn1,将tkn1与sn1分别进行base64加密,再将其以tkn2为盐进行SHA256加密生成一串不可逆的数字签名sec1串。再对数据进行加密。最后将Base64加密后的tkn1与tkn2以及sec1一起组成JWT串并与加密后的数据进行组合传回主控系统。
[0177] 主控系统接收到响应后,解析出JWT串,经过Base64解密得到tkn1与tkn2,并通过tkn2从redis中获取Session信息sn2,再将base64加密后的tkn1与sn2以tkn2为盐生成一串数字签名信息sec2,将sec1与sec2进行对比,如果一致则表示该次链接是安全的。
[0178] 需要说明的是,装置、系统部分实施例中各模块/单元等的实施方式、解决的技术问题、实现的功能、以及达到的技术效果分别与方法部分实施例中各对应的步骤的实施方式、解决的技术问题、实现的功能、以及达到的技术效果相同或类似,在此不再一一赘述。
[0179] 根据本公开的实施例的模块、单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
[0180] 例如,数据请求接收模块1210、数据请求响应模块1220和封装后数据请求发送模块1230中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,数据请求接收模块1210、数据请求响应模块1220和封装后数据请求发送模块1230中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,数据请求接收模块1210、数据请求响应模块1220和封装后数据请求发送模块1230中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
[0181] 图17示意性示出了根据本公开实施例的电子设备的方框图。图17示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0182] 如图17所示,根据本公开实施例的电子设备1700包括处理器1701,其可以根据存储在只读存储器(ROM)1702中的程序或者从存储部分1708加载到随机访问存储器(RAM)1703中的程序而执行各种适当的动作和处理。处理器1701例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器1701还可以包括用于缓存用途的板载存储器。处理器1701可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
[0183] 在RAM 1703中,存储有电子设备1700操作所需的各种程序和数据。处理器1701、ROM 1702以及RAM 1703通过总线1704彼此通讯连接。处理器1701通过执行ROM 1702和/或RAM 1703中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,程序也可以存储在除ROM 1702和RAM 1703以外的一个或多个存储器中。处理器1701也可以通过执行存储在一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
[0184] 根据本公开的实施例,电子设备1700还可以包括输入/输出(I/O)接口1705,输入/输出(I/O)接口1705也连接至总线1704。电子设备1700还可以包括连接至I/O接口1705的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1707;包括硬盘等的存储部分1708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1709。通信部分1709经由诸如因特网的网络执行通信处理。驱动器1710也根据需要连接至I/O接口1705。可拆卸介质1711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1710上,以便于从其上读出的计算机程序根据需要被安装入存储部分1708。
[0185] 根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1709从网络上被下载和安装,和/或从可拆卸介质1711被安装。在该计算机程序被处理器1701执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
[0186] 本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
[0187] 根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 1702和/或RAM 1703和/或ROM 1702和RAM 1703以外的一个或多个存储器。
[0188] 本公开还提供了一种计算机程序,该计算机程序包括一个或者多个程序。上述方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1709从网络上被下载和安装,和/或从可拆卸介质1711被安装。在该计算机程序被处理器1701执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
[0189] 本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。