请求转发方法、装置、设备及存储介质与流程

文档序号:23270283发布日期:2020-12-11 19:02阅读:103来源:国知局
请求转发方法、装置、设备及存储介质与流程

本发明涉及网络通信技术领域,尤其涉及一种请求转发方法、装置、设备及存储介质。



背景技术:

目前,很多应用程序或应用系统集成了第三方功能服务。实际应用中,第三方功能服务的供应商会将其服务接口提供给应用程序或应用系统以供调用。为了便于对接收到的服务调用请求进行统一管理,现有的方式是在应用程序或应用系统中设置一个网关,通过网关来对接收或发出的用户请求进行统一调度,但现有的调度方式并未从安全层面的对接收到的调用请求进行处理和转发,使得请求接收方的系统安全无法得到有效保障。

上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。



技术实现要素:

本发明的主要目的在于提供了一种请求转发方法、装置、设备及存储介质,旨在解决现有的调度方式未从安全层面的对接收到的调用请求进行针对性处理和转发,使得请求接收方的系统安全无法得到有效保障的技术问题。

为实现上述目的,本发明提供了一种请求转发方法,所述方法包括以下步骤:

接收服务调用请求,获取所述服务调用请求中包含的请求参数;

根据所述请求参数判断所述服务调用请求所属的请求类型;

在所述请求类型为内调外请求时,获取所述服务调用请求对应的请求账户信息;

将所述请求账户信息添加至所述请求参数中以得到新的服务调用请求,并对所述新的服务调用请求进行转发。

优选地,所述根据所述请求参数判断所述服务调用请求所属的请求类型的步骤之后,还包括:

在所述请求类型为外调内请求时,根据所述请求参数进行请求校验;

在校验通过时,获取预先配置的请求转发规则;

根据所述请求转发规则对所述请求参数进行匹配,在匹配成功时,对所述服务调用请求进行转发。

优选地,所述根据所述请求参数判断所述服务调用请求所属的请求类型的步骤,包括:

从所述请求参数中读取请求url信息,以及所述服务调用请求的发起者的地址信息;

检测所述地址信息中是否存在所述发起者的ip地址信息,若存在,则根据所述ip地址信息判断所述发起者是否属于内部发起者;

根据所述请求url信息判断所述发起者对应的调用对象是否属于内部对象;

在所述发起者属于内部发起者,且所述调用对象不属于内部对象时,判定所述服务调用请求所属的请求类型为内调外请求;

在所述发起者不属于内部发起者,且所述调用对象属于内部对象时,判定所述服务调用请求所属的请求类型为外调内请求。

优选地,所述在所述请求类型为外调内请求时,根据所述请求参数进行请求校验的步骤,包括:

在所述请求类型为外调内请求时,提取所述请求参数中包含的请求账户信息和请求url信息;

根据所述请求url信息确定所述服务调用请求的调用对象;

从所述请求账户信息中获取请求账户标识,根据所述请求账户标识在预设权限库中查找对应的调用对象列表;

根据所述调用对象列表对所述调用对象进行精确匹配;

在匹配成功时,判定校验通过,在匹配失败时,判定校验不通过。

优选地,所述在所述请求类型为外调内请求时,提取所述请求参数中包含的请求账户信息和请求url的步骤,包括:

在所述请求类型为外调内请求时,检测所述请求参数中是否包含ip地址信息;

根据所述ip地址信息对所述服务调用请求进ip校验;

在ip校验通过时,提取所述请求参数中包含的请求账户信息和请求url信息。

优选地,所述根据所述请求转发规则对所述请求参数进行匹配,在匹配成功时,对所述服务调用请求进行转发的步骤,包括:

获取所述请求转发规则中包含的规则字段,并从所述请求转发规则中读取所述规则字段对应的基准字段属性;

根据所述规则字段从所述请求参数中读取对应字段的当前字段属性,并对所述基准字段属性和所述当前字段属性进行匹配;

在匹配成功时,对所述服务调用请求进行转发。

优选地,所述将所述请求账户信息添加至所述请求参数中以得到新的服务调用请求,并对所述新的服务调用请求进行转发的步骤,包括:

从所述请求账户信息中提取请求账户标识;

根据所述请求参数中包含的当前请求方法确定所述请求账户标识的参数添加位置;

基于所述参数添加位置将所述请求账户标识添加至所述请求参数中以得到新的服务调用请求,并对所述新的服务调用请求进行转发。

此外,为实现上述目的,本发明还提出一种请求转发装置,所述请求转发装置包括:

请求接收模块,用于接收服务调用请求,获取所述服务调用请求中包含的请求参数;

