掌桥专利:专业的专利平台
掌桥专利
首页

基于企业微服务架构的微服务访问控制方法和装置

文献发布时间:2024-04-18 20:01:23


基于企业微服务架构的微服务访问控制方法和装置

技术领域

本申请涉及数据通信技术领域,具体而言,涉及一种基于企业微服务架构的微服务访问控制方法和装置。

背景技术

随着互联网技术和微服务软件架构的发展,为了节省各种管理软件系统的开发和部署成本,各企业组织越来越多选择微服务架构来构建各企业组织的管理软件系统。对于地理分散的大型企业组织而言,通过将企业管理软件系统的各功能模块构建为一组企业级的公共微服务,提供给企业用户进行访问。但是,这些大型企业组织往往具有多个二级组织,各个二级组织根据不同的业务需要对企业管理软件系统中的微服务存在个性化需求。为了满足各个二级组织对软件服务的个性化需求,一种方案是在现有的公共微服务的源代码基础上重写和包装部分源代码为个性化的私有微服务,与公共微服务一起部署运行,对公共微服务的原始代码的执行将在运行时被重定向到特定的私有微服务;另一种方案是软件供应商可以直接为不同二级组织开发和部署独立的私有微服务,并部署到各二级组织的私有服务器。

然而,前者方案需要在公共微服务的原始代码和重写的私有微服务的源代码中进行软件回调的代码侵入改造,增加了私有微服务和公共微服务之间的代码耦合程度,不利于企业管理软件系统的源代码复用和维护,影响了企业微服务之间的可扩展性;而后者方案当各个二级组织的业务流程需要在私有微服务和公共微服务之间进行通信交互时,也需要在公共微服务和私有微服务的源代码中进行软件接口调用的代码侵入改造,同样会增加私有微服务和公共微服务之间的代码耦合程度,不利于企业管理软件系统的源代码复用和维护,也影响了企业微服务之间的可扩展性,因此,亟需一种改进的技术方案来解决上述问题。

发明内容

有鉴于此,本申请提出一种基于企业微服务架构的微服务访问控制方法和装置,能够降低企业管理软件系统中私有微服务和公共微服务之间的代码耦合程度,提高企业管理软件系统中源代码的可复用性和可维护性,增强企业管理软件系统中微服务之间的可扩展性。

第一方面,本申请提出一种基于企业微服务架构的微服务访问控制方法,包括:

根据每个用户集中的用户基于对应的系统访问域名对所述用户集的第一私有微服务的第一访问请求,从所述用户集关联的访问接口路由表中获得所述第一私有微服务的第一访问地址;

向所述第一私有微服务的第一访问地址转发所述第一访问请求,以调用执行所述第一私有微服务;

基于所述第一私有微服务的接口代码中植入的第一代码扩展标识,生成与所述第一代码扩展标识关联的第一公共微服务的第二访问请求;

根据所述第二访问请求,从所述用户集关联的访问接口路由表中获得所述第一公共微服务的第二访问地址,向所述第一公共微服务的第二访问地址转发所述第二访问请求。

在一些实施方式中,所述方法还包括:

基于至少部分用户集共享的多个公共微服务和每个用户集私有的多个私有微服务的访问接口和访问地址创建所述用户集关联的访问接口路由表,所述访问接口路由表包含所述多个公共微服务和多个私有微服务的访问接口和访问地址的映射关系。

在一些实施方式中,所述基于所述第一私有微服务的接口代码中植入的第一代码扩展标识,生成与所述第一代码扩展标识关联的第一公共微服务的第二访问请求,还包括:

基于所述第一私有微服务的运行时环境从所述第一私有微服务的接口代码中识别所述第一代码扩展标识;

基于所述第一代码扩展标识从代码扩展标识映射表中获得与所述第一代码扩展标识关联的第一公共微服务的访问接口;

动态生成所述第一代码扩展标识对应的代码处理逻辑,以基于所述第一公共微服务的访问接口生成所述第一公共微服务的第二访问请求。

在一些实施方式中,所述方法还包括:

根据所述第二访问请求携带的所述第一公共微服务的访问接口和所述用户集的唯一标识,从所述访问接口路由表中获得所述第一公共微服务的多个版本中的指定版本的访问接口和访问地址,其中,所述访问接口路由表包含每个公共微服务的访问接口、每个公共微服务的多个版本分别对应的访问接口、访问地址和授权用户集之间的映射关系;

基于所述指定版本的访问接口生成第三访问请求,向所述指定版本的访问地址转发所述第三访问请求。

在一些实施方式中,所述方法还包括:

基于所述指定版本的运行时环境从所述指定版本的接口代码中识别第二代码扩展标识;

基于所述第二代码扩展标识从所述代码扩展标识映射表中获得与所述第二代码扩展标识关联的第二公共微服务的访问接口;

动态生成所述第二代码扩展标识对应的代码处理逻辑,以基于所述第二公共微服务的访问接口生成所述第二公共微服务的第四访问请求;

根据所述第四访问请求,从全局访问接口路由表中获得所述第二公共微服务的第四访问地址,向所述第二公共微服务的第四访问地址转发所述第四访问请求,其中所述全局访问接口路由表包括每个用户集关联的访问接口路由表的合集。

在一些实施方式中,所述方法还包括:

