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

文档序号:14748513发布日期:2018-06-22 08:48阅读:117来源:国知局

本申请涉及信息安全技术领域,具体涉及一种鉴权方法、鉴权系统和计算机可读存储介质。



背景技术:

在微服务架构下,一个应用会被拆分成若干个微服务,系统中的各个微服务均可被独立部署,各个微服务之间是松耦合的。每个微服务都需要对访问进行鉴权以明确当前访问用户以及访问权限。同时,在微服务架构下,需要考虑外部应用接入的场景、用户和微服务之间的鉴权、微服务和微服务之间的鉴权等多种鉴权场景。

目前,用户(包括浏览器和APP)和微服务之间的鉴权方案已经非常成熟,在分布式多系统的环境下,以OAUTH 2.0为代表的安全协议也已经成为目前的行业标准。但对于大规模分布式系统所采用的微服务架构来说,由于软件系统结构的变化,一旦有恶意程序加入到整个微服务架构中,则可能利用微服务架构内部的调用接口完成非法或者越权操作,对微服务架构的内部安全产生威胁。



技术实现要素:

有鉴于此,本申请提供一种鉴权方法、鉴权系统和计算机可读存储介质,可以在微服务之间实现鉴权和授权,从而提高微服务架构的安全性,防止恶意程序入侵。

本申请第一方面,提供一种鉴权方法,包括:

调用终端向服务器发送请求信息和第一请求签名,所述第一请求签名通过调用终端私钥生成;

服务器接收所述请求信息和第一请求签名;

服务器根据所述请求信息和第一请求签名获取所述调用终端的地址;

服务器在检查到服务器内存储有调用终端调用目标终端的权限记录时,生成授权信息和第一授权签名,所述第一授权签名通过目标终端公钥生成;

服务器将所述授权信息和所述第一授权签名发送给调用终端;

调用终端接收所述服务器发送的授权信息和第一授权签名;

调用终端向目标终端发送调用请求,所述调用请求包括授权请求头、授权信息、第一授权签名和请求正文;

目标终端接收所述调用请求并根据所述授权信息生成第二授权签名;

若所述第一授权签名与所述第二授权签名相同,则所述目标终端执行处理所述请求正文。

优选地,所述服务器根据所述请求信息和第一请求签名获取所述调用终端的地址包括:

服务器根据所述请求信息获取调用终端公钥,并根据所述调用终端公钥生成第二请求签名;

若所述第一请求签名与所述第二请求签名相同,根据超文本传输协议获取所述调用终端的地址。

优选地,所述根据所述授权信息生成第二授权签名包括:

目标终端根据所述授权信息获取目标终端私钥,并根据所述目标终端私钥生成第二授权签名。

优选地,所述请求信息包括调用终端的标识、目标终端的标识和时间戳;

其中,所述时间戳为所述调用终端生成请求信息时的时间。

优选地,所述服务器根据所述请求信息获取调用终端公钥包括:

当所述时间戳与服务器当前时间的差值在时间阈值内时,根据所述调用终端的标识获取与所述调用终端私钥对应的调用终端公钥。

优选地,所述授权信息包括调用终端的标识、调用终端的地址、目标终端的标识和过期时间。

优选地,所述目标终端根据所述授权信息获取目标终端私钥包括:

当所述授权信息中的调用终端的地址与调用的远端地址相同,所述授权信息中的目标终端的标识与当前目标终端的标识相同,且目标终端的当前时间小于过期时间时,根据所述目标终端的标识获取目标终端私钥。

优选地,所述方法还包括:

在所述目标终端执行处理所述请求正文完成之后向所述调用终端发送所述调用请求;

调用终端接收并缓存所述目标终端发送的调用请求。

第二方面,提供一种鉴权系统,包括:

调用终端,用于向服务器发送请求信息和第一请求签名,接收所述服务器发送的授权信息和第一授权签名,向目标终端发送调用请求,所述第一请求签名通过调用终端私钥生成,所述调用请求包括授权请求头、授权信息、第一授权签名和请求正文;