类型确定模块,用于根据所述请求参数判断所述服务调用请求所属的请求类型;

信息获取模块,用于在所述请求类型为内调外请求时,获取所述服务调用请求对应的请求账户信息;

请求转发模块,用于将所述请求账户信息添加至所述请求参数中以得到新的服务调用请求,并对所述新的服务调用请求进行转发。

此外,为实现上述目的,本发明还提出一种请求转发设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的请求转发程序,所述请求转发程序配置为实现如上文所述的请求转发方法的步骤。

此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有请求转发程序,所述请求转发程序被处理器执行时实现如上文所述的请求转发方法的步骤。

本发明通过接收服务调用请求,获取服务调用请求中包含的请求参数;再根据请求参数判断服务调用请求所属的请求类型;在请求类型为内调外请求时,获取服务调用请求对应的请求账户信息;将请求账户信息添加至请求参数中以得到新的服务调用请求,并对新的服务调用请求进行转发。由于本发明是根据请求类型来决定请求的处理和转发方式,进而使得请求转发更具针对性,此外本发明对内调外请求进行账户信息的添加,能够保证请求接收方在接收到该服务调用请求时,根据请求中包含的账户信息进行安全性校验,保障了请求接收方所在系统的安全性和稳定性。

附图说明

图1是本发明实施例方案涉及的硬件运行环境的请求转发设备的结构示意图;

图2为本发明请求转发方法第一实施例的流程示意图;

图3为本发明请求转发方法第二实施例的流程示意图;

图4为本发明请求转发方法第三实施例的流程示意图;

图5为本发明请求转发装置第一实施例的结构框图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

参照图1,图1为本发明实施例方案涉及的硬件运行环境的请求转发设备结构示意图。

如图1所示,该请求转发设备可以包括:处理器1001,例如中央处理器(centralprocessingunit,cpu),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(wireless-fidelity,wi-fi)接口)。存储器1005可以是高速的随机存取存储器(randomaccessmemory,ram)存储器,也可以是稳定的非易失性存储器(non-volatilememory,nvm),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图1中示出的结构并不构成对请求转发设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、数据存储模块、网络通信模块、用户接口模块以及请求转发程序。

在图1所示的请求转发设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明请求转发设备中的处理器1001、存储器1005可以设置在请求转发设备中,所述请求转发设备通过处理器1001调用存储器1005中存储的请求转发程序,并执行本发明实施例提供的请求转发方法。

本发明实施例提供了一种请求转发方法,参照图2,图2为本发明请求转发方法第一实施例的流程示意图。

本实施例中,所述请求转发方法包括以下步骤:

步骤s10:接收服务调用请求,获取所述服务调用请求中包含的请求参数;

需要说明的是,本实施例方法的执行主体可以是一种网关设备,所谓网关(gateway),又称网间连接器、协议转换器,网关在网络层以上实现网络互连,是复杂的网络互连设备。本实施例中的网关设备可以是应用于外部服务系统(外部系统)和移动互联网服务集群(内部系统)所构成的网络架构中,该设备可以是具有请求转发、应用程序接口api调用控制、超时控制以及权限管理功能的网络模块,以下简称内外网关。

应理解的是,本实施例中内外网关接收到的服务调用请求可以是来自于外部系统发送的对内部系统中的对象进行调用的服务调用请求(即外调内请求),也可以是内部系统发起的对外部系统提供的数据/资源或接口的访问或调用请求(即内调外请求)。

本实施例中,所述请求参数可包括请求url、请求头、请求路径、请求方法所携带的参数或字段数据。内外网关在接收到服务调用请求时,可对请求进行解析然后获得这些请求参数。

步骤s20:根据所述请求参数判断所述服务调用请求所属的请求类型;

需要说明的是,由于内调外请求和外调内请求的安全需求不同,导致内外网关所执行的请求安全性验证操作也不相同。为了对服务调用请求进行准确合理的划分,然后针对性的进行安全校验,本实施例中可将所述请求类型划分为外调内请求和内调外请求,然后针对不同类型的请求执行不同的请求转发策略。

应理解的是,请求参数中通常携带有请求url信息,该信息可用于内外网关确定接收到的请求对应的访问对象或调用对象是内部对象还是外部对象。而确定请求是来自于系统内部还是来自外部系统,则可以通过请求发起者的信息来判断,例如ip地址信息、或请求发起者所在终端设备的mac地址信息,又或是其它能够用来确定请求发起者身份的信息。

在具体实现中,内外网关可根据请求参数中来判断服务调用请求所属的请求类型。