根据所述第四访问请求携带的所述用户集的唯一标识,从所述全局访问接口路由表中判断所述用户集是否属于所述第二公共微服务的授权用户集,如否,则不向所述第二公共微服务的第四访问地址转发所述第四访问请求。

在一些实施方式中,所述方法还包括:

向位于云端服务器的微服务注册中心注册至少部分用户集共享的多个公共微服务和每个用户集私有的多个私有微服务的访问接口和访问地址;

基于所述多个公共微服务和多个私有微服务的访问接口和访问地址在所述云端服务器创建所述全局访问接口路由表,并向每个用户集的本地服务器分发每个用户集关联的访问接口路由表。

在一些实施方式中,所述方法还包括:

基于向所述微服务注册中心注册的新的公共微服务和/或新的私有微服务,更新所述全局访问接口路由表;

基于每个用户集对所述全局访问接口路由表的订阅请求,向所述每个用户集的本地服务器分发更新后的所述每个用户集关联的访问接口路由表。

在一些实施方式中,所述方法还包括:

根据每个用户集中的用户基于对应的系统访问域名发起的用户登录请求,从所述每个用户集关联的访问接口路由表中获得第三公共微服务的第五访问地址;

向所述第三公共微服务的第五访问地址转发所述用户登录请求,以调用执行所述第三公共微服务生成所述每个用户集中的用户的令牌鉴权信息;

所述每个用户集中的用户基于所述令牌鉴权信息生成对所述第一私有微服务的所述第一访问请求。

第二方面,本申请还提出一种基于企业微服务架构的微服务访问控制装置,包括:

第一请求访问单元,用于根据每个用户集中的用户基于对应的系统访问域名对所述用户集的第一私有微服务的第一访问请求,从所述用户集关联的访问接口路由表中获得所述第一私有微服务的第一访问地址;

第一请求转发单元,用于向所述第一私有微服务的第一访问地址转发所述第一访问请求,以调用执行所述第一私有微服务;

第二请求访问单元,用于基于所述第一私有微服务的接口代码中植入的第一代码扩展标识,生成与所述第一代码扩展标识关联的第一公共微服务的第二访问请求;

第二请求转发单元,用于根据所述第二访问请求,从所述用户集关联的访问接口路由表中获得所述第一公共微服务的第二访问地址,向所述第一公共微服务的第二访问地址转发所述第二访问请求。

本申请实施例至少可以达到如下有益效果:

本申请实施例通过根据每个用户集中的用户基于对应的系统访问域名对所述用户集的第一私有微服务的第一访问请求,从所述用户集关联的访问接口路由表中获得所述第一私有微服务的第一访问地址,向所述第一私有微服务的第一访问地址转发所述第一访问请求,以调用执行所述第一私有微服务,并基于所述第一私有微服务的接口代码中植入的第一代码扩展标识,生成与所述第一代码扩展标识关联的第一公共微服务的第二访问请求,从而根据所述第二访问请求,从所述用户集关联的访问接口路由表中获得所述第一公共微服务的第二访问地址,向所述第一公共微服务的第二访问地址转发所述第二访问请求。从而,本申请实施例不需要在公共微服务和私有微服务的源代码中进行软件回调或软件接口调用的代码侵入改造,可以显著降低企业管理软件系统中私有微服务和公共微服务之间的代码耦合程度,从而提高企业管理软件系统中源代码的可复用性和可维护性,增强企业管理软件系统中微服务之间的可扩展性。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍。应当理解,以下附图仅示出了本申请的某些实施例,而不应被看作是对本申请范围的限制。

图1是根据本申请第一实施例的基于企业微服务架构的微服务访问控制方法的流程示意图;

图2示出了一种示例性的用户集关联的访问接口路由表的示意图;

图3是根据本申请第二实施例的基于企业微服务架构的微服务访问控制方法的部分流程示意图;

图4示出了一种示例性的代码扩展标识映射表的示意图;

图5是根据本申请第三实施例的基于企业微服务架构的微服务访问控制方法的部分流程示意图;

图6示出了另一种示例性的用户集关联的访问接口路由表的示意图;

图7是根据本申请第四实施例的基于企业微服务架构的微服务访问控制方法的部分流程示意图;

图8是根据本申请第五实施例的基于企业微服务架构的微服务访问控制方法的部分流程示意图;

图9示出了一种示例性的全局访问接口路由表的示意图;

图10是根据本申请第六实施例的基于企业微服务架构的微服务访问控制方法的部分流程示意图;

图11是根据本申请第七实施例的基于企业微服务架构的微服务访问控制方法的部分流程示意图;

图12是根据本申请第一实施例的基于企业微服务架构的微服务访问控制装置的结构示意图;

图13是根据本申请第二实施例的基于企业微服务架构的微服务访问控制装置的部分结构示意图;

图14是根据本申请第三实施例的基于企业微服务架构的微服务访问控制装置的部分结构示意图;

图15是根据本申请第四实施例的基于企业微服务架构的微服务访问控制装置的部分结构示意图;

图16是根据本申请第五实施例的基于企业微服务架构的微服务访问控制装置的部分结构示意图;

图17是根据本申请第六实施例的基于企业微服务架构的微服务访问控制装置的部分结构示意图;