服务器,用于接收所述请求信息和第一请求签名,根据所述请求信息和第一请求签名获取所述调用终端的地址,在检查到服务器内存储有调用终端调用目标终端的权限记录时,生成授权信息和第一授权签名,将所述授权信息和所述第一授权签名发送给调用终端,所述第一授权签名通过目标终端公钥生成;

目标终端,用于接收所述调用请求并根据所述调用请求生成第二授权签名,若所述第一授权签名与所述第二授权签名相同,则执行处理所述请求正文。

第三方面,提供一种计算机可读存储介质,其上存储计算机程序指令,所述计算机程序指令在被处理器执行时实现如上所述的方法。

本申请公开了一种鉴权方法、鉴权系统和计算机可读存储介质。鉴权方法包括调用终端向服务器发送请求信息和第一请求签名,服务器根据所述请求信息和第一请求签名获取所述调用终端的地址并在检查到服务器内存储有调用终端调用目标终端的权限记录时,生成授权信息和第一授权签名,然后将所述授权信息和所述第一授权签名发送给调用终端;调用终端向目标终端发送调用请求,目标终端根据所述授权信息生成第二授权签名;若所述第一授权签名与所述第二授权签名相同,则所述目标终端执行处理请求正文。本申请通过密钥对生成签名以实现微服务之间的鉴权和授权,从而提高整体架构的安全性。

附图说明

通过以下参照附图对本申请实施例的描述,本申请的上述以及其它目的、特征和优点将更为清楚,在附图中:

图1是本申请实施例的鉴权方法的流程示意图;

图2是本申请实施例的服务器获取调用终端地址的流程示意图;

图3是本申请实施例的电子设备的示意图。

具体实施方式

以下基于实施例对本申请进行描述,但是本申请并不仅仅限于这些实施例。在下文对本申请的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本申请。为了避免混淆本申请的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。

此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。

除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。

在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。

下面结合附图对本申请进行详细说明。

本申请实施例微服务架构包括多个微服务以及服务器。多个微服务可以是某一大型复杂软件应用中具体地某一功能服务。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。每个微服务可由不同团队独立开发,互不影响,加快推出市场的速度。例如,可以将航班预订应用划分为七个微服务进行实施。七个微服务分别为预定航班、时间表查询、计算票价、分配座位、管理奖励、更新客户以及调整库存。对于大规模分布式系统所采用的微服务架构来说,由于软件结构的变化,一旦有恶意程序加入到整个微服务架构中,则可能利用内部调用接口完成非法或者越权操作。

在本实施例中,鉴权系统包括调用终端、服务器和目标终端。服务器包括公钥存储单元、调用许可单元、授权单元。公钥存储单元用于存储多个终端的公钥,与多个终端的私钥一一对应。调用许可单元用于存储终端与终端之间的调用关系。授权单元用于存储和执行对请求信息的授权处理。

在本实施例中,为了改善微服务架构的内部安全,每一个独立的微服务都具有一个基于非对称加密算法的密钥对,其中,私钥存储在微服务内,公钥存储在服务器内。密钥对可以作为加解密密钥对或签名验签密钥对。

图1为本申请实施例的鉴权方法的流程示意图。如图1所示,所述鉴权方法包括:

步骤S110、调用终端向服务器发送请求信息和第一请求签名,所述第一请求签名通过调用终端私钥生成。

具体地,调用终端根据调用需求生成请求信息,并采用存储在调用终端内部的调用终端私钥对所述请求信息进行加密生成第一请求签名。然后将所述请求信息和第一请求签名发送给服务器。

其中,调用终端私钥是由服务器为所述调用终端分配的。在本实施例中,所述服务器与所述调用终端预设有一种加密算法,所述调用终端是按照预设的加密算法,采用调用终端私钥对所述请求信息进行加密,生成第一请求签名。可选地,加密算法可以为RSA算法、美国国家标准局提出的数据签名算法(Digital Signature Algorithm,DSA)等。其中,RSA算法是由Rivest、Shamir、Adleman三个发明者的名字命名而来。