为了准确有效的对接收到的服务调用请求的请求类进行区分,作为上述步骤s20的一种实施方式,本实施例内外网关可从所述请求参数中读取请求url信息,以及所述服务调用请求的发起者的地址信息;然后检测所述地址信息中是否存在所述发起者的ip地址信息,若存在,则根据所述ip地址信息判断所述发起者是否属于内部发起者;再根据所述请求url信息判断所述发起者对应的调用对象是否属于内部对象;在所述发起者属于内部发起者,且所述调用对象不属于内部对象时,判定所述服务调用请求所属的请求类型为内调外请求;在所述发起者不属于内部发起者,且所述调用对象属于内部对象时,判定所述服务调用请求所属的请求类型为外调内请求。

当然,若地址信息中不存在发起者的ip地址信息时,内外网关还可以从请求参数中读取发起该服务调用请求的发起者对应的请求账户信息,然后根据该请求账户信息来判断所述发起者是否属于内部发起者。例如,可以根据请求账户信息中的账户id来进行内部发起者的判断。

步骤s30:在所述请求类型为内调外请求时,获取所述服务调用请求对应的请求账户信息;

需要说明的是,内外网关在根据请求参数判定出服务调用请求所属的请求类型为内调外请求时,表明该服务调用请求是由内外网关所在的内部系统向外部系统发送的请求。对于这类请求,由于是由系统内部发出,安全性相对较高,因而只需要保证外部系统在反馈相应的请求响应结果时,该请求响应结果的安全性能够得到保证即可。

本实施例内外网关为了能够保证请求响应结果的安全性,可通过对发出的内调外请求进行标记,然后在接收到请求响应结果时,同样根据其中携带的标记来进行安全性校验,从而保证内部系统的安全。

在具体实现中,内外网关可在判断出请求类型为内调外请求时,获取服务调用请求对应的请求账户信息,然后根据该请求账户信息对服务调用请求进行标记。

需要说明的是,所述请求账户信息可以是服务调用请求发起者当前登录账户的账户信息,如账户号、账户id等能够表征账户唯一性的标识信息。

步骤s40:将所述请求账户信息添加至所述请求参数中以得到新的服务调用请求,并对所述新的服务调用请求进行转发。

在具体实现中,为保证内部系统的安全,也便于外部系统对接收到的服务调用请求进行鉴权,本实施例中内外网关在获取到请求账户信息后,即可将请求账户信息添加至请求参数中,获得新的服务调用请求,然后再对新的服务调用请求进行转发。

进一步地,考虑到不同的请求方法对应的参数添加方式不同,例如请求方法为get方式的http请求,其参数添加方式可以是将待添加的参数字段写入到请求头中;而对于请求方法为post方式的http请求,其参数添加方式可以是将待添加的参数字段写入到请求体中。

因此,本实施例内外网关在将请求账户信息添加至请求参数中所采用的方式可以是:从所述请求账户信息中提取请求账户标识;然后根据所述请求参数中包含的当前请求方法确定所述请求账户标识的参数添加位置(即请求头或请求体);再基于所述参数添加位置将所述请求账户标识添加至所述请求参数中以得到新的服务调用请求,并对所述新的服务调用请求进行转发。

本实施例通过接收服务调用请求,获取服务调用请求中包含的请求参数;再根据请求参数判断服务调用请求所属的请求类型;在请求类型为内调外请求时,获取服务调用请求对应的请求账户信息;将请求账户信息添加至请求参数中以得到新的服务调用请求,并对新的服务调用请求进行转发。由于本实施例是根据请求类型来决定请求的处理和转发方式,进而使得请求转发更具针对性,此外本实施例对内调外请求进行账户信息的添加,能够保证请求接收方在接收到该服务调用请求时,根据请求中包含的账户信息进行安全性校验,保障了请求接收方所在系统的安全性和稳定性。

参考图3,图3为本发明请求转发方法第二实施例的流程示意图。

基于上述第一实施例,在本实施例中,所述步骤s20之后,所述方法还包括:

步骤s30':在所述请求类型为外调内请求时,根据所述请求参数进行请求校验;

需要说明的是,内外网关在根据请求参数判定出服务调用请求所属的请求类型为外调内请求时,表明该服务调用请求是由外部系统向内外网关所在的内部系统发送的请求。对于这类请求,由于是由外部系统发出,安全性无法得到保证,因而需要对这类请求进行安全性校验,即所述请求校验。

在具体实现中,内外网关在判断出服务调用请求的请求类型为外调内请求时,即可根据请求参数中包含的请求账户信息和请求url信息进行请求校验。