图18是根据本申请第七实施例的基于企业微服务架构的微服务访问控制装置的部分结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请实施例的附图,对本申请实施例中的技术方案进行清楚、完整地描述。然而,应当理解,所描述的实施例仅仅是本申请的部分示例性实施例,而不是全部实施例,因此以下对本申请实施例的详细描述并非旨在限制本申请要求保护的范围。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书中的术语“第一”、“第二”等仅是用于区别描述类似的对象,而不是用于描述特定的顺序或先后次序,也不能理解为指示或暗示相对重要性。

如前所述,为了满足企业组织的各个二级组织根据不同的业务需要对企业管理软件系统的个性化需求,企业组织的软件供应商可以基于两种示例的方案为各个二级组织开发和部署私有微服务,这些方案都会涉及在公共微服务和私有微服务的源代码中进行软件回调或软件接口调用的代码侵入改造,增加了企业管理软件系统中私有微服务和公共微服务之间的代码耦合程度,不利于企业管理软件系统的源代码复用和维护,也影响了企业管理软件系统中微服务之间的可扩展性。为此,本申请实施例提出一种基于企业微服务架构的微服务访问控制方法和装置,来改进或解决上述问题。

图1是根据本申请第一实施例的基于企业微服务架构的微服务访问控制方法的流程示意图。如图1所示,该方法包括以下步骤:

步骤S101,根据每个用户集中的用户基于对应的系统访问域名对所述用户集的第一私有微服务的第一访问请求,从所述用户集关联的访问接口路由表中获得所述第一私有微服务的第一访问地址;

步骤S102,向所述第一私有微服务的第一访问地址转发所述第一访问请求,以调用执行所述第一私有微服务;

步骤S103,基于所述第一私有微服务的接口代码中植入的第一代码扩展标识,生成与所述第一代码扩展标识关联的第一公共微服务的第二访问请求;

步骤S104,根据所述第二访问请求,从所述用户集关联的访问接口路由表中获得所述第一公共微服务的第二访问地址,向所述第一公共微服务的第二访问地址转发所述第二访问请求。

本申请中,企业管理软件系统可以具有多个用户集,每个用户集对应企业组织中的二级组织的用户。在企业管理软件系统的微服务架构中,每个二级组织的用户集具有该用户集私有的一个或多个私有微服务,可以仅提供给该二级组织的用户集中的用户进行共享访问,对于其他二级组织的用户集是隔离的。这些用户集私有的私有微服务可以是为满足各二级组织的个性化业务需求而开发和部署的私有微服务,通常部署于二级组织的本地服务器。同时,在企业管理软件系统的微服务架构中还存在所有或部分二级组织的用户集所共享的公共微服务,这些公共微服务是基于企业组织的公共业务需求而开发和部署的公共微服务,通常部署于企业组织的云端服务器。每个二级组织的用户集可以企业管理软件系统中被预先分配与其对应的系统访问域名。在一个实施方式中,每个用户集对应的系统访问域名可以是企业主域名下的相互隔离的二级域名,以每个用户集的唯一标识为前缀字段。

本实施例中,首先,企业管理软件系统的每个用户集可以通过该用户集对应的系统访问域名,对该用户集的第一私有微服务发起第一访问请求,该第一访问请求是基于所述第一私有微服务的访问接口而生成。其中,所述第一私有微服务是为该用户集私有的多个私有微服务中之一,通常可以部署于该用户集对应的二级组织的本地服务器。私有微服务的访问接口可以包括基于HTTP协议的API访问接口。

在接收到每个用户集对该用户集的第一私有微服务的第一访问请求之后,从所述每个用户集关联的访问接口路由表中获得所述第一私有微服务的第一访问地址。在一个实施方式中,每个用户集关联的访问接口路由表包含了至少部分用户集共享的多个公共微服务和每个用户集私有的多个私有微服务的访问接口和对应的访问地址的映射关系。在一个实施方式中,所述每个用户集关联的访问接口路由表可以基于至少部分用户集共享的多个公共微服务和每个用户集私有的多个私有微服务的访问接口和访问地址创建。在一个实施方式中,至少部分用户集共享的多个公共微服务和每个用户集私有的多个私有微服务的访问接口和访问地址可以基于至少部分用户集共享的多个公共微服务和每个用户集私有的多个私有微服务向云端服务器的微服务注册中心提交的注册信息而得到。

图2示出了一种示例性的用户集关联的访问接口路由表的示意图。如图2所示,访问接口路由表201可以存储于二级组织A的内部网络的本地服务器200中。该访问接口路由表201可以包括由微服务访问接口和访问地址的映射关系构成的多个条目。该多个条目包括企业组织的至少部分用户集共享的多个公共微服务的访问接口和访问地址的映射关系构成的第一组条目,例如图2中202和203所示;还包括与该二级组织A的用户集私有的多个私有微服务的访问接口和访问地址的映射关系构成的第二组条目,例如图2中204和205所示。假设本实施例中的第一私有微服务是图2中204所示出的私有微服务PService1,那么在接收到该用户集基于该第一私有微服务的访问接口而生成的第一访问请求之后,根据该第一私有微服务的访问接口“https://二级域名/private/PService1”,可以从该访问接口路由表201中查找得到对应的访问地址“http://内网ip地址1: 端口”。