其中,请求信息包括调用终端的标识、目标终端的标识以及时间戳。其中,调用终端的标识是用于标记调用终端。目标终端的标识是用于标记被调用的终端,服务器根据所述目标终端的标识进行授权。时间戳(timestamp)是一个能表示一份数据在某个特定时间之前已经存在的、完整的、可验证的数据,通常是一个字符序列,主要是为用户提供一份电子证据,以证明用户的某些数据的产生时间。在本实施例中,时间戳用于表示请求信息的产生时间。

步骤S120、服务器接收所述请求信息和第一请求签名。

服务器接收所述请求信息和第一请求签名,并将所述请求信息和第一请求签名进行存储和处理。

步骤S130、服务器根据所述请求信息和第一请求签名获取所述调用终端的地址。

具体地,如图2所示,服务器根据接收的请求信息和第一请求签名获取调用终端的地址包括:

步骤S131、服务器根据所述请求信息获取调用终端公钥,并根据所述调用终端公钥生成第二请求签名。

服务器在接收到请求信息后,判断请求信息中的时间戳与服务器当前时间的差值是否在时间阈值内时,以防止在服务器接收请求信息过程中,恶意程序加入请求信息中,对微服务架构造成安全隐患,同时,也可以过滤由于设备或网络的延时而接收重复数据进而导致重复授权操作,造成服务器运行压力加重。所述时间阈值可以根据服务器响应需求时间设定或者人为进行设置。

当所述时间戳与服务器当前时间的差值在时间阈值内时,服务器根据请求信息中的调用终端的标识在服务器内查询获取与所述调用终端私钥对应的调用终端公钥。所述服务器存储的调用终端公钥与所述调用终端相对应,且与所述调用终端存储的调用终端私钥相匹配。可选地,所述服务器可以将调用终端公钥与所述调用终端的标识进行对应保存。所述服务器在接收到请求信息后,查找与调用终端标识对应的调用终端公钥。

可选地,当所述时间戳与服务器当前时间的差值超过时间阈值时,则服务器确定所述请求信息不合法,停止对所述请求信息进行授权等操作。所述服务器可以向所述调用终端发请求信息不通过的消息,例如,时间过期。调用终端可以根据反馈信息重新向服务器发送请求信息进行授权。

进一步的,所述服务器采用存储的调用终端公钥对所述调用请求进行加密,生成第二请求签名。所述第二请求签名用于与接收到的第一请求签名进行比对,以确定调用终端是否合法。

步骤S132、若所述第一请求签名与所述第二请求签名相同,根据超文本传输协议获取所述调用终端的地址。

具体地,所述服务器将接收到的第一请求签名和生成的第二请求签名进行匹配,若所述第一请求签名与所述第二请求签名匹配一致,则所述服务器根据超文本传输协议(HTTP,HyperText Transfer Protocol)获取所述调用终端的地址。所述超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。

可选地,若所述第一请求签名和第二请求签名匹配不一致,则所述调用终端不合法,服务器停止对请求信息进行后续授权等处理。所述服务器可以向调用终端发送无效签名信息,标识第一请求签名无效。调用终端可以根据反馈信息重新向服务器发送请求信息和第一请求签名进行授权处理。

步骤S140、服务器在检查到服务器内存储有调用终端调用目标终端的权限记录时,生成授权信息和第一授权签名,所述第一授权签名通过目标终端公钥生成。

服务器在获取到调用终端的地址后,检查服务器的调用许可单元内是否存储有调用终端调用目标终端的权限记录。当服务器的调用许可单元内存储有调用终端调用目标终端的权限记录时,服务器根据请求信息生成授权信息。其中,所述授权信息包括调用终端的标识、调用终端的地址、目标终端的标识和过期时间。

