鉴权方法、装置、计算机可读存储介质和鉴权系统与流程

文档序号:11410956阅读:164来源:国知局
鉴权方法、装置、计算机可读存储介质和鉴权系统与流程

本申请涉及通讯技术领域,尤其涉及一种鉴权方法、装置、计算机可读存储介质和鉴权系统。



背景技术:

系统服务是指执行指定系统功能的程序、例程或进程,以便支持其他程序。然而,在现今互联网行业中,无论是内部服务还是外部服务,都没有提供安全的机制对其进行封装和保护,服务资源可以被任意调用,导致存在严重的安全隐患。



技术实现要素:

有鉴于此,本申请提供一种鉴权方法、装置、计算机可读存储介质和鉴权系统,通过向服务提供安全的机制以解决因服务资源可被任意调用导致的安全隐患问题。

为实现上述目的,本申请提供技术方案如下:

根据本申请的第一方面,提出了一种鉴权系统,包括:客户端、服务端和安全平台;

所述客户端向所述安全平台发送调用请求,所述调用请求用于向服务端调用服务;

所述安全平台对所述客户端进行鉴权,以确定所述客户端是否有调用所述服务的权限;并在所述客户端鉴权成功后,向所述服务端转发所述调用请求;

所述服务端响应所述调用请求并调用所述服务。

根据本申请的第二方面,提出了一种鉴权方法,应用于安全平台;所述方法包括:

接收客户端发送的调用请求,所述调用请求用于向服务端调用服务;

对所述客户端进行鉴权,以确定所述客户端是否有调用所述服务的权限;

在所述客户端鉴权成功后,向所述服务端转发所述调用请求,以使得所述服务端响应所述调用请求并调用所述服务。

根据本申请的第三方面,提出了一种鉴权装置,应用于安全平台;所述装置包括:

接收单元,接收客户端发送的调用请求,所述调用请求用于向服务端调用服务;

鉴权单元,对所述客户端进行鉴权,以确定所述客户端是否有调用所述服务的权限;

转发单元,在所述客户端鉴权成功后,向所述服务端转发所述调用请求,以使得所述服务端响应所述调用请求并调用所述服务。

根据本申请的第四方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述技术方案中任一项所述方法的步骤。

由以上技术方案可见,本申请通过安全平台对调用服务的客户端进行鉴权,从而保证仅具有调用该服务的权限的客户端才能对该服务进行调用,提高了安全性;同时,鉴权操作由安全平台执行,有利于对客户端的权限进行统一管理,提升了管理效率。

附图说明

图1是相关技术中调用服务的流程图。

图2是相关技术中采用网关方式统一调用服务的示意图。

图3是本申请一示例性实施例示出的一种鉴权方法的流程图。

图4是本申请一示例性实施例示出的一种网络架构的示意图。

图5是本申请一示例性实施例示出的另一种鉴权方法的流程图。

图6是本申请一示例性实施例示出的安全平台记录的服务与客户端之间对应关系的示意图。

图7是本申请一示例性实施例示出的采用证书方式进行鉴权的流程图。

图8是本申请一示例性实施例示出的一种电子设备的结构示意图。

图9是本申请一示例性实施例示出的一种鉴权装置的框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

应用中往往包含多个服务(比如,应用“支付宝”中包含付款、转账、提现等服务),而在相关技术中,实现服务的调用基于服务与服务之间。请参见图1,图1是相关技术中调用服务的流程图,如图1所示,其调用过程可以包括以下步骤:

步骤102,服务a将请求参数按照预设算法进行加密生成securitykey值。

其中,假定为服务a调用服务b,即服务a为服务调用方。以下将securitykey值简称为sk值。

步骤104,服务a向服务b发送调用请求。

其中,调用请求中包含请求参数和sk值。

步骤106,服务b接收到调用请求后,读取调用请求中的请求参数并按照上述预设算法对其进行加密生成newsk值。

步骤108,比较newsk值和sk值是否相等。

步骤110,当newsk值和sk值相等时,确定调用请求合法并向服务a返回相关数据。

同时,相关技术中采用网关方式统一调用服务,下面结合图2对该方式进行说明。如图2所示,比如共有服务1-6,那么各个服务之间通过网关来实现服务的调用,由网关来统一转发调用请求。

可见,相关技术中存在以下缺陷:

1、不能对服务的调用进行管控