本实施例中,在从所述每个用户集关联的访问接口路由表中获得所述第一私有微服务的第一访问地址之后,随后向所述第一私有微服务的第一访问地址转发所述第一访问请求,以调用执行所述第一私有微服务。所述第一私有微服务属于实现该用户集个性化业务功能服务的多个私有微服务中之一,该用户集中的用户通过对该第一私有微服务的调用执行,可以执行特定的业务功能服务。

本实施例中,第一私有微服务部署的运行时环境在接收到所述第一访问请求以调用所述第一私有微服务时,会基于所述第一私有微服务的接口代码中植入的第一代码扩展标识,生成与所述第一代码扩展标识关联的第一公共微服务的第二访问请求,并根据所述第二访问请求,从该用户集关联的访问接口路由表中获得所述第一公共微服务的第二访问地址,向所述第一公共微服务的第二访问地址转发所述第二访问请求,从而实现对云端服务器部署的所述第一公共微服务的远程调用。如前所述,所述第一公共微服务是为企业组织的至少部分用户集共享的多个公共微服务中之一,是基于企业组织的公共业务需求而开发和部署的公共微服务,用于实现企业管理软件系统中的公共功能服务,例如包括但不限于用户管理服务、鉴权管理服务、权限管理服务等。在各个二级组织的用户集访问其私有微服务提供的业务功能时,通常会涉及对这些公共微服务的调用。例如,在执行该私有微服务的业务功能时,需要对访问用户进行登录鉴权或者权限验证,那么就会涉及到对企业组织的云端服务器上部署的鉴权管理服务或者权限管理服务的公共微服务的远程调用。

本申请实施例在处理私有微服务和公共微服务之间的远程调用时,不会直接采用在公共微服务和私有微服务的源代码中进行软件回调或软件接口调用的代码侵入改造的方式。相反地,通过在所述第一私有微服务的接口代码中植入的第一代码扩展标识,第一代码扩展标识可理解为用于植入到私有微服务的接口代码的预定扩展位置点的服务调用扩展标记,第一私有微服务部署的运行时环境会识别所述第一私有微服务的接口代码中植入的第一代码扩展标识,根据该第一代码扩展标识识别与所述第一代码扩展标识关联的第一公共微服务,进而动态生成面向位于远端服务器的第一公共微服务的第二访问请求,从而可以根据所述第二访问请求,从该用户集关联的访问接口路由表中获得所述第一公共微服务的第二访问地址,向所述第一公共微服务的第二访问地址转发所述第二访问请求。这种本地服务器中的私有微服务与云端服务器中的公共微服务之间通信交互方式,不需要在公共微服务和私有微服务的源代码中进行软件回调或软件接口调用的代码侵入改造,可以显著降低企业管理软件系统中私有微服务和公共微服务之间的代码耦合程度,从而提高企业管理软件系统中源代码的可复用性和可维护性,增强企业管理软件系统中微服务之间的可扩展性。

图3是根据本申请第二实施例的基于企业微服务架构的微服务访问控制方法的部分流程示意图。如图3所示,在前述实施例的方法步骤的基础上,所述步骤S103中基于所述第一私有微服务的接口代码中植入的第一代码扩展标识,生成与所述第一代码扩展标识关联的第一公共微服务的第二访问请求,还可以包括以下步骤:

步骤S301,基于所述第一私有微服务的运行时环境从所述第一私有微服务的接口代码中识别所述第一代码扩展标识;

步骤S302,基于所述第一代码扩展标识从代码扩展标识映射表中获得与所述第一代码扩展标识关联的第一公共微服务的访问接口;

步骤S303,动态生成所述第一代码扩展标识对应的代码处理逻辑,以基于所述第一公共微服务的访问接口生成所述第一公共微服务的第二访问请求。

本实施例中,在私有微服务和公共微服务的代码编辑和编译过程中,建立可供运行时环境(例如Java运行时环境)实时访问的自定义的代码扩展标识映射表。图4示出了一种示例性的代码扩展标识映射表的示意图。如图4所示,该示例性的代码扩展标识映射表401可以包括微服务接口代码中植入的多个自定义的代码扩展标识与对应的微服务访问接口之间的映射关系构成的多个条目。其中,条目402示出的代码扩展标识“@LoginRequired(attr1 = Value1,attr2= Value2)”用于标识用户登录鉴权的公共微服务的服务调用扩展标记,LoginRequired表示该代码扩展标识的唯一标识名称,括号中表示微服务调用中的属性参数的属性名称和参数值,微服务访问接口“/public/CService1”是用户登录鉴权的公共微服务的通用访问接口。条目403示出的代码扩展标识“@RightRequired(attr1 =Value3,attr2= Value4)”用于标识用户权限验证的公共微服务的服务调用扩展标记,同理,RightRequired表示该代码扩展标识的唯一标识名称,括号中表示微服务调用中的属性参数的属性名称和参数值,微服务访问接口“/public/CService2”是用户权限验证的公共微服务的通用访问接口。

