用于web服务的细粒度动态
权限控制方法和系统
技术领域
1.本发明涉及web服务后台系统权限控制技术领域,具体地,涉及一种用于web服务的细粒度动态权限控制方法和系统。
背景技术:
2.web服务后台系统作为web服务核心,不仅提供了web业务服务,同时还要注重web服务的访问的安全控制,目前主流权限控制皆通过配合注解模式实现权限的访问控制,使得权限控制粒度在编码之初就被完全固定,然而随着系统的运行以及使用人员的结构以及职责分工的复杂变化,访问权限的控制却需要不同程度的进行调整变更。
3.专利文献cn114021186a(申请号:cn202111282678.x)公开了一种基于运行时hook的web系统行列细粒度访问控制方法,实现相同角不同用户执行相同的sql语句,随配置标签属性变化而具备不同的访问权限,从数据行、数据列两维度动态完成数据的最小权限原则落地,进面获取符合既定安全策略的数据集,避免数据越权导致数据泄露。
4.然而基于编码层面的权限控制,需要重新对系统的源代码进行编码重新设计编译等来适应这种变化。因此,为了简化人员的不必要的工作同时提高系统的灵活性能,提出了一种基于用户web服务细粒度动态权限控制方法,能够满足不修改web服务源代码情况下快速实现对权限控制的细粒度按需调整。
技术实现要素:
5.针对现有技术中的缺陷,本发明的目的是提供一种用于web服务的细粒度动态权限控制方法和系统。
6.根据本发明提供的用于web服务的细粒度动态权限控制方法,包括:
7.步骤1:将web后台服务中的所有对外服务
接口进行识别,并通过
持久化技术对现有web对外接口信息进行持久化;
8.步骤2:基于持久化的接口信息,结合不同人员的职能进行细粒度的统一配置,并再次持久化,并支持根据业务需求变化及时调整权限控制;
9.步骤3:利用已经持久化的权限配置,结合web服务中技术,根据用户的身份以及其对应的权限进行访问权限控制。
10.优选的,所述步骤1包括:
11.步骤1.1:在web后台服务工程中创建一个,负责监听容器启动;
12.步骤1.2:监听到容器启动后,通过应用前后关系application context获取当前上下文容器;
13.步骤1.3:从上下文容器中获取加载过程request mapping handler mapping,并从中获取到所有程序处理方式handler method;
14.步骤1.4:解析handler method并获取所有的对外接口地址,同时根据handler method获取特定方式method是否存在对应权限注解,若对应handler method存在对应权限
注解,则连同接口对外地址一同进行持久化处理。
15.优选的,所述步骤2包括:
16.步骤2.1:根据访问用户的身份需求对控制权限进行设计;
17.步骤2.2:根据持久化数据进行维护,包括新增、修改、删除;
18.步骤2.3:在权限统一配置同时完成持久化操作,然后进行权限规则访问控制更新,更新模式包括热更新模式和冷更新模式,热更新模式情况下,需要配合消息中间件推送给对应后台服务进行获取新权限方案;冷更新模式情况下,需要重新启动服务。
19.优选的,所述新增包括:对新访问控制进行新增,包括维护权限编码以及对应接口访问地址;
20.所述修改包括:对已存在的访问权限码对应可访问接口访问地址进行修改,对于从注解中获取的权限编码以及接口访问地址对应关系不进行修改;
21.所述删除包括:对所有持久化的权限编码对应关系进行维护,对通过注解持久化的权限编码对应关系进行软删除,对自定义新增的权限编码对应关系直接进行物理删除。
22.优选的,所述步骤3包括:
23.步骤3.1:在容器启动并完成统一化接口权限识别持久化后,重新加载新的权限控制规则,服务启动后加载完成即位生效的权限控制规则;
24.步骤3.2:通过获取并解析用户携带的授权信息,并对用户携带的授权信息进行匹配,若匹配成功则放行,否则拒绝提供服务;
25.步骤3.3:若服务运行过程中接收到中间件的新规则,则立即更新当前服务的权限控制规则。
26.根据本发明提供的用于web服务的细粒度动态权限控制系统,包括:
27.
模块m1:将web后台服务中的所有对外服务接口进行识别,并通过持久化技术对现有web对外接口信息进行持久化;
28.模块m2:基于持久化的接口信息,结合不同人员的职能进行细粒度的统一配置,并再次持久化,并支持根据业务需求变化及时调整权限控制;
29.模块m3:利用已经持久化的权限配置,结合web服务中技术,根据用户的身份以及其对应的权限进行访问权限控制。
30.优选的,所述模块m1包括:
31.模块m1.1:在web后台服务工程中创建一个,负责监听容器启动;
32.模块m1.2:监听到容器启动后,通过应用前后关系application context获取当前上下文容器;
33.模块m1.3:从上下文容器中获取加载过程request mapping handler mapping,并从中获取到所有程序处理方式handler method;
34.模块m1.4:解析handler method并获取所有的对外接口地址,同时根据handler method获取特定方式method是否存在对应权限注解,若对应handler method存在对应权限注解,则连同接口对外地址一同进行持久化处理。
35.优选的,所述模块m2包括:
36.模块m2.1:根据访问用户的身份需求对控制权限进行设计;
37.模块m2.2:根据持久化数据进行维护,包括新增、修改、删除;
38.模块m2.3:在权限统一配置同时完成持久化操作,然后进行权限规则访问控制更新,更新模式包括热更新模式和冷更新模式,热更新模式情况下,需要配合消息中间件推送给对应后台服务进行获取新权限方案;冷更新模式情况下,需要重新启动服务。
39.优选的,所述新增包括:对新访问控制进行新增,包括维护权限编码以及对应接口访问地址;
40.所述修改包括:对已存在的访问权限码对应可访问接口访问地址进行修改,对于从注解中获取的权限编码以及接口访问地址对应关系不进行修改;
41.所述删除包括:对所有持久化的权限编码对应关系进行维护,对通过注解持久化的权限编码对应关系进行软删除,对自定义新增的权限编码对应关系直接进行物理删除。
42.优选的,所述模块m3包括:
43.模块m3.1:在容器启动并完成统一化接口权限识别持久化后,重新加载新的权限控制规则,服务启动后加载完成即位生效的权限控制规则;
44.模块m3.2:通过获取并解析用户携带的授权信息,并对用户携带的授权信息进行匹配,若匹配成功则放行,否则拒绝提供服务;
45.模块m3.3:若服务运行过程中接收到中间件的新规则,则立即更新当前服务的权限控制规则。
46.与现有技术相比,本发明具有如下的有益效果:
47.(1)开发人员进行后台业务系统开发时,根据本发明方法构建一个sdk直接开发中使用,只需明确业务系统功能性能需求、无需再过多关注权限访问控制,通过服务运行上线后根据不同人员权限访问控制需求实时配置调整已持久化的权限规则,即可完成整个业务系统的上线运行;
48.(2)本发明提升了web后台服务系统权限控制的便捷性,通过对后台服务外部接口的统一持久化,以及基于持久化接口权限规则,实时动态根据需求调整,实时推送更新到后台服务,随后后台服务即可根据新的权限规则控制访问授权。
附图说明
49.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
50.图1为服务权限规则持久化流程图;
51.图2为权限控制流程图。
具体实施方式
52.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
53.实施例1:
54.当前流行的web权限控制中主要基于和注解模式控制权限的访问,一般需要在系统设计之初就要把权限细化程度进行定型,并直接在服务开发过程中直接按照设定
模型开发设计,一旦上线运行之后需要调整则只能重新设计并由开发人员重新编码并部署,如果后续权限访问控制方案再有变化,仍旧需要不断重复上述操作。但是在实际项目中,权限访问控制很多情况下是多变的。
55.基于此,本发明提出了一种用于web服务的细粒度动态权限控制方法,能够在满足不修改web服务源代码情况下快速实现对权限控制的细粒度按需调整,如图1,主要包括以下几个步骤:
56.1)web接口统一识别持久化
57.a)在web后台服务工程中创建一个,负责监听容器启动;
58.b)监听到容器启动后,通过application context获取当前上下文容器;
59.c)从上下文容器中获取request mapping handler mapping,并从中获取到所有handler method;
60.d)解析handler method并获取所有的对外接口地址,同时根据handler method获取特定method是否存在对应权限注解;
61.e)如果对应handler method存在对应权限注解,则连同接口对外地址一同进行持久化处理。
62.2)web接口访问权限的统一配置
63.a)根据访问用户的身份需求对控制权限进行初步设计;
64.b)根据持久化数据进行维护,包括新增、修改、删除;
65.新增:对新访问控制进行新增,包括维护权限编码以及对应接口访问地址;
66.修改:对已存在的访问权限码对应可访问接口访问地址进行修改,对于从注解中获取的权限编码以及接口访问地址对应关系不进行修改;
67.删除:针对所有持久化的权限编码对应关系进行维护,通过注解持久化的权限编码对应关系进行软删除,对于自定义新增的权限编码对应关系直接进行物理删除。
68.c)权限统一配置后即同时完成持久化操作,然后进行权限规则访问控制更新,更新模式可以分为热更新模式以及冷更新模式;热更新模式情况下,需要配合消息中间件推送给对应后台服务进行获取新权限方案,冷更新模式情况下,需要重新启动服务。
69.3)web接口访问权限的控制
70.访问权限控制是控制的核心,通过上述步骤之后,只需要服务端进行权限访问控制即可,如图2,服务端处理流程如下:
71.a)容器启动并完成统一化接口权限识别持久化后,重新加载新的权限控制规则;启动时的加载为冷加载,服务启动后加载完成即位生效的权限控制规则;
72.b)获取并解析用户携带的授权信息,并对用户的授权信息进行匹配,匹配成功则放行,否则拒绝提供服务;
73.c)如果服务运行过程中接收到中间件的新规则,则立即更新当前服务的权限控制规则,此时为热加载模式。
74.优选的,可以构建一个基于本方法实现的sdk,并在业务系统开发过程中直接使用或者在已有的业务系统中直接引用此sdk进行简单配置,即可完成系统权限控制动态细粒度可调整以及访问控制。
75.实施例2:
76.本发明还提供一种用于web服务的细粒度动态权限控制系统,所述用于web服务的细粒度动态权限控制系统可以通过执行所述用于web服务的细粒度动态权限控制方法的流程步骤予以实现,即本领域技术人员可以将所述用于web服务的细粒度动态权限控制方法理解为所述用于web服务的细粒度动态权限控制系统的优选实施方式。
77.该系统具体包括如下模块:模块m1:将web后台服务中的所有对外服务接口进行识别,并通过持久化技术对现有web对外接口信息进行持久化;模块m2:基于持久化的接口信息,结合不同人员的职能进行细粒度的统一配置,并再次持久化,并支持根据业务需求变化及时调整权限控制;模块m3:利用已经持久化的权限配置,结合web服务中技术,根据用户的身份以及其对应的权限进行访问权限控制。
78.所述模块m1包括:模块m1.1:在web后台服务工程中创建一个,负责监听容器启动;模块m1.2:监听到容器启动后,通过应用前后关系application context获取当前上下文容器;模块m1.3:从上下文容器中获取加载过程request mapping handler mapping,并从中获取到所有程序处理方式handler method;模块m1.4:解析handler method并获取所有的对外接口地址,同时根据handler method获取特定方式method是否存在对应权限注解,若对应handler method存在对应权限注解,则连同接口对外地址一同进行持久化处理。
79.所述模块m2包括:模块m2.1:根据访问用户的身份需求对控制权限进行设计;模块m2.2:根据持久化数据进行维护,包括新增、修改、删除;模块m2.3:在权限统一配置同时完成持久化操作,然后进行权限规则访问控制更新,更新模式包括热更新模式和冷更新模式,热更新模式情况下,需要配合消息中间件推送给对应后台服务进行获取新权限方案;冷更新模式情况下,需要重新启动服务。所述新增包括:对新访问控制进行新增,包括维护权限编码以及对应接口访问地址;所述修改包括:对已存在的访问权限码对应可访问接口访问地址进行修改,对于从注解中获取的权限编码以及接口访问地址对应关系不进行修改;所述删除包括:对所有持久化的权限编码对应关系进行维护,对通过注解持久化的权限编码对应关系进行软删除,对自定义新增的权限编码对应关系直接进行物理删除。
80.所述模块m3包括:模块m3.1:在容器启动并完成统一化接口权限识别持久化后,重新加载新的权限控制规则,服务启动后加载完成即位生效的权限控制规则;模块m3.2:通过获取并解析用户携带的授权信息,并对用户携带的授权信息进行匹配,若匹配成功则放行,否则拒绝提供服务;模块m3.3:若服务运行过程中接收到中间件的新规则,则立即更新当前服务的权限控制规则。
81.本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
82.以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影
响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。
技术特征:
1.一种用于web服务的细粒度动态权限控制方法,其特征在于,包括:步骤1:将web后台服务中的所有对外服务接口进行识别,并通过持久化技术对现有web对外接口信息进行持久化;步骤2:基于持久化的接口信息,结合不同人员的职能进行细粒度的统一配置,并再次持久化,并支持根据业务需求变化及时调整权限控制;步骤3:利用已经持久化的权限配置,结合web服务中技术,根据用户的身份以及其对应的权限进行访问权限控制。2.根据权利要求1所述的用于web服务的细粒度动态权限控制方法,其特征在于,所述步骤1包括:步骤1.1:在web后台服务工程中创建一个,负责监听容器启动;步骤1.2:监听到容器启动后,通过应用前后关系application context获取当前上下文容器;步骤1.3:从上下文容器中获取加载过程request mapping handler mapping,并从中获取到所有程序处理方式handler method;步骤1.4:解析handler method并获取所有的对外接口地址,同时根据handler method获取特定方式method是否存在对应权限注解,若对应handler method存在对应权限注解,则连同接口对外地址一同进行持久化处理。3.根据权利要求1所述的用于web服务的细粒度动态权限控制方法,其特征在于,所述步骤2包括:步骤2.1:根据访问用户的身份需求对控制权限进行设计;步骤2.2:根据持久化数据进行维护,包括新增、修改、删除;步骤2.3:在权限统一配置同时完成持久化操作,然后进行权限规则访问控制更新,更新模式包括热更新模式和冷更新模式,热更新模式情况下,需要配合消息中间件推送给对应后台服务进行获取新权限方案;冷更新模式情况下,需要重新启动服务。4.根据权利要求3所述的用于web服务的细粒度动态权限控制方法,其特征在于,所述新增包括:对新访问控制进行新增,包括维护权限编码以及对应接口访问地址;所述修改包括:对已存在的访问权限码对应可访问接口访问地址进行修改,对于从注解中获取的权限编码以及接口访问地址对应关系不进行修改;所述删除包括:对所有持久化的权限编码对应关系进行维护,对通过注解持久化的权限编码对应关系进行软删除,对自定义新增的权限编码对应关系直接进行物理删除。5.根据权利要求1所述的用于web服务的细粒度动态权限控制方法,其特征在于,所述步骤3包括:步骤3.1:在容器启动并完成统一化接口权限识别持久化后,重新加载新的权限控制规则,服务启动后加载完成即位生效的权限控制规则;步骤3.2:通过获取并解析用户携带的授权信息,并对用户携带的授权信息进行匹配,若匹配成功则放行,否则拒绝提供服务;步骤3.3:若服务运行过程中接收到中间件的新规则,则立即更新当前服务的权限控制规则。6.一种用于web服务的细粒度动态权限控制系统,其特征在于,包括:
模块m1:将web后台服务中的所有对外服务接口进行识别,并通过持久化技术对现有web对外接口信息进行持久化;模块m2:基于持久化的接口信息,结合不同人员的职能进行细粒度的统一配置,并再次持久化,并支持根据业务需求变化及时调整权限控制;模块m3:利用已经持久化的权限配置,结合web服务中技术,根据用户的身份以及其对应的权限进行访问权限控制。7.根据权利要求6所述的用于web服务的细粒度动态权限控制系统,其特征在于,所述模块m1包括:模块m1.1:在web后台服务工程中创建一个,负责监听容器启动;模块m1.2:监听到容器启动后,通过应用前后关系application context获取当前上下文容器;模块m1.3:从上下文容器中获取加载过程request mapping handler mapping,并从中获取到所有程序处理方式handler method;模块m1.4:解析handler method并获取所有的对外接口地址,同时根据handler method获取特定方式method是否存在对应权限注解,若对应handler method存在对应权限注解,则连同接口对外地址一同进行持久化处理。8.根据权利要求6所述的用于web服务的细粒度动态权限控制系统,其特征在于,所述模块m2包括:模块m2.1:根据访问用户的身份需求对控制权限进行设计;模块m2.2:根据持久化数据进行维护,包括新增、修改、删除;模块m2.3:在权限统一配置同时完成持久化操作,然后进行权限规则访问控制更新,更新模式包括热更新模式和冷更新模式,热更新模式情况下,需要配合消息中间件推送给对应后台服务进行获取新权限方案;冷更新模式情况下,需要重新启动服务。9.根据权利要求8所述的用于web服务的细粒度动态权限控制系统,其特征在于,所述新增包括:对新访问控制进行新增,包括维护权限编码以及对应接口访问地址;所述修改包括:对已存在的访问权限码对应可访问接口访问地址进行修改,对于从注解中获取的权限编码以及接口访问地址对应关系不进行修改;所述删除包括:对所有持久化的权限编码对应关系进行维护,对通过注解持久化的权限编码对应关系进行软删除,对自定义新增的权限编码对应关系直接进行物理删除。10.根据权利要求6所述的用于web服务的细粒度动态权限控制系统,其特征在于,所述模块m3包括:模块m3.1:在容器启动并完成统一化接口权限识别持久化后,重新加载新的权限控制规则,服务启动后加载完成即位生效的权限控制规则;模块m3.2:通过获取并解析用户携带的授权信息,并对用户携带的授权信息进行匹配,若匹配成功则放行,否则拒绝提供服务;模块m3.3:若服务运行过程中接收到中间件的新规则,则立即更新当前服务的权限控制规则。
技术总结
本发明提供了一种用于WEB服务的细粒度动态权限控制方法和系统,包括:步骤1:将WEB后台服务中的所有对外服务接口进行识别,并通过持久化技术对现有WEB对外接口信息进行持久化;步骤2:基于持久化的接口信息,结合不同人员的职能进行细粒度的统一配置,并再次持久化,并支持根据业务需求变化及时调整权限控制;步骤3:利用已经持久化的权限配置,结合WEB服务中技术,根据用户的身份以及其对应的权限进行访问权限控制。本发明通过对后台服务外部接口的统一持久化,以及基于持久化接口权限规则,提升了WEB后台服务系统权限控制的便捷性。提升了WEB后台服务系统权限控制的便捷性。提升了WEB后台服务系统权限控制的便捷性。
技术研发人员:
徐文远 辛逸杰 贺培超 胡斌 肖晓霞 沈晨 黄子君
受保护的技术使用者:
华东计算技术研究所(中国电子科技集团公司第三十二研究所)
技术研发日:
2022.10.28
技术公布日:
2023/2/27