以一个交易场景举例:订单微服务在完成订单后,需要调用账户微服务完成对账户的扣款操作。首先需要服务器授权中心首先确认订单微服务具有调用账户微服务接口的权限,同时还要有机制保证订单微服务作为调用终端是真实而非伪造的。

所述过期时间为目标终端接收到包含授权信息的调用请求时,进行判断的依据,以避免调用终端向目标终端发送信息时被恶意拦截或延迟进行的重复数据的处理。所述过期时间可以是预设的一个时间差值,目标终端可以根据接收到调用请求时的当前时间与服务器生成授权信息时的时间的差值与预设的时间差值进行比较判断所述调用请求是否合法。可选地,所述过期时间也可以是服务器在生成授权信息时的时间的基础上增加一个时间阈值。当目标终端接收到授权信息时,根据接收时的当前时间与过期时间进行比较,判断当前时间是否超过过期时间。

进一步地,服务器根据请求信息中的目标终端的标识查询获取目标终端公钥,并根据目标终端公钥对所述授权信息进行加密生成第一授权签名。所述服务器存储的目标终端公钥与目标终端相对应,且与所述目标终端存储的目标终端私钥相匹配。可选地,所述服务器可以将目标终端公钥与所述目标终端的标识进行对应保存。在本实施例中,所述服务器与所述目标终端之间同样预设有一种加密算法,与服务器与调用终端之间的加密算法相同。

可选地,若服务器的调用许可单元内没有调用终端调用目标终端的权限记录,服务器可以向调用终端发送未经授权的访问信息,调用终端停止调用请求。

步骤S150、服务器将所述授权信息和所述第一授权签名发送给调用终端。

具体地,服务器将根据请求信息生成的授权信息和第一授权签名发送给调用终端,以便于调用终端可以进行后续的调用处理。

步骤S160、调用终端接收所述服务器发送的授权信息和第一授权签名。

步骤S170、调用终端向目标终端发送调用请求,所述调用请求包括授权请求头、授权信息、第一授权签名和请求正文。

调用终端在接收到授权信息和第一授权签名后,将授权请求头添加到调用请求中并发送给目标终端,以使目标终端接收该调用请求,并处理该调用请求。具体地,所述调用请求包括授权请求头、授权信息、第一授权签名和请求正文。

步骤S180、目标终端接收所述调用请求并根据所述授权信息生成第二授权签名。

具体地,目标终端接收所述调用请求,并对所述调用请求进行解析获取授权请求头、授权信息、第一授权签名。并从所述授权信息中获取调用终端的标识、调用终端的地址、目标终端的标识以及过期时间。

目标终端检查所述授权信息中的目标终端的标识和当前接收授权信息的目标终端的标识是否一致,以确定接收的所述调用请求信息是否为正确信息。

目标终端根据过期时间判断目标终端当前时间是否在过期时间内,用于过滤目标终端在接收调用请求的过程时由于设备或网络的延时而接收到重复调用请求数据,可以避免对相同的调用请求进行重复处理,加大目标终端运行压力和存储内存。

目标终端根据所述授权信息中的调用终端的地址判断与调用的远端地址是否相同,以确定接收的所述调用请求信息是否为正确信息。

当所接收的目标终端的标识与当前目标终端的标识一致,所述授权信息中的调用终端的地址判断与调用的远端地址相同且所述目标终端的当前时间在过期时间内,根据目标终端内存储的目标终端私钥对授权信息进行加密生成第二授权签名。所述目标终端存储的目标终端私钥与所述目标终端相对应,且与所述服务器存储的目标终端公钥相对应。所述第二授权签名用于与接收到的第一授权签名进行比对,以确定调用终端是否合法。