本实施例中,所述第一私有微服务被调用执行时,后端的运行时环境可以从所述第一私有微服务的接口代码中识别所述第一代码扩展标识,从如图4所示的代码扩展标识映射表中获得与所述第一代码扩展标识关联的第一公共微服务的通用访问接口,然后动态生成所述第一代码扩展标识对应的代码处理逻辑,具体而言,该代码处理逻辑可以实现为第一公共微服务的接口代理类的一个运行实例,该代码处理逻辑可以基于从代码扩展标识映射表获得的所述第一公共微服务的访问接口生成所述第一公共微服务的第二访问请求,即基于所述第一公共微服务的访问接口发送远程调用请求。需要说明的是,代码扩展标识映射表中公共微服务的访问接口采用不带二级域名的通用访问接口,在生成所述第二访问请求时还需要在公共微服务的通用访问接口之前添加每个用户集的二级域名“https://二级域名”,以便能在各本地服务端进行访问。从而,本实施例不需要在公共微服务和私有微服务的源代码中进行软件回调或软件接口调用的代码侵入改造,可以进一步降低企业管理软件系统中私有微服务和公共微服务之间的代码耦合程度,提高企业管理软件系统中源代码的可复用性和可维护性,增强企业管理软件系统中微服务之间的可扩展性。

图5是根据本申请第三实施例的基于企业微服务架构的微服务访问控制方法的部分流程示意图。如图5所示,在前述任一实施例的方法步骤的基础上,所述方法还可以包括以下步骤:

步骤S501,根据所述第二访问请求携带的所述第一公共微服务的访问接口和所述用户集的唯一标识,从所述访问接口路由表中获得所述第一公共微服务的多个版本中的指定版本的访问接口和访问地址,其中,所述访问接口路由表包含每个公共微服务的访问接口、每个公共微服务的多个版本分别对应的访问接口、访问地址和授权用户集之间的映射关系;

步骤S502,基于所述指定版本的访问接口生成第三访问请求,向所述指定版本的访问地址转发所述第三访问请求。

本实施例中,在企业微服务架构中,对于所有二级组织的用户集所共享的公共微服务,在部分二级组织的用户集中也可能存在个性化的需求,因此,企业管理软件系统的软件供应商可以在现有的公共微服务的源代码的基础上,衍生开发出符合该部分用户集个性化需求的该公共微服务的多个版本,这些公共微服务的多个版本也可以部署于企业组织的云端服务器,分别授权给特定的部分用户集的用户进行共享访问。因此,在此场景下,在前述实施例的基础上,当第一私有微服务的运行时环境根据所述第二访问请求,从所述用户集关联的访问接口路由表中获得所述第一公共微服务的第二访问地址,向所述第一公共微服务的第二访问地址转发所述第二访问请求时,可以进一步根据所述第二访问请求携带的所述第一公共微服务的访问接口和所述用户集的唯一标识,从所述访问接口路由表中获得所述第一公共微服务的多个版本中的指定版本的访问接口和访问地址。本实施例中,所述访问接口路由表进一步包含每个公共微服务的访问接口、每个公共微服务的多个版本分别对应的访问接口、访问地址和授权用户集之间的映射关系。其中,所述用户集的唯一标识可以从所述第二访问请求中包含的二级域名的前缀字段获得。

图6示出了另一种示例性的用户集关联的访问接口路由表的示意图。如图6所示,存储于二级组织A的内部网络的本地服务器200中的访问接口路由表201可以包括由每个公共微服务的访问接口、每个公共微服务的多个版本分别对应的访问接口、访问地址和授权用户集之间的映射关系构成的多个条目。其中,如图6中601-603所示,公共微服务CService1包括原始版本CService1和两个衍生版本CService1_V1、CService1_V2,原始版本CService1具有对应的访问接口“https://二级域名/public/CService1”和访问地址“http://外网ip地址1: 端口”,衍生版本CService1_V1具有对应的访问接口“https://二级域名/public/CService1_V1”和访问地址“http://外网ip地址3: 端口”,衍生版本CService1_V2具有对应的访问接口“https://二级域名/public/CService1_V2”和访问地址“http://外网ip地址4: 端口”。其中,衍生版本CService1_V1对应的授权用户集为{UserSetA},表示该版本仅授权给由唯一标识UserSetA标识的用户集A,衍生版本CService1_V2对应的授权用户集为{UserSetB, UserSetC},表示该版本仅授权给由唯一标识UserSetB标识的用户集B和由唯一标识UserSetC标识的用户集C,而原始版本CService1的授权用户集为{ALL},表示授权给全部用户集共享访问。在一个实施方式中,对于具有多个版本的公共微服务,如果每个用户集被授权了公共微服务的多个版本,则可以根据访问请求中二级域名的前缀字段所表征的用户集的唯一标识,从授权给自己的多个版本中选择版本最新的微服务版本。例如,对于用户集A来说,其同时授权了公共微服务CService1的原始版本和衍生版本CService1_V1,则从所述访问接口路由表中获得所述公共微服务CService1的衍生版本CService1_V1作为指定版本,并返回该指定版本的访问接口和访问地址;同理,对于用户集B,其同时授权了公共微服务CService1的原始版本和衍生版本CService1_V2,则从所述访问接口路由表中获得所述公共微服务CService1的衍生版本CService1_V2作为指定版本,并返回该指定版本的访问接口和访问地址。

本实施例中,从所述访问接口路由表中获得所述第一公共微服务的多个版本中的指定版本的访问接口和访问地址之后,随后基于所述指定版本的访问接口生成第三访问请求,向所述指定版本的访问地址转发所述第三访问请求。从而,可以进一步在满足公共微服务的个性化基础上,进一步降低公共微服务的多个版本之间以及私有微服务和公共微服务之间的代码耦合程度,提高企业管理软件系统中源代码的可复用性和可维护性,增强企业管理软件系统中微服务之间的可扩展性。

