一种权限校验方法及装置与流程

文档序号:32391321发布日期:2022-11-30 08:22阅读:85来源:国知局
一种权限校验方法及装置与流程

1.本技术主要涉及计算机技术领域,特别涉及一种权限校验方法及装置。


背景技术:

2.微服务架构下,一般包括注册中心、网关、微服务等模块。其中,网关是整个微服务系统的入口,访问注册中心,实现微服务的调用。当用户向微服务发起请求时,需要在网关对请求进行鉴权,从而校验该用户对该功能是否有权限。
3.然而,目前这种权限校验的方案,只在网关校验该用户对该功能是否有权限,是粗粒度的权限控制,无法校验该用户在该功能下对某资源的权限,即细粒度的权限控制。


技术实现要素:

4.有鉴于此,本技术提供了一种权限校验方法及装置,通过分步权限校验方案,在具体的微服务中校验该用户在该功能下对该资源的权限,实现细粒度的权限控制。
5.一方面,本技术实施例首先提供了一种权限校验方法,所述方法包括:
6.网关接收目标用户的资源请求,所述资源请求携带有目标功能、目标微服务和目标资源的信息;
7.所述网关基于所述资源请求,校验所述目标用户对所述目标功能的权限;
8.若所述目标用户对所述目标功能有权限,则将所述资源请求转发到所述目标微服务;
9.所述目标微服务基于所述资源请求,校验所述目标用户在所述目标功能下对所述目标资源的访问权限。
10.可选的,所述方法还包括:
11.获取用户权限信息,所述用户权限信息包括公共功能清单和特定用户的权限信息;
12.对所述用户权限信息加工整合,并存储到缓存中。
13.可选的,所述网关基于所述资源请求,校验所述目标用户对所述目标功能的权限,包括:
14.所述网关基于所述资源请求,查询所述缓存中的用户权限信息,校验所述目标用户对所述目标功能的权限。
15.可选的,所述目标微服务基于所述资源请求,校验所述目标用户在所述目标功能下对目标资源的访问权限,包括:
16.所述目标微服务基于所述资源请求,查询所述缓存中的用户权限信息,校验所述目标用户在所述目标功能下对目标资源的访问权限。
17.可选的,所述对所述用户权限信息加工整合,并存储到缓存中,包括:
18.将所述用户权限信息按照用户维度、功能维度和资源维度加工整合,并存储到缓存中。
19.可选的,所述方法还包括:
20.基于所述资源请求,所述网关通过注册中心查找所述目标微服务,获得所述目标微服务的地址;
21.所述将所述资源请求转发到所述目标微服务,包括:
22.根据所述目标微服务的地址,将所述资源请求转发到所述目标微服务。
23.可选的,所述方法还包括:
24.预先将微服务的服务信息注册到所述注册中心,以便于所述注册中心查找微服务。
25.另一方面,本技术实施例还提供了一种权限校验装置,所述装置包括:
26.请求接收模块,用于网关接收目标用户的资源请求,所述资源请求携带有目标功能、目标微服务和目标资源的信息;
27.功能校验模块,用于所述网关基于所述资源请求,校验所述目标用户对所述目标功能的权限;
28.请求转发模块,用于若所述目标用户对所述目标功能有权限,则将所述资源请求转发到所述目标微服务;
29.资源校验模块,用于所述目标微服务基于所述资源请求,校验所述目标用户在所述目标功能下对所述目标资源的访问权限。
30.另一方面,本技术实施例还提供了一种设备,所述设备包括:处理器和存储器;
31.所述存储器,用于存储指令;
32.所述处理器,用于执行所述存储器中的所述指令,执行以上方面所述的方法。
33.另一方面,本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有程序代码或指令,当其在计算机上运行时,使得所述计算机执行以上方面所述的方法。
34.由此可见,本技术实施例有如下有益效果:
35.本技术通过网关接收目标用户的资源请求,网关基于该资源请求,校验目标用户对目标功能的权限;若目标用户对目标功能有权限,则将资源请求转发到目标微服务;目标微服务基于资源请求,校验目标用户在目标功能下对目标资源的访问权限。本技术根据资源请求携带的信息,在网关对目标用户的功能权限进行校验,若功能权限校验通过,则进一步在具体的微服务中对目标用户在该功能下的资源权限进行校验;通过分步权限校验方案,实现了细粒度的权限控制。
附图说明
36.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
37.图1为本技术实施例提供的一种权限校验方法的流程图;
38.图2为本技术实施例提供的一种权限校验方法的模块示意图;
39.图3为本技术实施例提供的一种权限校验装置的示意图。
具体实施方式
40.为使本技术的上述目的、特征和优点能够更加明显易懂,下面结合附图对本技术的具体实施方式做详细的说明。
41.在下面的描述中阐述了很多具体细节以便于充分理解本技术,但是本技术还可以采用其它不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本技术内涵的情况下做类似推广,因此本技术不受下面公开的具体实施例的限制。
42.目前,微服务架构下,往往通过查询数据库的方式直接在网关对接收到的请求进行鉴权,以便于校验请求对应的用户对其需要访问的功能是否有权限。这种权限校验方案,具有以下问题:
43.一方面,查询数据库对权限进行验证,连接数据库速度较慢,同时还需要对数据进行二次组装、联合等,效率较低;
44.另一方面,仅在网关校验用户对功能是否有权限,是粗粒度的权限控制,无法校验该用户在该功能下对某资源的权限。
45.为了解决以上问题中的至少一个问题,本技术一种权限校验方法及装置,通过分步权限校验方案,在具体的微服务中校验该用户在该功能下对该资源的权限,实现细粒度的权限控制。
46.为了便于理解,下面结合附图对本技术实施例提供的一种权限校验方法及装置进行详细的说明。
47.参考图1所示,为本技术实施例提供的一种权限校验方法的流程图,该方法可以包括以下步骤:
48.s101:网关接收目标用户的资源请求,所述资源请求携带有目标功能、目标微服务和目标资源的信息。
49.本技术实施例中,目标用户的资源请求是由服务请求方向网关发送的访问微服务系统的请求,可能为浏览器、app、其他系统或者本系统前端转发的来自外部的请求。网关为整个微服务系统的入口,负责对资源请求进行转发。资源请求中一般包括url(uniformresource locator,统一资源定位符)字段并携带有报文信息等,根据资源请求及其携带的信息,能够获取目标用户需要访问的目标功能、用于处理或执行目标功能的目标微服务,以及目标用户需要访问的目标资源的信息。其中,目标微服务即该资源请求对应的服务提供方。
50.s102:所述网关基于所述资源请求,校验所述目标用户对所述目标功能的权限。
51.本技术实施例中,在网关处基于资源请求,校验目标用户对目标功能的权限,具体的,在网关进行目标功能的权限校验,一方面,是为了将功能权限校验前置,能够避免无权限甚至恶意的流量在微服务系统内多次流动;另一方面,在网关只进行目标功能的权限校验,而不进行目标资源的权限校验,是为了提升网关的性能。由于目标功能的信息体现在资源请求的url字段中,可以直接获得,而目标资源的信息一般包含在报文中,获取目标资源的信息需要对报文字段进行解析,效率较低,因此仅在网关进行目标功能的权限校验。
52.一种可能的实现方式中,所述方法还包括:
53.获取用户权限信息,所述用户权限信息包括公共功能清单和特定用户的权限信息;
54.对所述用户权限信息加工整合,并存储到缓存中。
55.本技术实施例中,可以预先从权限数据持久保存的位置(例如数据库、文件系统等),加载用户权限信息,再将用户权限信息存储到缓存中,方便数据的快速读取。
56.数据库、文件系统等位置,是用户权限信息持久化的存储设备,存储时间长,但存在读取速度较慢、需要对数据二次加工的问题。用户权限信息主要包括两部分:一部分为公共功能清单,即所有用户都具备权限的功能;另一部分为特定用户的权限信息,即用户具有的功能清单及相应功能下的资源信息。其中,公共功能清单一般在系统启动时加载,特定用户的权限信息一般在用户登录时加载。数据库中的权限信息可能比较复杂,比如在“用户-角色-功能”权限模型中,需要进行联表查询,通过用户查询用户具有的角色,再通过角色查询相应的功能,进一步才能判断用户是否对该功能具有权限。在具体的系统中,可能还会有租户、资源、用户组等项目,权限相关数据存储表更加复杂,通过查询数据库实现权限验证效率较低。
57.而缓存是基于内存的高效存储器,包括但不限于redis等常见的缓存。缓存中的数据应以便于快速读取的方式存储,例如:
58.一种可能的实现方式中,所述对所述用户权限信息加工整合,并存储到缓存中,包括:
59.将所述用户权限信息按照用户维度、功能维度和资源维度加工整合,并存储到缓存中。
60.本技术实施例中,为了便于快速读取,可以提前对用户权限信息进行加工整合,按照多个维度存储,建立用户、功能以及资源之间的关联,方便快速查找。具体的,还可以基于key-value的哈希存储策略进行存储,便于实现快速查找和验证。
61.具体的,当系统启动过程中,将公共功能清单加载到缓存中,设定为持久生效;当用户登录时,将数据库中持久化的用户权限信息解析、整合到缓存中生成用户相关的权限信息,并设定生存期;当生存期到期后或者用户触发退出系统时,系统清理缓存中该用户相关的权限信息;当用户权限信息变更、公共功能清单变更时,触发相应缓存数据的更新操作。
62.本技术实施例中,一方面,将公共资源清单单独存储到缓存中,无须权限验证即可放行;另外一方面,将特定用户的功能清单及相应功能下的资源信息存储到缓存中,当使用check(user1,func1)时可以快速返回true/false,当使用check(user1,func1,resource1)时可以快速返回true/false。
63.一种可能的实现方式中,所述网关基于所述资源请求,校验所述目标用户对所述目标功能的权限,包括:
64.所述网关基于所述资源请求,查询所述缓存中的用户权限信息,校验所述目标用户对所述目标功能的权限。
65.本技术实施例中,通过查询缓存中的用户权限信息,能够实现校验时快速高效地访问。
66.s103:若所述目标用户对所述目标功能有权限,则将所述资源请求转发到所述目标微服务。
67.本技术实施例中,若所述目标用户对所述目标功能没有权限,则拒绝该请求对微
服务系统的进一步访问,从而有效避免无权限请求或恶意访问。
68.一种可能的实现方式中,所述方法还包括:
69.基于所述资源请求,所述网关通过注册中心查找所述目标微服务,获得所述目标微服务的地址;
70.所述将所述资源请求转发到所述目标微服务,包括:
71.根据所述目标微服务的地址,将所述资源请求转发到所述目标微服务。
72.具体的,微服务系统中包括多个微服务,注册中心则是各个微服务注册的地方。网关查找目标微服务获得地址后,可以根据目标微服务的地址,将请求转发到目标微服务,即资源请求所对应的服务提供方。
73.一种可能的实现方式中,所述方法还包括:
74.预先将微服务的服务信息注册到所述注册中心,以便于所述注册中心查找微服务。
75.本技术实施例中,可以预先在各个微服务启动后即将各个微服务的服务信息注册到注册中心,以便于各个微服务被发现和调用。
76.需要说明的是,上述实施例中,微服务的注册和用户权限信息存储到缓存中都是权限校验的前置步骤,不需要在每次权限校验的过程中都执行。
77.s104:所述目标微服务基于所述资源请求,校验所述目标用户在所述目标功能下对所述目标资源的访问权限。
78.本技术实施例中,在目标微服务处对目标用户在目标功能下对目标资源的访问权限进行校验,若校验通过,则资源请求可以访问对应的目标资源;若不通过,则返回false等标识,提示资源请求被拒绝。
79.在目标微服务进行资源权限的校验时,可以通过通用的函数实现一处编写、各处调用的方式,降低对目标微服务的各个业务功能的侵入;进一步的,还可以通过拦截器等方式实现。
80.一种可能的实现方式中,所述目标微服务基于所述资源请求,校验所述目标用户在所述目标功能下对目标资源的访问权限,包括:
81.所述目标微服务基于所述资源请求,查询所述缓存中的用户权限信息,校验所述目标用户在所述目标功能下对目标资源的访问权限。
82.目标微服务通过查询缓存校验目标用户的资源权限与步骤s102对应的具体实施例中,网关通过查询缓存校验目标用户的功能权限的方法基本一致,在此不进行赘述。
83.本技术实施例还提供了一种权限校验方法的模块示意图,参考图2所示,下面对图中各个模块的连接关系以及权限校验方法的一种具体流程进行介绍。
84.如图所示,p0和p1为权限校验方法的前置步骤,0-4为权限校验方法步骤。
85.p0:各个微服务在启动后将服务信息注册到注册中心;
86.p1:预先将用户权限信息加载、整合到缓存中,图中以数据库为例;
87.0:服务请求方将资源请求发送至网关;
88.1:网关查询缓存,校验用户对该功能的权限,如果该用户对该功能无权限,则拒绝该请求;如果该用户对该功能有权限,则继续进行后续的步骤;
89.2:网关通过注册中心查找服务提供方,获得服务提供方的地址;
90.3:网关将请求转发到服务提供方(图中以微服务s3为例);
91.4:各个微服务模块通过访问缓存验证用户该功能下对某资源的访问权限。
92.图中,微服务s1、s2、s3为提供系统业务功能的模块,例如可以为系统管理服务、监控服务、配置服务等。
93.本技术实施例通过网关接收目标用户的资源请求,网关基于该资源请求,校验目标用户对目标功能的权限;若目标用户对目标功能有权限,则将资源请求转发到目标微服务;目标微服务基于资源请求,校验目标用户在目标功能下对目标资源的访问权限。本技术实施例根据资源请求携带的信息,在网关对目标用户的功能权限进行校验,尽早拒绝不合法的请求,以提升系统的效率;若功能权限校验通过,则进一步在具体的微服务中对目标用户在该功能下的资源权限进行校验;通过分步权限校验方案,实现了细粒度的权限控制。
94.进一步的,本技术实施例还将用户权限信息以便于快速读取的方式存储的缓存中,实现数据的快速读取。
95.基于以上权限校验方法,本技术实施例还提供了一种权限校验装置,参考图3所示,该图为本技术实施例提供的一种权限校验装置的示意图。该装置可以包括:
96.请求接收模块201,用于网关接收目标用户的资源请求,所述资源请求携带有目标功能、目标微服务和目标资源的信息;
97.功能校验模块202,用于所述网关基于所述资源请求,校验所述目标用户对所述目标功能的权限;
98.请求转发模块203,用于若所述目标用户对所述目标功能有权限,则将所述资源请求转发到所述目标微服务;
99.资源校验模块204,用于所述目标微服务基于所述资源请求,校验所述目标用户在所述目标功能下对所述目标资源的访问权限。
100.一种可能的实现方式中,所述装置还包括权限信息存储模块,用于:
101.获取用户权限信息,所述用户权限信息包括公共功能清单和特定用户的权限信息;
102.对所述用户权限信息加工整合,并存储到缓存中。
103.一种可能的实现方式中,所述功能校验模块,具体用于:所述网关基于所述资源请求,查询所述缓存中的用户权限信息,校验所述目标用户对所述目标功能的权限。
104.一种可能的实现方式中,所述资源校验模块,具体用于:
105.所述目标微服务基于所述资源请求,查询所述缓存中的用户权限信息,校验所述目标用户在所述目标功能下对目标资源的访问权限。
106.一种可能的实现方式中,所述权限信息存储模块,具体用于:
107.将所述用户权限信息按照用户维度、功能维度和资源维度加工整合,并存储到缓存中。
108.一种可能的实现方式中,所述装置还包括地址获取模块,用于:基于所述资源请求,所述网关通过注册中心查找所述目标微服务,获得所述目标微服务的地址;所述请求转发模块,具体用于:
109.根据所述目标微服务的地址,将所述资源请求转发到所述目标微服务。
110.一种可能的实现方式中,所述装置还包括微服务注册模块,用于:
111.预先将微服务的服务信息注册到所述注册中心,以便于所述注册中心查找微服务。
112.基于以上权限校验方法,本技术实施例还提供了一种设备,该设备可以包括:处理器和存储器;
113.存储器,用于存储指令;
114.处理器,用于执行所述存储器中的所述指令,执行上文所述的权限校验方法。
115.基于以上的权限校验方法,本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有程序代码或指令,当其在计算机上运行时,使得所述计算机执行上文所述的权限校验方法。
116.需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
117.应当理解,在本技术中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
118.还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
119.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
120.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1