只要预设算法不变服务a就可以无限制的调用服务b,而当需要限制服务a对服务b的调用时,只能更改预设算法;但是更改算法后,其他服务也不能调用服务b了,导致不能对服务的调用进行管控,存在严重的安全隐患;

2、存在单点故障的问题

由图2的示意图可知,一旦网关出现故障,将导致系统中的各个服务之间均不能实现调用,即单个点发生故障的时候会波及到整个系统,从而导致整个系统瘫痪,降低了系统的稳定性、安全性。

因此,本申请通过改进调用服务的方式,以解决相关技术中存在的上述缺陷。为对本申请进行进一步说明,提供下列实施例:

图3是本申请一示例性实施例示出的一种鉴权方法的流程图,该方法应用于安全平台,可以包括以下步骤:

步骤302,接收客户端发送的调用请求。

在本实施例中,本申请基于应用与应用之间实现服务的调用,即由应用来调用另一应用中的某一服务。例如,当“支付宝”使用服务“提现”时,需要调用其绑定的银行的服务“存款”,则由“支付宝”向该银行请求调用“存款”服务。其中,服务调用方为客户端,服务提供方为服务端,所述调用请求用于向服务端调用服务。

步骤304,对所述客户端进行鉴权,以确定所述客户端是否有调用所述服务的权限。

在本实施例中,一方面客户端侧的用户可以通过登录安全平台来申请调用服务;另一方面服务端的用户可以通过登录安全平台来对客户端的申请进行审核。安全平台在客户端通过审核后,记录该客户端申请调用的服务与该客户端的标识信息的对应关系。其中,所述对应关系存储于zookeeper集群服务器中。

基于上述审核机制,安全平台可以在接收到客户端发送的调用请求(包含所述客户端的标识信息)后,调取预先记录的所述服务与可调用所述服务的客户端的对应关系,并根据所述标识信息和所述对应关系,确定所述客户端是否有调用所述服务的权限;其中,当所述客户端有调用所述服务的权限时,判定所述客户端鉴权成功。通过对服务调用方(即客户端)进行鉴权,判断其是否具有调用该服务的权限,一方面可以提高调用服务的安全性,防止服务被恶意调用;另一方面可以防止服务资源被任意调用,从而避免因无限制调用服务导致占用服务端大量处理资源的问题,提高了服务端的性能。

在本实施例中,当检测到针对所述客户端调用所述服务的停用操作(可以由服务端侧的用户登录安全平台来执行该停用操作)时,删除所述客户端的标识信息与所述服务的对应关系。由于该对应关系被删除,当后续所述客户端向服务端请求调用所述服务时,安全平台将判定所述客户端鉴权失败,即所述客户端将不能调用所述服务。安全平台通过上述响应停用操作的方式,可以进一步防止服务资源被任意调用(比如,服务端侧的用户可以通过登录安全平台修改上述对应关系来限制应用对服务的调用),从而避免因无限制调用服务导致占用服务端大量处理资源的问题,提高了服务端的性能。

步骤306,在所述客户端鉴权成功后,向所述服务端转发所述调用请求,以使得所述服务端响应所述调用请求并调用所述服务。

在本实施例中,可以采用加密算法对请求参数进行加密生成签名,从而验证调用请求的合法性,以提高调用请求的安全性(比如防止其他应用冒充所述客户端非法调用服务)。具体的,所述调用请求中包含所述客户端的第一签名和请求参数,所述第一签名由客户端的安全密钥与所述请求参数按照预设算法计算得到;其中,所述安全密钥由所述安全平台预先颁发至客户端,所述请求参数用于获取所述服务端中相应的数据。

基于上述数据的配置,可以通过下述方式验证合法性:读取所述调用请求中的请求参数,并按照所述预设算法对本地记录的对应于所述客户端的安全密钥与读取的请求参数进行计算,以得到第二签名;若所述第一签名与所述第二签名相等,则执行转发所述调用请求的操作,以使得所述服务端向所述客户端返回相应的数据,否则拒绝执行转发操作。

由以上技术方案可见,在本申请的技术方案中,服务的调用基于应用与应用之间,一方面相比于相关技术中基于服务与服务之间的调用,可以实现对服务的调用进行管控,提高了调用服务的安全性,同时,鉴权操作由安全平台执行,有利于对服务调用方的权限进行统一管理,提升了管理效率;另一方面相比于相关技术中采用网关方式统一调用服务,各个应用之间调用服务的操作互不影响,从而实现了“去中心化”,即不存在单点故障的问题,提高了各个应用系统的稳定性、安全性。