图7是根据本申请第四实施例的基于企业微服务架构的微服务访问控制方法的部分流程示意图。如图7所示,在前述任一实施例的方法步骤的基础上,所述方法还可以包括以下步骤:

步骤S701,基于所述指定版本的运行时环境从所述指定版本的接口代码中识别第二代码扩展标识;

步骤S702,基于所述第二代码扩展标识从所述代码扩展标识映射表中获得与所述第二代码扩展标识关联的第二公共微服务的访问接口;

步骤S703,动态生成所述第二代码扩展标识对应的代码处理逻辑,以基于所述第二公共微服务的访问接口生成所述第二公共微服务的第四访问请求;

步骤S704,根据所述第四访问请求,从全局访问接口路由表中获得所述第二公共微服务的第四访问地址,向所述第二公共微服务的第四访问地址转发所述第四访问请求,其中所述全局访问接口路由表包括每个用户集关联的访问接口路由表的合集。

本实施例中,在企业微服务架构中,对于部分公共微服务,也可能存在公共微服务之间的业务调用关系。因此,参考前述实施例所述,同样可以在被部分用户集的私有微服务远程调用的公共微服务的指定版本的接口代码中植入第二代码扩展标识,从而基于所述指定版本的运行时环境从所述指定版本的接口代码中识别第二代码扩展标识,基于所述第二代码扩展标识从所述代码扩展标识映射表中获得与所述第二代码扩展标识关联的第二公共微服务的访问接口,从而动态生成所述第二代码扩展标识对应的代码处理逻辑,以便基于所述第二公共微服务的访问接口生成所述第二公共微服务的第四访问请求,随后可以根据所述第四访问请求,从全局访问接口路由表中获得所述第二公共微服务的第四访问地址,向所述第二公共微服务的第四访问地址转发所述第四访问请求,从而实现公共微服务之间的业务交互。其中,所述全局访问接口路由表包括每个用户集关联的访问接口路由表的合集,存储于企业组织的云端服务器。从而,本实施例可以在满足特定用户集对公共微服务的个性化需求基础上,进一步降低公共微服务之间的代码耦合程度,提高企业管理软件系统中源代码的可复用性和可维护性,增强企业管理软件系统中微服务之间的可扩展性。

在一个实施方式中,本实施例在步骤S703之后还可以进一步包括:根据所述第四访问请求携带的所述用户集的唯一标识,从所述全局访问接口路由表中判断所述用户集是否属于所述第二公共微服务的授权用户集,如否,则不向所述第二公共微服务的第四访问地址转发所述第四访问请求。其中,所述第四访问请求携带的所述用户集的唯一标识可以从所述第四访问请求中包含的二级域名的前缀字段获得。

从而,本实施例可以进一步针对特定用户集的授权个性化地控制公共微服务之间的业务调用关系,在满足特定用户集对公共微服务的个性化需求基础上,进一步降低公共微服务之间的代码耦合程度,提高企业管理软件系统中源代码的可复用性和可维护性,增强企业管理软件系统中微服务之间的可扩展性。

图8是根据本申请第五实施例的基于企业微服务架构的微服务访问控制方法的部分流程示意图。如图8所示,在前述任一实施例的方法步骤的基础上,所述方法还可以包括以下步骤:

步骤S801,向位于云端服务器的微服务注册中心注册至少部分用户集共享的多个公共微服务和每个用户集私有的多个私有微服务的访问接口和访问地址;

步骤S802,基于所述多个公共微服务和多个私有微服务的访问接口和访问地址在所述云端服务器创建所述全局访问接口路由表,并向每个用户集的本地服务器分发每个用户集关联的访问接口路由表。

本实施例中,当公共微服务和私有微服务被部署时,会向位于企业组织的云端服务器的微服务注册中心注册至少部分用户集共享的多个公共微服务和每个用户集私有的多个私有微服务的访问接口和访问地址。随后,基于所述多个公共微服务和多个私有微服务的访问接口和访问地址在所述云端服务器创建所述全局访问接口路由表,并向每个用户集的本地服务器分发每个用户集关联的访问接口路由表。

图9示出了一种示例性的全局访问接口路由表的示意图。如图9所示,全局访问接口路由表901可以存储于企业组织的云端服务器900中。该全局访问接口路由表901可以包括向位于云端服务器的微服务注册中心注册的多个公共微服务和每个用户集私有的多个私有微服务的访问接口和访问地址的映射关系构成的全部条目,相当于每个用户集关联的访问接口路由表的合集。其中,这些条目包括企业组织的至少部分用户集共享的多个公共微服务的访问接口和访问地址的映射关系构成的第一组条目,例如902和903所示,需要说明的是,在全局访问接口路由表中公共微服务的访问接口采用不带二级域名的通用访问接口,在向每个用户集的本地服务器分发每个用户集关联的访问接口路由表时,需要在公共微服务的通用访问接口之前添加每个用户集的二级域名“https://二级域名”,以便能在各用户集的本地服务端进行访问;还包括每个用户集私有的多个私有微服务的访问接口和访问地址的映射关系构成的第二组条目,例如904-907所示,其中904和905示出二级组织A的用户集A的私有微服务PService1和PService2的访问接口和访问地址,906和907示出二级组织B的用户集B的私有微服务PService3和PService4的访问接口和访问地址。