具体的,在所述请求类型为外调内请求时,内外网关可提取所述请求参数中包含的请求账户信息和请求url信息;然后根据所述请求url信息确定所述服务调用请求的调用对象;再从所述请求账户信息中获取请求账户标识,根据所述请求账户标识在预设权限库中查找对应的调用对象列表;然后根据所述调用对象列表对所述调用对象进行精确匹配;在匹配成功时,判定校验通过,在匹配失败时,判定校验不通过。

需要说明的是,所述调用对象的确定方式可以是根据请求url信息携带的url地址中包含的域名字段和路径字段来确定服务调用请求所要访问的对象,即确定所要访问的数据/信息/网络资源。所述调用对象列表,即记录有调用对象的标识信息(例如名称、路径)和拥有该调用对象的访问权限的请求账户的账户标识之间的对应关系。所谓精确匹配,即精确匹配检索,是指检索词与数据库中某一字段完全相同的检索方式,本实施例采用精确匹配检索可以保证校验结果的准确性。

进一步地,对于外调内请求,为了保证内部系统的安全性,本实施例中内外网关在检测到所述请求类型为外调内请求时,将优先检测所述请求参数中是否包含ip地址信息;若存在,则根据所述ip地址信息对所述服务调用请求进ip校验;然后在ip校验通过时,提取所述请求参数中包含的请求账户信息和请求url信息,再根据这些信息进行上述请求校验。

步骤s40':在校验通过时,获取预先配置的请求转发规则;

需要说明的是,对于每一个待转发的请求,内外网关都会从数据库或内部系统预设的配置中心读取为请求的发起者预先配置的请求转发规则,然后针对规则中定义的规则字段,例如请求方法、请求路径、请求头等字段对当前接收到的请求所对应的请求参数进行一一匹配,若均匹配成功,则进行转发,反之则报错。

应理解的是,对于外调内请求而言,不同外部系统发出的外调内请求可能具有各自的系统特性,这些系统特性使得请求不一定符合内部系统的请求解析要求,因此为了保证内部系统能够顺利的对这类请求进行解析,需要内外网关按照预先配置的请求转发规则对接收到的服务调用请求进行规范后再进行转发。实际应用中可针对不同的外部系统分别配置相应的请求转发规则。

在具体实现中,内外网关可在请求校验通过时,根据请求参数中包含的请求账户信息先确定请求的发起者所属的外部系统,然后获取对应的请求转发规则。

步骤s50':根据所述请求转发规则对所述请求参数进行匹配,在匹配成功时,对所述服务调用请求进行转发。

需要说明的是,本实施例请求转发规则中规定了对时间、cookie、请求头、请求方法以及请求路径的要求。内外网关在获取到服务调用请求的请求参数时,将根据请求转发规则对请求参数进行匹配,在匹配成功时,再对服务调用请求进行转发。

本实施例在所述请求类型为外调内请求时,根据请求参数进行请求校验;在校验通过时,获取预先配置的请求转发规则,然后根据请求转发规则对请求参数进行匹配,在匹配成功时,对服务调用请求进行转发,能够保证接收到的每一个外调内请求都不会影响内部系统的安全性,也能够保证内部系统对请求的顺利响应。

参考图4,图4为本发明请求转发方法第三实施例的流程示意图。

基于上述各实施例,在本实施例中,所述步骤s50'可包括:

步骤s501':获取所述请求转发规则中包含的规则字段,并从所述请求转发规则中读取所述规则字段对应的基准字段属性;

可理解的是,所述规则字段即预先定义的需要对请求参数进行规范的基准字段,例如时间字段、cookie字段、请求头字段、请求方法字段以及请求路径字段,相应地,所述基准字段属性,即字段需要满足的条件或要求。例如时间字段的类型可以是:timestamp和time,其中,timestamp对应的基准字段属性可以是字段格式必须是yyyymmddhhmmss(年月日时分秒),time对应的基准字段属性可以是字段格式必须是hh:mm:ss(时:分:秒)等。即规则字段决定了请求参数中哪些请求参数需要被规范化,而基准字段属性则给出了这些字段被规范化后的具体形式。

步骤s502':根据所述规则字段从所述请求参数中读取对应字段的当前字段属性,并对所述基准字段属性和所述当前字段属性进行匹配;

在具体实现中,内外网关在获取到请求转发规则中包含的规则字段后,即可根据这些规则字段对号入座,从请求参数中读取相应字段的当前字段属性,然后根据基准字段属性对当前字段属性进行匹配校验,以检测是否存在基准字段属性和当前字段属性不一致的地方。

步骤s503':在匹配成功时,对所述服务调用请求进行转发。