以订单微服务调用账户微服务的接口为例说明:对于订单微服务来说,首先通过向服务器的授权中心请求身份认证,授权中心会在返回的授权令牌即授权信息中包含订单微服务的地址,这里称为调用终端的地址。然后在订单微服务请求账户微服务接口的时候,订单微服务将请求时的订单微服务的地址以及授权信息发送给账户微服务,在这里请求时的订单微服务的地址为调用的远端地址。即判断所述授权信息中的调用终端的地址与调用的远端地址是否相同,为判断订单微服务的请求时的地址和授权信息中的订单微服务的地址,以防止授权信息被盗用。

可选地,当所接收的目标终端的标识与当前目标终端的标识不一致时,可以向调用终端发送无效信息,具体可以说明接收调用请求的目标终端不正确或授权信息中的目标终端的标识不正确,然后调用终端可以重新生成调用请求并发送或终止调用。

可选地,当所述目标终端的当前时间超过过期时间时,则目标终端确定所述调用请求失效,停止对所述调用请求进行处理。所述目标终端可以向所述调用终端发过期请求信息。调用终端可以根据反馈信息重新向目标终端发送调用请求。

可选地,当所述授权信息中的调用终端的地址与调用的远端地址不相同时,目标终端可以向调用终端返回所述调用终端的地址为无效地址的信息。

在本实施例中,判断目标终端的标识和当前接收授权信息的目标终端的标识是否一致、调用终端的地址判断与调用的远端地址是否相同以及目标终端的当前时间是否在过期时间内的判断顺序可以任意设置,只要上述三个判断条件同时符合要求时,目标终端根据目标终端私钥对授权信息进行加密生成第二授权签名。

步骤S190、若所述第一授权签名与所述第二授权签名相同,则所述目标终端执行处理所述请求正文。

具体地,所述目标终端将接收到的第一授权签名和生成的第二授权签名进行匹配,若所述第一授权签名与所述第二授权签名匹配一致,则目标终端执行处理所述请求正文。

可选地,若所述第一授权签名与所述第二授权签名匹配不一致,则所述调用终端不合法,所述目标终端可以向调用终端发送无效签名信息,标识第一授权签名无效。调用终端可以根据反馈信息重新向服务器发送请求信息和第一请求签名进行授权处理。

可选地,所述方法还包括:

步骤S200、在所述目标终端执行处理所述请求正文完成之后向所述调用终端发送所述调用请求。

步骤S210、调用终端接收并缓存所述目标终端发送的调用请求。

调用终端将接收的调用请求进行缓存,可以在调用终端再次调用目标终端时直接向目标终端发送调用请求,省略服务器授权的过程,在不会造成安全漏洞的前提下提高了调用效率。

本申请公开了一种鉴权方法,包括调用终端向服务器发送请求信息和第一请求签名,服务器根据所述请求信息和第一请求签名获取所述调用终端的地址并在检查到服务器内存储有调用终端调用目标终端的权限记录时,生成授权信息和第一授权签名,然后将所述授权信息和所述第一授权签名发送给调用终端;调用终端向目标终端发送调用请求,目标终端根据所述授权信息生成第二授权签名;若所述第一授权签名与所述第二授权签名相同,则所述目标终端执行处理请求正文。本申请通过密钥对生成签名以实现微服务之间的鉴权和授权,从而提高整体架构的安全性,防止恶意程序的入侵。

图3是本发明实施例的电子设备的示意图。图3所示的电子设备为通用数据处理装置,其包括通用的计算机硬件结构,其至少包括处理器31和存储器32。处理器31和存储器32通过总线33连接。存储器32适于存储处理器31可执行的指令或程序。处理器31可以是独立的微处理器,也可以是一个或者多个微处理器集合。由此,处理器31通过执行存储器32所存储的指令,从而执行如上所述的本发明实施例的方法流程实现对于数据的处理和对于其它装置的控制。总线33将上述多个组件连接在一起,同时将上述组件连接到显示控制器34和显示装置以及输入/输出(I/O)装置35。输入/输出(I/O)装置35可以是鼠标、键盘、调制解调器、网络接口、触控输入装置、体感输入装置、打印机以及本领域公知的其他装置。典型地,输入/输出装置35通过输入/输出(I/O)控制器36与系统相连。优选地,本实施例的电子设备为服务器。

