一种接口访问鉴权方法、装置及计算机可读介质
技术领域
本申请涉及互联网技术领域,尤其涉及一种接口访问鉴权方法、装置及计算机可读介质。
背景技术
对于一些大型公司或企业,随着公司或企业的业务快速发展,公司或企业会按照业务划分很多系统。这些系统之间通过接口相互访问,有时一个接口会被多个系统访问;但是,访问的过程中可能会对系统数据库中的数据进行更改,且无法定位是哪个系统操作;因此,可能会造成数据被非法篡改不能及时发现问题。从而对公司整理业务产生不可挽回的损失和影响。
发明内容
本申请实施例提供一种接口访问鉴权方法,可有效的解决接口在被多个系统访问时,该接口对应的系统数据库中的数据被非法篡改的问题。
第一方面,本申请实施例提供了一种接口访问鉴权方法,该方法包括:
接收系统的业务访问请求,获取所述系统的接口权限访问信息,所述业务访问请求包括目标服务的信息;
基于所述接口权限访问信息判断所述系统是否有访问所述目标服务的接口的权限;
若所述系统有访问所述目标服务的接口的权限,则将所述业务访问请求路由到所述目标服务。
作为一种可选的实施方式,所述接口权限信息包括所述系统的安全凭证信息;
在所述接收系统的访问请求之前,所述方法还包括:
接收所述系统的安全凭证申请请求;
为所述系统分配所述安全凭证。
作为一种可选的实施方式,所述安全凭证信息包括系统账号、秘钥以及随机数;
所述基于所述接口权限访问信息判断所述系统是否有访问所述目标服务的接口的权限,包括:
判断所述系统账号、秘钥以及随机数是否匹配;
若是,则判断缓存中是否存在所述随机数;
若不存在,则判断所述访问请求是否超时;
若否,则判断所述系统账号是否有访问权限;
若有,则判断所述业务访问请求中的统一资源定位符URL是否匹配;
若匹配则,确定所述系统有访问所述目标数据的接口的权限。
作为一种可选的实施方式,在所述将所述业务访问请求路由到所述目标服务之后,所述方法还包括:
根据所述访问请求生成访问日志;
保存所述访问日志。
第二方面,本申请实施例提供了一种接口访问鉴权装置,该接口访问鉴权装置包括:
获取单元,用于接收系统的业务访问请求,获取所述系统的接口权限访问信息,所述业务访问请求包括目标服务的信息;
判断单元,用于基于所述接口权限访问信息判断所述系统是否有访问所述目标服务的接口的权限;
路由单元,用于若所述系统有访问所述目标服务的接口的权限,则将所述业务访问请求路由到所述目标服务。
作为一种可选的实施方式,所述接口权限信息包括所述系统的安全凭证信息;
接收单元,用于接收所述系统的安全凭证申请请求;
分配单元,用于为所述系统分配所述安全凭证。
作为一种可选的实施方式,所述安全凭证信息包括系统账号、秘钥以及随机数;
所述判断单元,用于判断所述系统账号、秘钥以及随机数是否匹配;若是,则判断缓存中是否存在所述随机数;若不存在,则判断所述访问请求是否超时;若否,则判断所述系统账号是否有访问权限;若有,则判断所述业务访问请求中的URL是否匹配;若匹配则,确定所述系统有访问所述目标数据的接口的权限。
作为一种可选的实施方式,所述装置还包括:
生成单元,用于根据所述访问请求生成访问日志;
保存单元,用于保存所述访问日志。
第三方面,本申请实施例提供了另一种接口访问鉴权装置,包括处理器、存储器和通信模块,其中,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码来执行如第一方面所述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。
本申请实施例通过接收系统的业务访问请求,获取所述系统的接口权限访问信息,其中,所述业务访问请求包括目标服务的信息;然后基于所述接口权限访问信息判断所述系统是否有访问所述目标服务的接口的权限;若所述系统有访问所述目标数据的接口的权限,则将所述业务访问请求路由到所述目标服务。在本申请实施例中,在系统访问向系统数据库进行访问时,需要对该系统进行权限验证,验证该系统是否有访问系统数据库对应的接口的权限,当验证通过后才能通过接口对系统数据库进行访问。因此,可以有效的降低接口在被多个系统访问时,该接口对应的系统数据库中的数据被非法篡改的概率。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1是本申请实施例提供一种接口访问鉴权方法的示意流程图;
图2是本申请实施例提供的一种装置的示意框图;
图3是本申请实施例提供的一种设备;
图4是本申请实施例提供的一种服务器结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
在本申请实施例中,主要是通过zuul网关来实现对系统的业务访问请求进行鉴权的。
具体的,当zuul网关接收到来自系统(例如应用或网络)的业务访问请求时,首先获取该系统的接口权限访问信息,然后根据该接口权限访问信息判断该系统是否有具有访问权限,若有,则将该系统的业务访问请求转发至该业务访问请求的业务相关的目标服务。从而可以有效避免业务数据被非法篡改。
Zuul是Netflix开源的微服务网关,他可以和Eureka,Ribbon,Hystrix等组件配合使用。Zuul组件的核心是一系列的过滤器,这些过滤器可以完成以下功能:1.身份认证和安全:识别每一个资源的验证要求,并拒绝那些不符的请求;2.审查与监控;3.动态路由:动态将请求路由到不同后端集群;4.压力测试:逐渐增加指向集群的流量,以了解性能;5.负载分配:为每一种负载类型分配对应容量,并弃用超出限定值的请求;6.静态响应处理:边缘位置进行响应,避免转发到内部集群;7.多区域弹性:跨域AWS Region进行请求路由。
Zuul中定义了四种标准的过滤器类型,这些过滤器类型对应于典型的生命周期。PRE:这种过滤器在请求被路由之前调用。可利用其实现身份验证等;ROUTING:这种过滤器将请求路由到微服务,用于构建发送给微服务的请求,并使用Apache Http Client或者Netflix Ribbon请求微服务;POST:这种过滤器在路由到微服务以后执行,比如为响应添加标准的HTTP Header,收集统计信息和指标,将响应从微服务发送到客户端等;ERROR:在其他阶段发生错误时执行该过滤器;除了默认的过滤器类型,Zuul还允许创建自定义的过滤器类型。
Zuul具有聚合微服务的功能,在许多场景下,一个外部请求,可能需要查询Zuul后端多个微服务。比如说一个电影售票系统,在购票订单页上,需要查询电影微服务,还需要查询用户微服务获得当前用户信息。如果让系统直接请求各个微服务,即使Zuul转发,网络开销,流量耗费,时长都不是很好的。这时候我们就可以使用Zuul聚合微服务请求,即应用系统只发送一个请求给Zuul,由Zuul请求用户微服务和电影微服务,并把数据返给应用系统。
参见图1,图1是本申请实施例提供一种接口访问鉴权方法的示意流程图,如图所示该方法可包括:
101:接收系统的业务访问请求,获取所述系统的接口权限访问信息,所述业务访问请求包括目标服务的信息。
本申请实施例主要应用于大型公司或企业中网关对各个不同系统对应的接口的接口访问鉴权。上述网关可以采用zuul网关。
其中,上述业务访问请求,可以是企业或公司的外部系统的请求,也可以是企业或公司的各个系统之间的内部请求。上述目标服务是指与上述业务访问请求对应的目标微服务。
微服务是万维网(web)服务的细化,是web服务的升级版,微服务比web服务更加灵活。目标微服务为用户需要访问的微服务。可选的,目标微服务的信息包括微服务名和/或微服务的域名(即微服务的请求路径)等等。web前端通过约定的格式访问服务器,即web前端将访问请求按照约定的格式发送给服务器。约定的格式可以通过请求地址来区别,例如,约定的格式为:/微服务名/实际请求路径。在接收到业务访问请求时,服务器获取对应的接口访问权限信息。在一个实施例中,上述接口权限访问信息可以包括上述系统的安全凭证信息。其中,上述安全凭证信息可以包括系统账号、秘钥以及随机数。此外上述接口权限访问信息还可以包括上述系统对上述接口对应的系统数据的一些具体操作权限;例如,对数据的更新、删除、添加等权限。
所述服务器可以将接口访问权限信息存储到外部指定位置,例如,分布式session池中等等。其中,在计算机中,尤其是在网络应用中,session称为“会话控制”,session对象存储特定用户会话所需的属性及配置信息,session的作用就是它在web服务器上保持用户的状态信息供在任何时间从任何设备上的页面进行访问。那么,在一个实施例中,所述获取所述用户的接口访问权限信息,包括:从分布式session池中获取所述用户的接口访问权限信息。
应当理解的是,如果不考虑服务器内存压力等问题,也可以将接口访问权限信息存储在服务器内部的指定位置,服务器可以从该内部的指定位置中直接读取接口访问权限信息。
作为一种可选的实施方式,在上述接收系统的访问请求之前,接口管理平台接收所述系统的安全凭证申请请求;当上述接口管理平台接收到上述安全凭证申请请求后,便为所述系统分配所述安全凭证。
102:基于所述接口权限访问信息判断所述系统是否有访问所述目标服务的接口的权限。
在本申请实施例中,当网关获取到上述系统的接口权限访问信息后,便根据上述接口权限访问信息判断所述系统是否有访问所述目标服务的接口的权限;若判断上述系统有访问所述目标数据的接口的权限则执行步骤103;若判断上述系统没有访问所述目标数据的接口的权限,则结束。
具体的,当网关获取到上述系统的接口权限访问信息后,首先判断所述系统账号、秘钥以及随机数是否匹配;若所述系统账号、秘钥以及随机数不匹配,则结束;若所述系统账号、秘钥以及随机数匹配,则判断缓存中是否存在所述随机数;若缓存中存在所述随机数,则表明该访问请求是重复的,则结束该访问请求;若缓存中不存在所述随机数,则判断所述访问请求是否超时;若所述访问请求超时,则结束;若所述访问请求没有超时,则判断所述系统账号是否有访问权限;若所述系统账号没有访问权限,则结束;若所述系统账号有访问权限,则判断所述业务访问请求中的统一资源定位符(Uniform Resource Locator,URL)是否匹配;若不匹配,则结束;若匹配,则确定所述系统有访问所述目标数据的接口的权限。
103:若所述系统有访问所述目标数据的接口的权限,则将所述业务访问请求路由到所述目标服务。
在本申请实施例中,当上述网关判断上述系统具有访问上述目标服务的接口权限时,则将上述业务访问请求路由到上述目标服务,即将上述业务访问请求转发给上述目标服务。
作为一种可选的实施方式,当上述网关将上述业务访问请求路由到上述目标服务之后,上述网关根据上述业务访问请求生成访问日志,并保存上述访问日志。
上述访问日志包括但不限于上述系统的系统标识、时间戳、上述业务访问请求对应的目标服务、上述业务访问请求对应的业务数据以及所述系统对业务数据的操作等。保存上述访问日志可以使得在某个接口被多个系统访问的情况下,可以根据上述访问日志跟踪系统对接口数据的调用、修改以及删除等操作,以便在业务数据出现问题时,可以定位业务数据被哪个系统修改。
可以看出,本申请实施例通过接收系统的业务访问请求,获取所述系统的接口权限访问信息,其中,所述业务访问请求包括目标服务的信息;然后基于所述接口权限访问信息判断所述系统是否有访问所述目标服务的接口的权限;若所述系统有访问所述目标数据的接口的权限,则将所述业务访问请求路由到所述目标服务。在本申请实施例中,在系统访问向系统数据库进行访问时,需要对该系统进行权限验证,验证该系统是否有访问系统数据库对应的接口的权限,当验证通过后才能通过接口对系统数据库进行访问。因此,可以有效的降低接口在被多个系统访问时,该接口对应的系统数据库中的数据被非法篡改的概率。
本申请实施例还提供一种装置,该装置用于执行前述任一项所述的方法的单元。具体地,参见图2,图2是本申请实施例提供的一种装置的示意框图。本实施例的装置包括:获取单元210、判断单元220以及路由单元230。
获取单元210,用于接收系统的业务访问请求,获取所述系统的接口权限访问信息,所述业务访问请求包括目标服务的信息;
判断单元220,用于基于所述接口权限访问信息判断所述系统是否有访问所述目标服务的接口的权限;
路由单元230,用于若所述系统有访问所述目标数据的接口的权限,则将所述业务访问请求路由到所述目标服务。
作为一种可选的实施方式,所述接口权限信息包括所述系统的安全凭证信息;
接收单元,用于接收所述系统的安全凭证申请请求;
分配单元,用于为所述系统分配所述安全凭证。
作为一种可选的实施方式,所述安全凭证信息包括系统账号、秘钥以及随机数;
所述判断单元220,用于判断所述系统账号、秘钥以及随机数是否匹配;若是,则判断缓存中是否存在所述随机数;若不存在,则判断所述访问请求是否超时;若否,则判断所述系统账号是否有访问权限;若有,则判断所述业务访问请求中的URL是否匹配;若匹配则,确定所述系统有访问所述目标数据的接口的权限。
作为一种可选的实施方式,所述装置还包括:
生成单元,用于根据所述访问请求生成访问日志;
保存单元,用于保存所述访问日志。
可以看出,本申请实施例通过接收系统的业务访问请求,获取所述系统的接口权限访问信息,其中,所述业务访问请求包括目标服务的信息;然后基于所述接口权限访问信息判断所述系统是否有访问所述目标服务的接口的权限;若所述系统有访问所述目标数据的接口的权限,则将所述业务访问请求路由到所述目标服务。在本申请实施例中,在系统访问向系统数据库进行访问时,需要对该系统进行权限验证,验证该系统是否有访问系统数据库对应的接口的权限,当验证通过后才能通过接口对系统数据库进行访问。因此,可以有效的降低接口在被多个系统访问时,该接口对应的系统数据库中的数据被非法篡改的概率。
参见图3,图3是本申请实施例提供的一种设备,该设备可以为服务器,如图3所示设备包括:一个或多个处理器301;一个或多个输入设备302,一个或多个输出设备303和存储器304。上述处理器301、输入设备302、输出设备303和存储器304通过总线305连接。存储器302用于存储指令,处理器301用于执行存储器302存储的指令。
其中,该设备作为服务器使用的情况下,处理器301用于:接收系统的业务访问请求,获取所述系统的接口权限访问信息,所述业务访问请求包括目标服务的信息;基于所述接口权限访问信息判断所述系统是否有访问所述目标服务的接口的权限;若所述系统有访问所述目标数据的接口的权限,则将所述业务访问请求路由到所述目标服务。
应当理解,在本申请实施例中,所称处理器301可以是中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
输入设备302可以包括触控板、指纹采传感器(用于采集用户的指纹信息和指纹的方向信息)、麦克风等,输出设备303可以包括显示器(例如,液晶显示器Liquid CrystalDisplay,LCD)等)、扬声器等。
该存储器304可以包括只读存储器和随机存取存储器,并向处理器301提供指令和数据。存储器304的一部分还可以包括非易失性随机存取存储器。例如,存储器304还可以存储设备类型的信息。
具体实现中,本申请实施例中所描述的处理器301、输入设备302、输出设备303可执行本申请实施例提供的一种接口访问鉴权方法的第一实施例中所描述的实现方式、第二实施列以及第三实施例中的实现方式,也可执行本申请实施例所描述的服务器的实现方式,在此不再赘述。
在本申请的另一实施例中提供一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序被处理器执行时实现:接收系统的业务访问请求,获取所述系统的接口权限访问信息,所述业务访问请求包括目标服务的信息;基于所述接口权限访问信息判断所述系统是否有访问所述目标服务的接口的权限;若所述系统有访问所述目标数据的接口的权限,则将所述业务访问请求路由到所述目标服务。
上述计算机可读存储介质可以是前述任一实施例上述的终端的内部存储单元,例如终端的硬盘或内存。上述计算机可读存储介质也可以是上述终端的外部存储设备,例如上述终端上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,上述计算机可读存储介质还可以既包括上述终端的内部存储单元也包括外部存储设备。上述计算机可读存储介质用于存储上述计算机程序以及上述终端所需的其他程序和数据。上述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
图4是本申请实施例提供的一种服务器结构示意图,该服务器400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processingunits,CPU)422(例如,一个或一个以上处理器)和存储器432,一个或一个以上存储应用程序442或数据444的存储介质430(例如一个或一个以上海量存储设备)。其中,存储器432和存储介质430可以是短暂存储或持久存储。存储在存储介质430的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器422可以设置为与存储介质430通信,在服务器400上执行存储介质430中的一系列指令操作。
服务器400还可以包括一个或一个以上电源426,一个或一个以上有线或无线网络接口450,一个或一个以上输入输出接口458,和/或,一个或一个以上操作系统441,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由服务器所执行的步骤可以基于该图4所示的服务器结构。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、服务器、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、服务器和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例上述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。