权限数据的验证方法、装置及系统的制作方法

文档序号:7979785阅读:92来源:国知局
权限数据的验证方法、装置及系统的制作方法
【专利摘要】本申请公开了一种权限数据的验证方法、装置及系统。其中,该方法包括:应用服务器接收客户端的权限数据访问信息;根据关键字生成规则对权限数据访问信息进行处理,以生成权限验证关键字;将权限验证关键字发送至公共缓存服务器进行验证,以获取权限验证关键字所对应的验证结果,其中,在公共缓存服务器成功返回验证结果的情况下,将验证结果返回至客户端;在公共缓存服务器未成功返回验证结果的情况下,通过远程调用接口访问权限服务器,权限服务器根据接收到的权限验证关键字来查询得到对应的验证结果。通过本申请,能够实现了在权限服务器发生故障时,依旧可以保证应用服务器上的权限服务可用,不影响供应链系统集群可用性。
【专利说明】权限数据的验证方法、装置及系统
【技术领域】
[0001]本申请涉及权限验证领域,具体而言,涉及一种权限数据的验证方法、装置及系统。
【背景技术】
[0002]目前的供应链系统业务比较复杂,在多个业务系统之间进行协作的过程中需要统一的权限控制,如图1所示的系统架构,现有技术通常利用分布式的权限服务器系统,权限服务器以服务化的方式为其他系统提供统一的权限校验服务。
[0003]具体的,图1描述了供应链系统集群使用公共权限服务的场景,该场景使用了分布式架构,权限服务器提供权限验证的远程服务,其他应用服务器都会通过远程服务接口调用该权限服务器提供的服务,使得系统集群的整体架构更加服务化,但分布式本身会受到网络等因素影响,难以保证服务的完全可用性,如果是权限服务器发生故障,就会导致整个系统集群的其他应用系统也变得不可用,故障范围会扩大,损失也会增加。因此,一旦权限服务器发生故障不可用,所有接入权限服务器中心的应用服务器都将受到影响,会直接导致应用服务器上的应用页面不可访问,以及权限控制失效等严重问题。
[0004]由此可知,目前针对相关技术的由于权限服务器发生故障不可用,导致使用该权限服务器的应用服务器上的权限验证不可用,从而应用界面无法访问的问题,目前尚未提出有效的解决方案。

【发明内容】