为了便于理解,下面结合具体场景和附图对本申请的技术方案进行详细说明。图4是本申请一示例性实施例示出的一种网络架构的示意图。如图4所示,该网络架构可以包括安全平台、服务端、客户端以及网络。

安全平台可以包括控制台、软件组件、zookeeper集群服务器;其中,控制台可以用于向客户端、服务端颁发标识信息和安全密钥,以及审核调用服务的申请并在审核通过后记录该服务与客户端的对应关系;软件组件(以下简称为sdk.jar)可以用于对发送调用请求的客户端进行鉴权,以及验证该调用请求的合法性;zookeeper集群服务器可以用于存储上述控制台记录的对应关系,以及向各个客户端、服务端颁发的标识信息和安全密钥。另外,还可以在安全平台中植入dubbo框架,dubbo框架中引用sdk.jar来执行鉴权以及验证合法性的操作。

服务端和客户端均为应用,应用中可以包含多个服务。其中,服务调用方为客户端,服务提供方为服务端。

而对于安全平台、服务端、客户端之间进行交互的网络,可以包括多种类型的有线或无线网络。比如,网络可以包括公共交换电话网络(publicswitchedtelephonenetwork,pstn)、因特网、专用网络等,本申请并不对此进行限制。

可见,在本申请的技术方案的实施过程中,涉及到安全平台、服务端、客户端之间的三方数据交互;下面结合三方的交互过程,对本申请的技术方案进行描述。请参见图5,图5是本申请一示例性实施例示出的另一种鉴权方法的流程图。如图5所示,该方法应用于安全平台,可以包括以下步骤:

步骤502,客户端向安全平台发送注册请求。

步骤504,服务端向安全平台发送注册请求。

步骤506,安全平台生成相应的标识信息和安全密钥。

在本实施例中,作为服务调用方的应用为客户端,作为服务提供方的应用为服务端。例如,当应用1向应用2请求调用服务时,应用1作为客户端,应用2作为服务端;反之,当应用2向应用1请求调用服务时,应用2作为客户端,应用1作为服务端。

客户端和服务端在初始化运行时需要在安全平台上注册,以使得安全平台生成对应于客户端的标识信息和安全密钥,以及生成对应于服务端的标识信息和安全密钥。其中,标识信息可以为accesskey(或者为accesskeyid,以下简称为ak),安全密钥可以为securitykey(或者为secretaccesskey,以下简称为sk)。

步骤508,安全平台向服务端颁发该服务端的ak、sk。

步骤510,安全平台向客户端颁发该客户端的ak、sk。

步骤512,客户端向安全平台申请调用服务。

在本实施例中,客户端侧的用户可以通过登录安全平台来申请调用服务。

步骤514,安全平台审核接收到的调用服务的申请。

在本实施例中,服务端侧的用户(即服务端侧应用的管理员)可以通过登录安全平台来对客户端的申请进行审核。

步骤516,安全平台在客户端通过审核后,记录客户端申请调用的服务与该客户端的标识信息的对应关系。

在本实施例中,安全平台可以将颁发的ak、sk和记录的对应关系存储于zookeeper集群服务器中,从而统一服务,保证服务一致性。以下结合图6对安全平台记录的对应关系进行举例说明。图6是本申请一示例性实施例示出的安全平台记录的服务与客户端之间对应关系的示意图。如图6所示,应用1(标识信息为ak1)包含服务1、服务2、服务3。在应用1作为服务提供方时,服务1可被应用2(标识信息为ak2)、应用3(标识信息为ak3)、应用4(标识信息为ak4)调用;服务2可被应用2、应用4调用;服务3可被应用3、应用4、应用5(标识信息为ak5)调用。

在本实施例中,步骤502-516由安全平台中的控制台执行。

步骤518,客户端向安全平台发送调用请求。

步骤520,安全平台判断该客户端是否有调用所请求的服务的权限。

步骤522,安全平台验证调用请求的合法性。

在本实施例中,调用请求中包含客户端的ak、第一签名、请求参数(用于获取服务端中相应的数据);第一签名由客户端的sk和请求参数按照预设算法(比如md5、sha1、hmac等任意加密算法,本申请并不对此进行限制)计算得到。