在具体实现中,若基准字段属性和当前字段属性均一致或当期字段属性均符合基准字段属性的要求,则认定匹配成功,此时内外网关即可对服务调用请求进行转发。

本实施例通过获取请求转发规则中包含的规则字段,并从请求转发规则中读取规则字段对应的基准字段属性;根据规则字段从请求参数中读取对应字段的当前字段属性,并对基准字段属性和所述当前字段属性进行匹配;在匹配成功时,对服务调用请求进行转发,能够保证转发的请求均能符合外部系统的请求处理需求和安全需求。

此外,本发明实施例还提出一种存储介质,所述存储介质上存储有请求转发程序,所述请求转发程序被处理器执行时实现如上文所述的请求转发方法的步骤。

参照图5,图5为本发明请求转发装置第一实施例的结构框图。

如图5所示,本发明实施例提出的请求转发装置包括:

请求接收模块501,用于接收服务调用请求,获取所述服务调用请求中包含的请求参数;

类型确定模块502,用于根据所述请求参数判断所述服务调用请求所属的请求类型;

信息获取模块503,用于在所述请求类型为内调外请求时,获取所述服务调用请求对应的请求账户信息;

请求转发模块504,用于将所述请求账户信息添加至所述请求参数中以得到新的服务调用请求,并对所述新的服务调用请求进行转发。

本实施例通过接收服务调用请求,获取服务调用请求中包含的请求参数;再根据请求参数判断服务调用请求所属的请求类型;在请求类型为内调外请求时,获取服务调用请求对应的请求账户信息;将请求账户信息添加至请求参数中以得到新的服务调用请求,并对新的服务调用请求进行转发。由于本实施例是根据请求类型来决定请求的处理和转发方式,进而使得请求转发更具针对性,此外本实施例对内调外请求进行账户信息的添加,能够保证请求接收方在接收到该服务调用请求时,根据请求中包含的账户信息进行安全性校验,保障了请求接收方所在系统的安全性和稳定性。

基于本发明上述请求转发装置第一实施例,提出本发明请求转发装置的第二实施例。

在本实施例中,所述请求转发模块504,还用于在所述请求类型为外调内请求时,根据所述请求参数进行请求校验;在校验通过时,获取预先配置的请求转发规则;根据所述请求转发规则对所述请求参数进行匹配,在匹配成功时,对所述服务调用请求进行转发。

作为一种实施方式,所述类型确定模块502,还用于从所述请求参数中读取请求url信息,以及所述服务调用请求的发起者的地址信息;检测所述地址信息中是否存在所述发起者的ip地址信息,若存在,则根据所述ip地址信息判断所述发起者是否属于内部发起者;根据所述请求url信息判断所述发起者对应的调用对象是否属于内部对象;在所述发起者属于内部发起者,且所述调用对象不属于内部对象时,判定所述服务调用请求所属的请求类型为内调外请求;在所述发起者不属于内部发起者,且所述调用对象属于内部对象时,判定所述服务调用请求所属的请求类型为外调内请求。

作为一种实施方式,所述请求转发模块504,还用于在所述请求类型为外调内请求时,提取所述请求参数中包含的请求账户信息和请求url信息;根据所述请求url信息确定所述服务调用请求的调用对象;从所述请求账户信息中获取请求账户标识,根据所述请求账户标识在预设权限库中查找对应的调用对象列表;根据所述调用对象列表对所述调用对象进行精确匹配;在匹配成功时,判定校验通过,在匹配失败时,判定校验不通过。

作为一种实施方式,所述请求转发模块504,还用于在所述请求类型为外调内请求时,检测所述请求参数中是否包含ip地址信息;根据所述ip地址信息对所述服务调用请求进ip校验;在ip校验通过时,提取所述请求参数中包含的请求账户信息和请求url信息。

作为一种实施方式,所述请求转发模块504,还用于获取所述请求转发规则中包含的规则字段,并从所述请求转发规则中读取所述规则字段对应的基准字段属性;根据所述规则字段从所述请求参数中读取对应字段的当前字段属性,并对所述基准字段属性和所述当前字段属性进行匹配;在匹配成功时,对所述服务调用请求进行转发。

作为一种实施方式,所述请求转发模块504,还用于从所述请求账户信息中提取请求账户标识;根据所述请求参数中包含的当前请求方法确定所述请求账户标识的参数添加位置;基于所述参数添加位置将所述请求账户标识添加至所述请求参数中以得到新的服务调用请求,并对所述新的服务调用请求进行转发。

本发明请求转发装置的其他实施例或具体实现方式可参照上述各方法实施例,此处不再赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器/随机存取存储器、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1