[0005]针对相关技术的由于权限服务器发生故障不可用,导致使用该权限服务器的应用服务器上的权限验证不可用,从而应用界面无法访问的问题,目前尚未提出有效的解决方案,为此,本申请的主要目的在于提供一种权限数据的验证方法、装置及系统,以解决上述问题。
[0006]为了实现上述目的,根据本申请的一个方面,提供了一种权限数据的验证方法,该方法包括:应用服务器接收客户端的权限数据访问信息;应用服务器根据关键字生成规则对权限数据访问信息进行处理,以生成权限验证关键字;应用服务器将权限验证关键字发送至公共缓存服务器进行验证,以获取权限验证关键字所对应的验证结果,其中,当公共缓存服务器成功返回验证结果的情况下,应用服务器将验证结果返回至客户端;当公共缓存服务器未成功返回验证结果的情况下,应用服务器通过远程调用接口访问权限服务器,权限服务器根据接收到的权限验证关键字来查询得到对应的验证结果。
[0007]进一步地,在应用服务器将权限验证关键字发送至公共缓存服务器进行验证之前,方法还包括:应用服务器拦截用于连接权限服务器的远程调用接口,并与公共缓存服务器建立通讯连接。
[0008]进一步地,在权限服务器根据接收到的权限验证关键字来查询得到对应的验证结果之后,方法还包括:权限服务器将权限验证关键字和验证结果进行结合,得到权限验证缓存记录;权限服务器将权限验证缓存记录同步到公共缓存服务器。
[0009]进一步地,权限验证关键字包括用户标识、应用标识和请求标识,其中,在权限服务器将权限验证缓存记录同步到公共缓存服务器之后,方法还包括:权限服务器创建关键字缓存表,用于保存已经同步到公共缓存服务器的权限验证关键字;在通过权限配置来修改关键字缓存表中的一个或多个数据之后,获取一组关键字修改信息;根据关键字修改信息在关键字缓存表中进行关联数据查询,以获取清除缓存记录,其中清除缓存记录包括关键字修改信息对应的一个或多个已经同步的权限验证关键字;公共缓存服务器清除该清除缓存记录所对应的权限验证缓存记录。
[0010]进一步地,在权限服务器根据接收到的权限验证关键字来查询得到对应的验证结果之前,方法还包括:权限服务器创建用于保存用户信息与用户权限之间的映射关系的权限配置数据表,其中,用户信息为使用相同的关键字生成规则处理而生成的权限验证关键字;通过权限配置来修改权限配置数据表中的一个或多个用户数据,以获取一组修改信息;根据修改信息在权限数据表中进行关联数据查询,以获取清除缓存记录,其中清除缓存记录包括修改信息关联的一个或多个缓存的权限验证关键字;公共缓存服务器清除该清除缓存记录所对应的权限验证缓存记录。
[0011]进一步地,应用服务器根据关键字生成规则对权限数据访问信息进行处理,以生成权限验证关键字的步骤包括:提取权限数据访问信息中的用户标识和访问标识;将用户标识和访问标识与应用服务器上运行的应用服务的应用标识进行组合,以生成权限验证关键字。
[0012]为了实现上述目的,根据本申请的另一方面,提供了一种权限数据的验证装置,该装置包括:接收模块,用于接收客户端的权限数据访问信息;生成模块,用于根据关键字生成规则对权限数据访问信息进行处理,以生成权限验证关键字;验证模块,用于将权限验证关键字发送至公共缓存服务器进行验证,以获取权限验证关键字所对应的验证结果;返回模块,用于当公共缓存服务器成功返回验证结果的情况下,将验证结果返回至客户端;调用处理模块,用于当公共缓存服务器未成功返回验证结果的情况下,通过远程调用接口访问权限服务器,权限服务器根据接收到的权限验证关键字来查询得到对应的验证结果。
[0013]进一步地,生成模块包括:提取模块,用于提取权限数据访问信息中的用户标识和访问标识;组合模块,用于将用户标识和访问标识与应用服务器上运行的应用服务的应用标识进行组合,以生成权限验证关键字。
[0014]进一步地,装置还包括:拦截模块,用于应用服务器拦截远程调用接口,并与公共缓存服务器建立通讯连接。
[0015]为了实现上述目的,根据本申请的另一方面,提供了一种权限数据的验证系统,该系统包括:权限服务器;应用服务器,用于接收客户端的权限数据访问信息,并根据关键字生成规则对权限数据访问信息进行处理,以生成权限验证关键字;一个或多个公共缓存服务器,连接于应用服务器和权限服务器之间,用于接收应用服务器发送的权限验证关键字,并对权限验证关键字进行验证,以获取权限验证关键字所对应的验证结果;其中,当公共缓存服务器成功返回验证结果的情况下,应用服务器将验证结果返回至客户端;当公共缓存服务器未成功返回验证结果的情况下,应用服务器通过远程调用接口访问权限服务器,权限服务器根据接收到的权限验证关键字来查询得到对应的验证结果。[0016]通过本申请,采用应用服务器接收客户端的权限数据访问信息;应用服务器根据关键字生成规则对权限数据访问信息进行处理,以生成权限验证关键字;应用服务器将权限验证关键字发送至公共缓存服务器进行验证,以获取权限验证关键字所对应的验证结果,其中,当公共缓存服务器成功返回验证结果的情况下,应用服务器将验证结果返回至客户端;当公共缓存服务器未成功返回验证结果的情况下,应用服务器通过远程调用接口访问权限服务器,权限服务器根据接收到的权限验证关键字来查询得到对应的验证结果,本申请上述实施例提供了一个应用服务器和权限服务器配置共用的分布式缓存系统,实现了当基于服务化的权限服务器因突发性故障导致不可用情况下,应用服务器可以通过访问公共缓存服务器来完成权限验证流程,并获取对应的验证结果,从而在权限服务器不可用时,依然保证各个应用服务器上权限验证服务的可用性,解决了相关现有技术的由于权限服务器发生故障不可用,导致使用该权限服务器的应用服务器上的权限验证不可用,从而应用界面无法访问的问题,进而实现了在权限服务器发生故障时,依旧可以保证应用服务器上的权限服务可用,不影响供应链系统集群可用性的效果。
【专利附图】