图10是根据本申请第六实施例的基于企业微服务架构的微服务访问控制方法的部分流程示意图。如图10所示,在前述任一实施例的方法步骤的基础上,所述方法还可以包括以下步骤:

步骤S1001,基于向所述微服务注册中心注册的新的公共微服务和/或新的私有微服务,更新所述全局访问接口路由表;

步骤S1002,基于每个用户集对所述全局访问接口路由表的订阅请求,向所述每个用户集的本地服务器分发更新后的所述每个用户集关联的访问接口路由表。

本实施例中,当新的公共微服务和/或私有微服务被部署时,会向位于企业组织的云端服务器的微服务注册中心注册新的公共微服务和/或私有微服务的访问接口和访问地址。随后,可以基于基于每个用户集对所述全局访问接口路由表的订阅请求,及时向所述每个用户集的本地服务器分发更新后的所述每个用户集关联的访问接口路由表,使得每个本地服务器的访问接口路由表随时都保持最新的状态,可以保证在私有微服务和公共微服务之间的远程调用正常运行。

图11是根据本申请第七实施例的基于企业微服务架构的微服务访问控制方法的部分流程示意图。如图11所示,在前述任一实施例的方法步骤的基础上,所述方法还可以包括以下步骤:

步骤S1101,根据每个用户集中的用户基于对应的系统访问域名发起的用户登录请求,从所述每个用户集关联的访问接口路由表中获得第三公共微服务的第五访问地址;

步骤S1102,向所述第三公共微服务的第五访问地址转发所述用户登录请求,以调用执行所述第三公共微服务生成所述每个用户集中的用户的令牌鉴权信息;

步骤S1103,所述每个用户集中的用户基于所述令牌鉴权信息生成对所述第一私有微服务的所述第一访问请求。

本实施例,在每个用户集的用户生成对所述第一私有微服务的所述第一访问请求之前,预先根据每个用户集中的用户基于对应的系统访问域名发起的用户登录请求,从所述每个用户集关联的访问接口路由表中获得第三公共微服务的第五访问地址,并向所述第三公共微服务的第五访问地址转发所述用户登录请求,以调用执行所述第三公共微服务生成所述每个用户集中的用户的令牌鉴权信息,第三公共微服务可以是用于用户登录鉴权的公共微服务,从而所述每个用户集中的用户基于所述令牌鉴权信息生成对所述第一私有微服务的所述第一访问请求,使得对本地私有微服务的访问请求中都会携带每个用户的令牌鉴权信息。在前述实施例的技术效果基础上,可以进一步保证对私有微服务和公共微服务之间访问和远程调用的数据安全性。

图12是根据本申请第一实施例的基于企业微服务架构的微服务访问控制装置的结构示意图。如图12所示,本申请实施例的基于企业微服务架构的微服务访问控制装置,可以包括以下单元:

第一请求访问单元1201,用于根据每个用户集中的用户基于对应的系统访问域名对所述用户集的第一私有微服务的第一访问请求,从所述用户集关联的访问接口路由表中获得所述第一私有微服务的第一访问地址;

第一请求转发单元1202,用于向所述第一私有微服务的第一访问地址转发所述第一访问请求,以调用执行所述第一私有微服务;

第二请求访问单元1203,用于基于所述第一私有微服务的接口代码中植入的第一代码扩展标识,生成与所述第一代码扩展标识关联的第一公共微服务的第二访问请求;

第二请求转发单元1204,用于根据所述第二访问请求,从所述用户集关联的访问接口路由表中获得所述第一公共微服务的第二访问地址,向所述第一公共微服务的第二访问地址转发所述第二访问请求。

在一些实施方式中,如图13所示,在前述实施例的基础上,所述第二请求访问单元1203,还可以包括以下单元:

代码识别单元1301,用于基于所述第一私有微服务的运行时环境从所述第一私有微服务的接口代码中识别所述第一代码扩展标识;

代码映射单元1302,用于基于所述第一代码扩展标识从代码扩展标识映射表中获得与所述第一代码扩展标识关联的第一公共微服务的访问接口;

代码生成单元1303,用于动态生成所述第一代码扩展标识对应的代码处理逻辑,以基于所述第一公共微服务的访问接口生成所述第一公共微服务的第二访问请求。

在一些实施方式中,如图14所示,在前述任一实施例的基础上,所述装置还可以包括以下单元:

服务版本获取单元1401,用于根据所述第二访问请求携带的所述第一公共微服务的访问接口和所述用户集的唯一标识,从所述访问接口路由表中获得所述第一公共微服务的多个版本中的指定版本的访问接口和访问地址,其中,所述访问接口路由表包含每个公共微服务的访问接口、每个公共微服务的多个版本分别对应的访问接口、访问地址和授权用户集之间的映射关系;

第三请求转发单元1402,用于基于所述指定版本的访问接口生成第三访问请求,向所述指定版本的访问地址转发所述第三访问请求。

在一些实施方式中,如图15所示,在前述任一实施例的基础上,所述装置还可以包括以下单元:

第二代码识别单元1501,用于基于所述指定版本的运行时环境从所述指定版本的接口代码中识别第二代码扩展标识;

第二代码映射单元1502,用于基于所述第二代码扩展标识从所述代码扩展标识映射表中获得与所述第二代码扩展标识关联的第二公共微服务的访问接口;