安全平台可以在接收到客户端发送的调用请求后,调取上述步骤516中记录的对应关系,并根据调用请求中的ak和该对应关系,确定客户端是否有调用所述服务的权限;其中,当客户端有调用所述服务的权限时,判定客户端鉴权成功。通过对服务调用方(即客户端)进行鉴权,判断其是否具有调用该服务的权限,一方面可以提高调用服务的安全性,另一方面可以防止服务资源被任意调用,从而避免因无限制调用服务导致占用服务端大量处理资源的问题,提高了服务端的性能。

举例而言,承接于图6的对应关系,在一种情况下,假定应用2(此时作为客户端)请求调用服务3,则安全平台通过查找图6的对应关系可以确定应用2没有调用服务3的权限,即判定应用2鉴权失败;在另一种情况下,假定应用2请求调用服务2,则安全平台通过查找图6的对应关系可以确定应用2有调用服务2的权限,即判定应用2鉴权成功。

安全平台可以在执行完鉴权操作后,进一步验证调用请求的合法性,以提高调用请求的安全性(比如防止其他应用冒充所述客户端非法调用服务)。具体的,安全平台读取调用请求中包含的客户端的ak、第一签名、请求参数,再读取本地zookeeper集群服务器中存储的对应于该ak的sk,并按照上述预设算法对该sk和请求参数进行计算,以得到第二签名;若第一签名与第二签名相等,则执行向服务端转发调用请求的操作,以使得服务端向客户端返回相应的数据,否则拒绝执行转发操作。

步骤524,安全平台转发调用请求至服务端。

步骤526,服务端向客户端返回所调用服务的相应数据。

在本实施例中,当安全平台检测到针对客户端调用服务的停用操作时,删除客户端的ak与该服务的对应关系。由于该对应关系被删除,当后续该客户端向服务端请求调用该服务时,安全平台将判定该客户端鉴权失败,即该客户端将不能调用该服务。安全平台通过上述响应停用操作的方式,可以进一步防止服务资源被任意调用(比如,服务端侧的用户可以通过登录安全平台修改上述对应关系来限制应用对服务的调用),从而避免因无限制调用服务导致占用服务端大量处理资源的问题,提高了服务端的性能。

综上,在本申请的技术方案中,服务的调用基于应用与应用之间,一方面相比于相关技术中基于服务与服务之间的调用,可以实现对服务的调用进行管控,提高了调用服务的安全性,同时,鉴权操作由安全平台执行,有利于对服务调用方的权限进行统一管理,提升了管理效率;另一方面相比于相关技术中采用网关方式统一调用服务,各个应用之间调用服务的操作互不影响,从而实现了“去中心化”,即不存在单点故障的问题,提高了各个应用系统的稳定性、安全性。

在本申请的技术方案中,安全平台还可以应用于证书方式的鉴权。下面结合图7对该鉴权过程进行详细说明。如图7所示,该过程可以包括以下步骤:

步骤702,客户端向安全平台申请证书。

步骤704,服务端向安全平台申请证书。

步骤706,安全平台分别生成客户端的证书(包含服务端的公钥)、服务端的证书(包含客户端的公钥)。

步骤708,安全平台向服务端颁发服务端的证书。

步骤710,安全平台向客户端颁发客户端的证书。

在本实施例中,客户端接收到证书后,本地存储有自身的私钥和服务端的公钥;服务端接收到证书后,本地存储有自身的私钥和客户端的公钥。

步骤712,客户端根据自身的私钥对调用请求进行签名,并向服务端发送该调用请求。

步骤714,服务端根据本地存储的客户端的公钥,对接收到的调用请求进行验签。

步骤716,若验签成功,则向客户端返回相应的数据;否则拒绝该调用请求。

在本实施例中,当服务端向客户端请求调用服务时,其鉴权过程与上述过程类似,在此不再赘述。

在本申请的技术方案中,针对上述图5采用标识信息、安全密钥的鉴权方式,可以对标识信息和安全密钥进行生命周期管理,比如,定时更新各个应用的标识信息和安全密钥;针对图7采用证书鉴权的方式,也可以对证书进行生命周期管理,比如,申请证书、下载证书、更新证书、吊销证书、挂起证书、解挂证书等。通过上述生命周期管理机制,可以有效提高系统的安全性,防止服务被不合法的应用调用。