【附图说明】
[0017]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0018]图1是根据相关现有技术的权限数据的验证系统的结构示意图;
[0019]图2是根据本申请实施例的权限数据的验证系统的结构示意图;
[0020]图3是根据图2所示实施例的权限数据的验证系统的详细结构示意图;
[0021]图4是根据图2和图3所示实施例的远程拦截功能的架构示意图;
[0022]图5是根据图2和图3所示实施例的公共缓存配置功能的架构示意图;
[0023]图6是根据本申请实施例的权限数据的验证方法的流程图;
[0024]图7是根据图6所示实施例的权限数据的验证方法的详细流程图;
[0025]图8是根据图6和图7所示实施例的获取权限验证关键字及查询策略的流程示意图;
[0026]图9是根据本申请实施例的权限数据的验证装置的结构示意图。
【具体实施方式】
[0027]需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
[0028]图2是根据本申请实施例的权限数据的验证系统的结构示意图;图3是根据图2所示实施例的权限数据的验证系统的详细结构示意图。
[0029]如图2所示,该权限数据的验证系统包括:权限服务器10 ;应用服务器30,用于接收客户端的权限数据访问信息,并根据关键字生成规则对权限数据访问信息进行处理,以生成权限验证关键字;一个或多个公共缓存服务器50,连接于应用服务器30和权限服务器10之间,用于接收应用服务器30发送的权限验证关键字,并对权限验证关键字进行验证,以获取权限验证关键字所对应的验证结果;其中,当公共缓存服务器50成功返回验证结果的情况下,应用服务器30将验证结果返回至客户端;当公共缓存服务器50未成功返回验证结果的情况下,应用服务器30通过远程调用接口访问权限服务器10,权限服务器10根据接收到的权限验证关键字来查询得到对应的验证结果。
[0030]本申请上述实施例提供了一种由应用服务器30系统和权限服务器10系统连接公共的分布式缓存服务器系统,比较现有技术,当应用服务器30获取到由客户端发出的权限数据访问信息(例如URL请求)之后,不会直接访问权限服务器10进行权限服务功能,而是先从公共缓存服务器50中实施权限验证服务,从而获取到权限验证结果,因此,当基于服务化的权限服务器10因突发性故障导致不可用情况下,应用服务器30可以通过访问公共缓存服务器50来完成权限验证流程,并获取对应的验证结果,从而在权限服务器10不可用时,依然保证各个应用服务器30上权限验证服务的可用性,即保证客户端对业务应用系统的正常访问,解决了由于权限服务器10发生故障不可用,导致使用该权限服务器10的应用服务器30上的权限验证不可用,从而应用界面无法访问的问题,进而实现了在权限服务器10发生故障时,依旧可以保证应用服务器30上的权限服务可用,不影响供应链系统集群可用性的效果。
[0031]本申请上述实施例可以实现在各个公共缓存服务器50彼此之间实现负载均衡,从而降低每台公共缓存服务器50的工作负担和成本,提高了整体验证系统的效率。
[0032]本申请各个实施例所涉及到的权限服务器10特指在供应链系统集群中用于提供公共权限服务的服务器;应用服务器30特指在供应链系统集群中使用公共权限服务器10完成权限验证的服务器;公共缓存服务器50是特指权限服务器10和其他应用服务器30共同配置的,用于保存权限验证服务数据的专用的缓存服务器。由于同步到公共缓存服务器50中的用于进行权限验证的缓存数据是权限服务器10系统配置的权限验证关键字及其验证结果的组合,比较原始的在应用服务器30中基于数据库形式的权限验证(可以包括功能权限验证和数据权限验证)过程,应用服务器30从公共缓存服务器50上进行权限验证具有速度快、效率高的优点,因此,上述原因也是本申请实施例中的应用服务器30优选从公共缓存服务器50上进行权限验证,在公共缓存服务器50验证失败之后,再去权限服务器10进行权限验证的理由。
[0033]另外,本申请涉及到的应用服务器30对权限服务器10的远程服务调用,具体可以实现由http, webservice、RPC等多种方式,目前内部网络系统间多用RPC的方式,优选采用通用的基于Netty的dubbo服务调用。而公共缓存服务器50中提供的公共服务,是指在功能复杂的系统集群中,有些比较通用的功能被封装成服务,为系统的其他功能所使用,服务的使用方通过接口调用的方式访问服务,并且独立的部署,有利于系统的扩展,如用户、权限、邮件等服务。
[0034]优选地,本申请上述实施例中的应用服务器30采用了远程服务拦截技术,即在将权限验证关键字发送至公共缓存服务器50进行验证之前,应用服务器30首先拦截用于与权限服务器10建立访问的远程调用接口,直接与公共缓存服务器50建立通讯连接来实施权限验证服务的功能。
[0035]具体的,如图3所示,本申请上述实施例中使用了分布式缓存策略,应用服务器30和权限服务器10配置共用的分布式缓存服务器,在客户端向应用服务器30发送权限数据访问信息(URL请求)之后,应用服务器30通过提供的公共类库(权限二方库)来实现远程服务拦截技术,用于拦截应用服务器30直接访问权限服务器10的服务,而访问公共缓存服务器50上的权限验证工具。其中,本申请中应用服务器30中的权限二方库用于封装访问公共缓存服务器50的策略,该策略拦截了应用服务器30系统对远程权限服务器10的直接调用,而是转向访问公共缓存服务器50的权限验证工具。同时权限二方图也实现根据验证参数(即权限数据访问信息,例如客户端发出的URL请求和用户标识)来生成权限验证关键字(缓存key)的工具。
[0036]当公共缓存服务器50并未记录当前权限数据访问信息所对应的验证结果,即应用服务器30并没有成功获取到验证结果的情况下,应用服务器30再对权限服务器10进行权限验证服务调用,当权限服务器10的系统接收到权限验证服务远程调用后,会在将验证结果返回给应用服务器30的同时,将验证结果和权限验证关键字及它们之间的对应关系打包之后同步到公共缓存服务器50,从而在公共缓存服务器50中建立一个由权限服务器10系统配置的权限验证关键字key及其验证结果组成的缓存副本。由此当公用权限服务因故障而不可用或者下一次客户端向应用服务器30发出权限数据访问时,应用服务器30可以根据生成的权限验证关键字(缓存key)直接从公共缓存服务器50获取到权限验证结果,这就实现了公用权限服务系统短期不可用时,保证了应用系统可用性,减少了由于权限服务器10发生故障而带来的损失。
[0037]优选地,本申请上述实施例中的公共缓存服务器50可以是多个相互同步数据的服务器,一方面可以实现服务器的负载均衡,降低了每个服务器的负担,提高了整个系统的安全性。
[0038]由此,结合图2和图3可知,实现本申请上述实施例中系统架构的核心业务包括如下三部分:远程服务拦截,公共缓存策略,缓存同步策略。
[0039]具体的,如图4所示,本申请实施例中应用服务器30端实现的远程服务拦截主要通过应用服务器30的应用系统提供的权限二方库来实现,该二方库包含了用于实现权限验证功能的远程调用接口(即用于访问权限服务器10中权限系统的权限验证服务接口),而该接口的实现在权限系统中,在目前通常使用的远程调用过程中,应用服务器30端在配置远程服务后(可以通过基于Netty的dubbo服务调用框架),可以通过直接调用远程调用接口来访问权限服务器的权限系统的权限验证服务。
[0040]在本申请中,权限二方库提供了权限验证服务,对远程调用接口进行了封装,当应用服务器30使用该权限验证服务来验证权限时,会在访问远程调用接口之间先读取分布式的公共缓存服务器50上的权限验证工具来进行权限验证,这样实现了拦截对远程调用接口的调用,而直接在公共缓存服务器中获取验证结果。正是通过这种形式,实现了当权限系统由于各种原因导致权限验证工具故障时,保障了应用服务器30上权限验证服务的可用性,进而保障应用服务的可用性。
[0041]如图5所示,本申请缓存服务器上实现的公共缓存配置是本申请的核心,需要为权限服务器10和应用服务器30上的系统配置权限验证服务一致的分布式缓存服务器,具体的,可以在权限服务器10和应用服务器30上的权限二方库中设置相同的关键字生成规则来获取统一的权限验证关键字(缓存key),使得两边可以依据权限验证关键字读取到的一致的缓存记录。
[0042]由此可知,当权限二方库中的权限验证工具在拦截远程调用接口的调用而直接对公共缓存服务器50进行权限验证访问时,可以使用统一的关键字生成规则将权限验证的一个或多个请求参数(可以包括:用户标识信息和应用服务器30接收到用户的请求标识信息)进行组合,来生成与权限服务器10系统上一致的权限验证关键字,由于公共缓存服务器50已经同步了由权限服务器10系统配置的权限验证关键字及其验证结果,因此,在权限服务器10不可用时,应用服务器30可以通过读取公共缓存服务器50中同步的缓存信息,而得到与调用权限服务器10相同的权限验证结果。
[0043]由上述实施例可知,本申请权限服务器10和公共缓存服务器50之间的缓存同步策略具体如下:
[0044]首先,应用服务器30的应用系统在第一次接收到请求参数,即请求权限验证时,此时,公共缓存服务器50是没有缓存的,应用系统只能通过远程调用接口来调用权限服务器10的远程服务,而权限服务器10在获取到验证结果之后,会利用与应用服务器30上相同的关键字生成规则,将请求参数组成权限验证关键字key,验证结果作为value,将它们以key-value的组合形式作为权限验证缓存记录同步到公共缓存服务器50中。
[0045]然后,应用服务器30的应用系统在第二次发出相同的请求参数进行权限验证时,用于访问权限服务器10的远程服务接口就会被拦截,应用服务器30通过访问缓存服务器来取得验证结果。
[0046]而当权限服务器10的系统对应用服务器30的权限进行管理和修改时,应用服务器30系统的一些用户的权限会发生变化,此时缓存服务器中存储的权限验证结果是错误的,本申请可以对缓存服务器上保存的权限验证缓存记录设置失效时间,即对公共缓存服务器50上缓存的权限验证缓存记录进行缓存时效性的管理,即根据权限服务的可用率,设置权限验证缓存记录的失效时间,同时权限系统修改时能主动的更新缓存。
[0047]优选地,本申请上述实施例中的权限验证关键字可以包括用户标识、应用标识和请求标识,其中,在权限服务器10将缓存记录同步到公共缓存服务器50之后,权限服务器10可以创建关键字缓存表,用于保存已经同步到公共缓存服务器50的权限验证关键字;在通过权限配置来修改关键字缓存表中的一个或多个数据之后,获取一组关键字修改信息;根据关键字修改信息在关键字缓存表中进行关联数据查询,以获取清除缓存记录,其中清除缓存记录包括关键字修改信息对应的一个或多个已经同步的权限验证关键字;公共缓存服务器50清除清除缓存记录所对应的权限验证缓存记录。另外,也可以采用在将清除标记加载在清除缓存记录之后,将携带有清除标记的清除缓存记录同步到公共缓存服务器50 ;公共缓存服务器50清除携带有清除标记的清除缓存记录所对应的缓存记录。
[0048]具体的,如果失效时间未到时权限服务器10上的权限内容发生了变化,此时,应用服务器30进行权限验证就会发生错误。针对该情况,本申请可以实现当权限服务器10系统对权限信息和内容进行修改时,将公共缓存服务器50上对应在权限服务器10上的权限验证缓存记录进行清理,从而保证了公共缓存服务器50的可用性,在应用服务器30进行下次权限验证时,权限服务器10会将修改后的内容同步到公共缓存服务器50上。如果公共缓存服务器50上的清理过程发生故障而导致清理失败,权限服务器10将发出报警提示,并循环执行对在权限服务器10上的权限验证缓存记录进行清理,直至清理成功。另外,本申请公共缓存服务器50不能轻易的清除所有缓存,需要根据权限系统配置的改动,计算需要清理的缓存。
[0049]图6是根据本申请实施例的权限数据的验证方法的流程图;图7是根据图6所示实施例的权限数据的验证方法的详细流程图。
[0050]如图6所示该方法包括如下步骤:
[0051]步骤S102,通过图2和图3中的应用服务器30接收客户端的权限数据访问信息。
[0052]步骤S104,图2和图3中的应用服务器30根据关键字生成规则对权限数据访问信息进行处理,以生成权限验证关键字。
[0053]步骤S106,通过图2和图3中的应用服务器30将权限验证关键字发送至公共缓存服务器50进行验证,以获取权限验证关键字所对应的验证结果,其中。当公共缓存服务器50成功返回验证结果的情况下,应用服务器30将验证结果返回至客户端;当公共缓存服务器50未成功返回验证结果的情况下,应用服务器30通过远程调用接口访问权限服务器10,权限服务器10根据接收到的权限验证关键字来查询得到对应的验证结果。
[0054]本申请上述实施例实现了当应用服务器30获取到由客户端发出的权限数据访问信息(例如URL请求)之后,不会直接访问权限服务器10进行权限服务功能,而是先从公共缓存服务器50中实施权限验证服务,从而获取到权限验证结果,因此,当基于服务化的权限服务器10因突发性故障导致不可用情况下,应用服务器30可以通过访问公共缓存服务器50来完成权限验证流程,并获取对应的验证结果,从而在权限服务器10不可用时,依然保证各个应用服务器30上权限验证服务的可用性,即保证客户端对业务应用系统的正常访问,解决了由于权限服务器10发生故障不可用,导致使用该权限服务器10的应用服务器30上的权限验证不可用,从而应用界面无法访问的问题,进而实现了在权限服务器10发生故障时,依旧可以保证应用服务器30上的权限服务可用,不影响供应链系统集群可用性的效果。
[0055]优选地,在应用服务器30将权限验证关键字发送至公共缓存服务器50进行验证之前,方法还可以包括:应用服务器30拦截用于连接权限服务器10的远程调用接口,并与公共缓存服务器50建立通讯连接。
[0056]本申请上述实施例中,在权限服务器10根据接收到的权限验证关键字来查询得到对应的验证结果之后,方法还可以包括如下步骤:权限服务器10将权限验证关键字和验证结果进行结合,得到权限验证缓存记录;权限服务器10将权限验证缓存记录同步到公共缓存服务器50。
[0057]本申请上述实施例中,在权限服务器10根据接收到的权限验证关键字来查询得到对应的验证结果之前,方法还包括:权限服务器10创建用于保存用户信息与用户权限之间的映射关系的权限配置数据表,其中,用户信息为使用相同的关键字生成规则处理而生成的权限验证关键字;通过权限配置来修改权限配置数据表中的一个或多个用户数据,以获取一组修改信息;根据修改信息在权限数据表中进行关联数据查询,以获取清除缓存记录,其中清除缓存记录包括修改信息关联的一个或多个缓存的权限验证关键字;公共缓存服务器50直接清除该清除缓存记录所对应的权限验证缓存记录。另外,也可以在将清除标记加载在清除缓存记录之后,将携带有清除标记的清除缓存记录同步到公共缓存服务器50,然后公共缓存服务器50清除携带有清除标记的清除缓存记录所对应的权限验证缓存记录。
[0058]具体的,如图7所示,上述实施例中权限服务器10和公共缓存服务器50之间进行权限验证缓存记录的同步过程如下步骤:[0059]首先,权限服务器10的权限系统通过创建权限配置数据表对应用服务器30系统的权限进行统一配置和管理,具体的,可以通过在权限配置数据表创建“用户-角色-权限”的映射关系来实现,当应用服务器30的系统需要对一些用户的权限做修改时,只需要在权限系统中修改配置即可。其中,该权限数据表包括权限验证关键字key (可以包括用户标识、应用标识和请求标识)以及该权限验证关键字key所对应的验证结果。
[0060]然后,当权限服务器10发生对“用户-角色-权限”中的数据以及映射关系进行修改后,会采用管理数据查询算法,即根据修改的数据在权限数据表中进行关联数据查询,计算得到修改的数据所影响到的权限验证关键字key的集合,权限服务器10根据这些key集合清除公共缓存服务器50上所对应的权限验证缓存记录。
[0061]接着,如果应用服务器30的系统在使用二方库中的权限验证工具对已经发生变化的权限验证关键字进行权限验证时,优先需要在公共缓存服务器50上对已经发生变化的权限验证关键字进行验证,由于此时公共缓存服务器50上该权限验证关键字所对应的权限验证缓存记录已经被清除,所以不会得到验证结果。
[0062]此时,在访问公共缓存服务器50无法得到验证结果之后,应用服务器30系统会调用远程的权限服务器10进行权限验证,权限服务器10系统会根据访问请求查询本地数据库,得到修改后的验证结果,同时,权限服务器10也会将当前的验证请求参数生成缓存新的权限验证关键字key,新的验证结果作为缓存值,将二者结合之后同步到公共缓存服务器50中,得到新的权限验证缓存记录。
[0063]最后,权限服务器10系统会将新得到的验证结果返回给应用服务器30系统,此时权限服务器10上同步完成新的权限验证缓存记录的保存,之后应用服务器30系统再对该新的验证权限请求验证,就会正常的从公共缓存中得到正确的验证结果。
[0064]优选地,本申请上述实施例中,权限验证关键字包括用户标识、应用标识和请求标识,在权限服务器10将权限验证缓存记录同步到公共缓存服务器50之后,方法还可以包括如下步骤:权限服务器10创建关键字缓存表,用于保存已经同步到公共缓存服务器50的权限验证关键字;在通过权限配置来修改关键字缓存表中的一个或多个数据之后,获取一组关键字修改信息;根据关键字修改信息在关键字缓存表中进行关联数据查询,以获取清除缓存记录,其中清除缓存记录包括关键字修改信息对应的一个或多个已经同步的权限验证关键字;公共缓存服务器50直接清除该清除缓存记录所对应的权限验证缓存记录。另外,也可以在将清除标记加载在清除缓存记录之后,将携带有清除标记的清除缓存记录同步到公共缓存服务器50,然后公共缓存服务器50清除携带有清除标记的清除缓存记录所对应的权限验证缓存记录。
[0065]上述实施例实现了在权限服务器10中创建一个关键字缓存表,在应用服务器30利用权限验证关键字key在权限服务器10中获取到对应的验证结果value之后,将它们以key-value的组合形式作为权限验证缓存记录同步到公共缓存服务器50中,此时,权限服务器10将每次同步到公共缓存服务器50中的权限验证关键字key记录在关键字缓存表中,该关键字缓存表主要用于获取清除缓存记录,即当记录在该表中的权限验证关键字key所相关的内容发生修改时,将清除权该限验证关键字key在公共缓存服务器50中已经记录的权限验证缓存记录。
[0066]具体的,如图8所示,当权限服务器10利用SynCacheUtil根据需要修改权限配置之后,可以计算得到修改的配置信息所影响到的权限验证关键字key的集合,从而获取得到缓存服务器上对应受影响的权限验证缓存记录,并将受影响到权限验证缓存记录删除。上述过程中,可以在权限服务器IO系统中增加关键字缓存表(CacheKey表),该关键字缓存表用于记录已记入公共缓存服务器50中的权限验证关键字key,此时,关键字缓存表将key中的各个组成部分(包括用户标识、应用标识和请求标识)分别作为一个字段进行存储,例如,当权限服务器10修改一条用户的权限信息时,会按照用户标识这个字段查询CacheKey表,就得到修改该用户权限后该权限验证关键字与新的验证结果的组合,并发出清除命令,用于清除该权限验证关键字key在缓存数据库记录原来记录的权限验证缓存记录(此时不更新缓存服务器中的记录而是直接清除,是因为下一次接受到远程方法验证并返回结果前,会将新的验证结果写入缓存),因此,当应用服务器30使用该权限验证关键字从公共缓存服务器50中进行验证时,无法得到验证结果,此时应用服务器30便访问权限服务器10,成功获取到对应的验证结果,在每次应用服务器30在接收到权限服务器10远程验证并返回验证结果前,可以利用CacheKeyUtil将这些更新记录的各个字段加上分隔符组成新的权限验证关键字key,权限服务器10会将该新的权限验证关键字与新的验证结果的组合同步到缓存服务器中作为新的权限验证缓存记录,使得应用服务器30就不会从公共缓存服务器50中得到未修改的错误而得到的错误的验证结果。使用上述方案避免了通过复杂算法分析受影响记录,效率很高。
[0067]本申请上述实施例中通过缓存同步策略,在提高服务可用性的同时也保证了数据的一致性,即服务的正确性。
[0068]优选地,本申请上述实施例中,应用服务器30根据关键字生成规则对权限数据访问信息进行处理,以生成权限验证关键字的步骤可以包括:应用服务器30提取权限数据访问信息中的用户标识和访问标识;将用户标识和访问标识与应用服务器30上运行的应用服务的应用标识进行组合,以生成权限验证关键字。
[0069]具体的,本申请上述各个实施例中的权限验证关键字key的生成过程具体如下:
[0070]如图8所示,权限验证服务远程方法(RPC METHOD)的参数包含用户标识(userid)、应用标识(appSite)、请求标识(identity),缓存的key也是这相同的3部分加上分隔符组成,图8中的CacheKeyUtil就是组合和解析缓存key的工具。其中,当权限配置被修改时,权限系统首先会修改本地数据库的权限配置记录。
[0071]图9是根据本申请实施例的权限数据的验证装置的结构示意图。
[0072]如图9所示,本申请提供了一种权限数据的验证装置,该装置可以包括:接收模块201,用于接收客户端的权限数据访问信息;生成模块203,用于根据关键字生成规则对权限数据访问信息进行处理,以生成权限验证关键字;验证模块205,用于将权限验证关键字发送至公共缓存服务器50进行验证,以获取权限验证关键字所对应的验证结果;返回模块207,用于当公共缓存服务器50成功返回验证结果的情况下,将验证结果返回至客户端;调用处理模块209,用于当公共缓存服务器50未成功返回验证结果的情况下,通过远程调用接口访问权限服务器10,权限服务器10根据接收到的权限验证关键字来查询得到对应的验证结果。优选地,该装置还可以包括:拦截模块211,用于应用服务器30拦截远程调用接口,并与公共缓存服务器50建立通讯连接。
[0073]本申请上述实施例提供比较现有技术,应用服务器30通过接收模块获取到由客户端发出的权限数据访问信息(例如URL请求)之后,不会直接访问权限服务器10进行权限服务功能,而是通过验证模块先从公共缓存服务器50中实施权限验证服务,从而获取到权限验证结果,因此,当基于服务化的权限服务器10因突发性故障导致不可用情况下,应用服务器30可以通过访问公共权限服务器10来完成权限验证流程,并获取对应的验证结果,从而在应用服务器30不可用时,依然保证各个应用服务器30上权限验证服务的可用性,即保证客户端对业务应用系统的正常访问,解决了由于权限服务器10发生故障不可用,导致使用该权限服务器10的应用服务器30上的权限验证不可用,从而应用界面无法访问的问题,进而实现了在权限服务器10发生故障时,依旧可以保证应用服务器30上的权限服务可用,不影响供应链系统集群可用性的效果。
[0074]优选地,该生成模块可以包括:提取模块,用于提取权限数据访问信息中的用户标识和访问标识;组合模块,用于将用户标识和访问标识与应用服务器30上运行的应用服务的应用标识进行组合,以生成权限验证关键字。
[0075]需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0076]本申请可使用任意计算机语言和对该语言支持的分布式缓存系统,本申请的实例中优选使用Java语言和Memcached可以达到最佳的实施效果。
[0077]从以上的描述中,可以看出,本申请实现了如下技术效果:解决了相关现有技术的由于权限服务器10发生故障不可用,导致使用该权限服务器10的应用服务器30上的权限验证不可用,从而应用界面无法访问的问题,进而实现了在权限服务器10发生故障时,依旧可以保证应用服务器30上的权限服务可用,不影响供应链系统集群可用性的效果。
[0078]显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
[0079]以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
【权利要求】
1.一种权限数据的验证方法,其特征在于,包括: 应用服务器接收客户端的权限数据访问信息; 所述应用服务器根据关键字生成规则对所述权限数据访问信息进行处理,以生成权限验证关键字; 所述应用服务器将所述权限验证关键字发送至公共缓存服务器进行验证,以获取所述权限验证关键字所对应的验证结果,其中, 在所述公共缓存服务器成功返回验证结果的情况下,所述应用服务器将所述验证结果返回至所述客户端; 在所述公共缓存服务器未成功返回验证结果的情况下,所述应用服务器通过远程调用接口访问权限服务器,所述权限服务器根据接收到的权限验证关键字来查询得到对应的验证结果。
2.根据权利要求1所述的方法,其特征在于,在所述应用服务器将所述权限验证关键字发送至公共缓存服务器进行验证之前,所述方法还包括:所述应用服务器拦截用于连接所述权限服务器的所述远程调用接口,并与所述公共缓存服务器建立通讯连接。
3.根据权利要求1所述的方法,其特征在于,在所述权限服务器根据接收到的权限验证关键字来查询得到对应的验证结果之后,所述方法还包括: 所述权限服务器将所述权限验证关键字和所述验证结果进行结合,得到权限验证缓存记录; 所述权限服务器将所述权限验证缓存记录同步到所述公共缓存服务器。
4.根据权利要求3所述的方法,其特征在于,所述权限验证关键字包括用户标识、应用标识和请求标识,其中,在所述权限服务器将所述权限验证缓存记录同步到所述公共缓存服务器之后,所述方法还包括: 所述权限服务器创建关键字缓存表,用于保存已经同步到所述公共缓存服务器的权限验证关键字; 在通过权限配置来修改所述关键字缓存表中的一个或多个数据之后,获取一组关键字修改信息; 根据所述关键字修改信息在所述关键字缓存表中进行关联数据查询,以获取清除缓存记录,其中所述清除缓存记录包括所述关键字修改信息对应的一个或多个已经同步的权限验证关键字; 所述公共缓存服务器清除所述清除缓存记录所对应的权限验证缓存记录。
5.根据权利要求1所述的方法,其特征在于,在所述权限服务器根据接收到的权限验证关键字来查询得到对应的验证结果之前,所述方法还包括: 所述权限服务器创建用于保存用户信息与用户权限之间的映射关系的权限配置数据表,其中,所述用户信息为使用相同的关键字生成规则处理而生成的权限验证关键字; 通过权限配置来修改权限配置数据表中的一个或多个用户数据,以获取一组修改信息; 根据所述修改信息在所述权限数据表中进行关联数据查询,以获取清除缓存记录,其中所述清除缓存记录包括所述修改信息关联的一个或多个缓存的权限验证关键字; 所述公共缓存服务器清除所述清除缓存记录所对应的权限验证缓存记录。
6.根据权利要求1至5中任意一项所述的方法,其特征在于,所述应用服务器根据关键字生成规则对所述权限数据访问信息进行处理,以生成权限验证关键字的步骤包括: 提取所述权限数据访问信息中的用户标识和访问标识; 将所述用户标识和访问标识与所述应用服务器上运行的应用服务的应用标识进行组合,以生成所述权限验证关键字。
7.一种权限数据的验证装置,其特征在于,包括: 接收模块,用于接收客户端的权限数据访问信息; 生成模块,用于根据关键字生成规则对所述权限数据访问信息进行处理,以生成权限验证关键字; 验证模块,用于将所述权限验证关键字发送至公共缓存服务器进行验证,以获取所述权限验证关键字所对应的验证结果; 返回模块,用于在所述公共缓存服务器成功返回验证结果的情况下,将所述验证结果返回至所述客户端; 调用处理模块,用于在所述公共缓存服务器未成功返回验证结果的情况下,通过远程调用接口访问权限服务器,所述权限服务器根据接收到的权限验证关键字来查询得到对应的验证结果。
8.根据权利要求7所述的装置,其特征在于,所述生成模块包括: 提取模块,用于提取所述权限数据访问信息中的用户标识和访问标识; 组合模块,用于将所述用户 标识和访问标识与所述应用服务器上运行的应用服务的应用标识进行组合,以生成所述权限验证关键字。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括:拦截模块,用于所述应用服务器拦截所述远程调用接口,并与所述公共缓存服务器建立通讯连接。
10.一种权限数据的验证系统,其特征在于,包括: 权限服务器; 应用服务器,用于接收客户端的权限数据访问信息,并根据关键字生成规则对所述权限数据访问信息进行处理,以生成权限验证关键字; 一个或多个公共缓存服务器,连接于所述应用服务器和所述权限服务器之间,用于接收所述应用服务器发送的所述权限验证关键字,并对所述权限验证关键字进行验证,以获取所述权限验证关键字所对应的验证结果; 其中,在所述公共缓存服务器成功返回验证结果的情况下,所述应用服务器将所述验证结果返回至所述客户端;在所述公共缓存服务器未成功返回验证结果的情况下,所述应用服务器通过远程调用接口访问权限服务器,所述权限服务器根据接收到的权限验证关键字来查询得到对应的验证结果。
【文档编号】H04L9/32GK103490886SQ201210193760
【公开日】2014年1月1日 申请日期:2012年6月12日 优先权日:2012年6月12日
【发明者】郎中锋, 周春雷 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1