同时,如本领域技术人员将意识到的,本申请实施例的各个方面可以被实现为系统、方法或计算机程序产品。因此,本申请实施例的各个方面可以采取如下形式:完全硬件实施方式、完全软件实施方式(包括固件、常驻软件、微代码等)或者在本文中通常可以都称为“电路”、“模块”或“系统”的将软件方面与硬件方面相结合的实施方式。此外,本申请的方面可以采取如下形式:在一个或多个计算机可读介质中实现的计算机程序产品,计算机可读介质具有在其上实现的计算机可读程序代码。

可以利用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是如(但不限于)电子的、磁的、光学的、电磁的、红外的或半导体系统、设备或装置,或者前述的任意适当的组合。计算机可读存储介质的更具体的示例(非穷尽列举)将包括以下各项:具有一根或多根电线的电气连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、光纤、便携式光盘只读存储器(CD-ROM)、光存储装置、磁存储装置或前述的任意适当的组合。在本发申请实施例的上下文中,计算机可读存储介质可以为能够包含或存储由指令执行系统、设备或装置使用的程序或结合指令执行系统、设备或装置使用的程序的任意有形介质。

计算机可读信号介质可以包括传播的数据信号,所述传播的数据信号具有在其中如在基带中或作为载波的一部分实现的计算机可读程序代码。这样的传播的信号可以采用多种形式中的任何形式,包括但不限于:电磁的、光学的或其任何适当的组合。计算机可读信号介质可以是以下任意计算机可读介质:不是计算机可读存储介质,并且可以对由指令执行系统、设备或装置使用的或结合指令执行系统、设备或装置使用的程序进行通信、传播或传输。

可以使用包括但不限于无线、有线、光纤电缆、RF等或前述的任意适当组合的任意合适的介质来传送实现在计算机可读介质上的程序代码。

用于执行针对本申请各方面的操作的计算机程序代码可以以一种或多种编程语言的任意组合来编写,所述编程语言包括:面向对象的编程语言如Java、Smalltalk、C++等;以及常规过程编程语言如“C”编程语言或类似的编程语言。程序代码可以作为独立软件包完全地在用户计算机上、部分地在用户计算机上执行;部分地在用户计算机上且部分地在远程计算机上执行;或者完全地在远程计算机或服务鉴权中心上执行。在后一种情况下,可以将远程计算机通过包括局域网(LAN)或广域网(WAN)的任意类型的网络连接至用户计算机,或者可以与外部计算机进行连接(例如通过使用因特网服务供应商的因特网)。

上述根据本申请实施例的方法、设备(系统)和计算机程序产品的流程图图例和/或框图描述了本申请的各个方面。将要理解的是,流程图图例和/或框图的每个块以及流程图图例和/或框图中的块的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供至通用计算机、专用计算机或其它可编程数据处理设备的处理器,以产生机器,使得(经由计算机或其它可编程数据处理设备的处理器执行的)指令创建用于实现流程图和/或框图块或块中指定的功能/动作的装置。

还可以将这些计算机程序指令存储在可以指导计算机、其它可编程数据处理设备或其它装置以特定方式运行的计算机可读介质中,使得在计算机可读介质中存储的指令产生包括实现在流程图和/或框图块或块中指定的功能/动作的指令的制品。

计算机程序指令还可以被加载至计算机、其它可编程数据处理设备或其它装置上,以使在计算机、其它可编程设备或其它装置上执行一系列可操作步骤来产生计算机实现的过程,使得在计算机或其它可编程设备上执行的指令提供用于实现在流程图和/或框图块或块中指定的功能/动作的过程。

以上所述仅为本申请的优选实施例,并不用于限制本申请,对于本领域技术人员而言,本申请可以有各种改动和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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