同时,当需要更新安全密钥时(比如,为了防止安全密钥泄露,或安全密钥已过期等),可以在预设时长内同时使用更新后的第一安全密钥和更新前的第二安全密钥,即该第一安全密钥和该第二安全密钥在预设时长内同时有效,采用该第一安全密钥和该第二安全密钥均可以通过上述步骤522中合法性的验证。而在预设时长之后,仅该第一安全密钥有效,该第二安全密钥失效。其中,预设时长可以根据实际情况灵活设置,本申请并不对此进行限制。针对标识信息、证书的更新方式,均可以采用上述方式进行更新,在此不再赘述。

图8示出了根据本申请的一示例性实施例的电子设备的结构示意图。请参考图8,在硬件层面,该电子设备包括处理器802、内部总线804、网络接口806、内存808以及非易失性存储器810,当然还可能包括其他业务所需要的硬件。处理器802从非易失性存储器810中读取对应的计算机程序到内存808中然后运行,在逻辑层面上形成鉴权装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

请参考图9,在软件实施方式中,该鉴权装置可以包括接收单元901、鉴权单元902和转发单元903。其中:

接收单元901,接收客户端发送的调用请求,所述调用请求用于向服务端调用服务;

鉴权单元902,对所述客户端进行鉴权,以确定所述客户端是否有调用所述服务的权限;

转发单元903,在所述客户端鉴权成功后,向所述服务端转发所述调用请求,以使得所述服务端响应所述调用请求并调用所述服务。

可选的,所述调用请求中包含所述客户端的标识信息;所述鉴权单元902具体用于:

调取预先记录的所述服务与可调用所述服务的客户端的对应关系;

根据所述标识信息和所述对应关系,确定所述客户端是否有调用所述服务的权限;其中,当所述客户端有调用所述服务的权限时,判定所述客户端鉴权成功。

可选的,所述对应关系存储于zookeeper集群服务器中。

可选的,还包括:

删除单元904,当检测到针对所述客户端调用所述服务的停用操作时,删除所述客户端的标识信息与所述服务的对应关系。

可选的,

所述调用请求中包含所述客户端的第一签名和请求参数,所述第一签名由客户端的安全密钥与所述请求参数按照预设算法计算得到;其中,所述安全密钥由所述安全平台预先颁发至客户端,所述请求参数用于获取所述服务端中相应的数据;

所述方法还包括:读取单元905,读取所述调用请求中的请求参数,并按照所述预设算法对本地记录的对应于所述客户端的安全密钥与读取的请求参数进行计算,以得到第二签名;若所述第一签名与所述第二签名相等,则执行转发所述调用请求的操作,以使得所述服务端向所述客户端返回相应的数据,否则拒绝执行转发操作。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由鉴权装置的处理器执行以完成上述方法,该方法可以包括:

接收客户端发送的调用请求,所述调用请求用于向服务端调用服务;

对所述客户端进行鉴权,以确定所述客户端是否有调用所述服务的权限;

在所述客户端鉴权成功后,向所述服务端转发所述调用请求,以使得所述服务端响应所述调用请求并调用所述服务。

可选的,所述调用请求中包含所述客户端的标识信息;所述对所述客户端进行鉴权,包括:

调取预先记录的所述服务与可调用所述服务的客户端的对应关系;

根据所述标识信息和所述对应关系,确定所述客户端是否有调用所述服务的权限;其中,当所述客户端有调用所述服务的权限时,判定所述客户端鉴权成功。

可选的,所述对应关系存储于zookeeper集群服务器中。

可选的,还包括:

当检测到针对所述客户端调用所述服务的停用操作时,删除所述客户端的标识信息与所述服务的对应关系。

可选的,

所述调用请求中包含所述客户端的第一签名和请求参数,所述第一签名由客户端的安全密钥与所述请求参数按照预设算法计算得到;其中,所述安全密钥由所述安全平台预先颁发至客户端,所述请求参数用于获取所述服务端中相应的数据;

所述方法还包括:读取所述调用请求中的请求参数,并按照所述预设算法对本地记录的对应于所述客户端的安全密钥与读取的请求参数进行计算,以得到第二签名;若所述第一签名与所述第二签名相等,则执行转发所述调用请求的操作,以使得所述服务端向所述客户端返回相应的数据,否则拒绝执行转发操作。

其中,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等,本申请并不对此进行限制。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

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