第二代码生成单元1503,用于动态生成所述第二代码扩展标识对应的代码处理逻辑,以基于所述第二公共微服务的访问接口生成所述第二公共微服务的第四访问请求;

第四请求转发单元1504,用于根据所述第四访问请求,从全局访问接口路由表中获得所述第二公共微服务的第四访问地址,向所述第二公共微服务的第四访问地址转发所述第四访问请求,其中所述全局访问接口路由表包括每个用户集关联的访问接口路由表的合集。

在一个实施方式中,所述第四请求转发单元1504还用于:根据所述第四访问请求携带的所述用户集的唯一标识,从所述全局访问接口路由表中判断所述用户集是否属于所述第二公共微服务的授权用户集,如否,则不向所述第二公共微服务的第四访问地址转发所述第四访问请求。

在一些实施方式中,如图16所示,在前述任一实施例的基础上,所述装置还可以包括以下单元:

服务注册单元1601,用于向位于云端服务器的微服务注册中心注册至少部分用户集共享的多个公共微服务和每个用户集私有的多个私有微服务的访问接口和访问地址;

路由表创建单元1602,用于基于所述多个公共微服务和多个私有微服务的访问接口和访问地址在所述云端服务器创建所述全局访问接口路由表,并向每个用户集的本地服务器分发每个用户集关联的访问接口路由表。

在一些实施方式中,如图17所示,在前述任一实施例的基础上,所述装置还可以包括以下单元:

路由表更新单元1701,用于基于向所述微服务注册中心注册的新的公共微服务和/或新的私有微服务,更新所述全局访问接口路由表;

路由表分发单元1702,用于基于每个用户集对所述全局访问接口路由表的订阅请求,向所述每个用户集的本地服务器分发更新后的所述每个用户集关联的访问接口路由表。

在一些实施方式中,如图18所示,在前述任一实施例的基础上,所述装置还可以包括以下单元:

登录请求单元1801,用于根据每个用户集中的用户基于对应的系统访问域名发起的用户登录请求,从所述每个用户集关联的访问接口路由表中获得第三公共微服务的第五访问地址;

令牌获取单元1802,用于向所述第三公共微服务的第五访问地址转发所述用户登录请求,以调用执行所述第三公共微服务生成所述每个用户集中的用户的令牌鉴权信息;

请求生成单元1803,用于所述每个用户集中的用户基于所述令牌鉴权信息生成对所述第一私有微服务的所述第一访问请求。

综上,本申请实施例提出的基于企业微服务架构的微服务访问控制方法和装置,通过根据每个用户集中的用户基于对应的系统访问域名对所述用户集的第一私有微服务的第一访问请求,从所述用户集关联的访问接口路由表中获得所述第一私有微服务的第一访问地址,向所述第一私有微服务的第一访问地址转发所述第一访问请求,以调用执行所述第一私有微服务,并基于所述第一私有微服务的接口代码中植入的第一代码扩展标识,生成与所述第一代码扩展标识关联的第一公共微服务的第二访问请求,从而根据所述第二访问请求,从所述用户集关联的访问接口路由表中获得所述第一公共微服务的第二访问地址,向所述第一公共微服务的第二访问地址转发所述第二访问请求。本申请实施例不需要在公共微服务和私有微服务的源代码中进行软件回调或软件接口调用的代码侵入改造,可以显著降低企业管理软件系统中私有微服务和公共微服务之间的代码耦合程度,从而提高企业管理软件系统中源代码的可复用性和可维护性,增强企业管理软件系统中微服务之间的可扩展性。

需要说明的是,本领域技术人员可以理解,本申请的方法实施例所描述的不同实施方式及其说明解释和所达到的技术效果,同样适用于本申请的装置实施例中,在此不再赘述。

进一步地,本申请实施例还提出一种电子设备,该电子设备可以包括:处理器和存储器。其中,存储器存储有计算机程序指令,处理器可以调用存储器中的计算机程序指令以执行本申请任一实施方式所述方法的全部或部分步骤。上述的存储器中的计算机程序指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。

进一步地,本申请还提供一种计算机程序产品,所述计算机程序产品包括存储有计算机程序的非暂态计算机可读存储介质,当该计算机可读存储介质连接至计算机设备,所述计算机程序被计算机设备的一个或多个处理器执行时,能够执行本申请任一实施方式所述方法的全部或部分步骤。

进一步地,本申请还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序可以被一个或多个处理器执行以执行本申请任一实施方式所述方法的全部或部分步骤。

通过以上的实施方式的描述,本领域技术人员可以清楚地了解到本申请的各实施方式可借助软件或者软件结合必要的通用硬件平台的方式来实现,当然也可以通过硬件功能实现。基于这样的理解,本申请的技术方案本质上或者对现有技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备,例如包括但不限于个人计算机,服务器,或者网络设备等,来执行本申请任一实施方式所述方法的全部或部分步骤。前述的存储介质可以包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储计算机程序代码的介质。

以上描述了本申请示例性的实施例,应当理解,上述示例性的实施例不是限制性的,而是说明性的,本申请的保护范围不限于此。应理解,本领域技术人员在不脱离本申请的精神和范围的情况下,可以对本申请实施例进行修改和变型,这些修改和变型理应在本申请的保护范围之内。

技术分类

06120116551638