一种微服务的鉴权系统、方法、电子设备和存储介质与流程

文档序号:29924195发布日期:2022-05-07 10:29阅读:85来源:国知局
一种微服务的鉴权系统、方法、电子设备和存储介质与流程

1.本发明实施例涉及微服务技术领域,特别是涉及一种微服务的鉴权系统、一种微服务的鉴权方法、电子设备和存储介质。


背景技术:

2.微服务(或微服务架构、微服务系统)是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。随着业务系统架构的发展,传统的单一架构开始走向微服务架构,而微服务的核心特点是对高耦合的单体架构进行分解。
3.在微服务架构(系统)中,是由多个小而独立的微服务运行组成的,而这样小而独立的微服务的特点是无状态,且可以多节点集群部署,因此需要一个统一的网关为这些独立的微服务提供访问入口,但微服务并非是通过认证中心登录的用户都允许直接访问,而是需要具备某些系统的访问权限才可以访问。目前通常是直接在当前微服务中验证当前用户是否有访问本微服务或本微服务的某些接口的权限,但采用这样的方式,网关必须向上游微服务发起一个耗时连接请求,如果系统对网关的性能要求较高,则此操作显然会降级网关的吞吐量,不利于构建一个具备高性能高吞吐的网关服务的微服务系统。


技术实现要素:

4.本发明实施例是提供一种微服务的鉴权系统和方法,以解决现有技术中对微服务访问鉴权消耗大量系统资源,影响系统性能的问题。
5.本发明实施例公开了一种微服务的鉴权系统,其特征在于,包括用户设备、认证中心、注册中心和网关,所述注册中心注册有多个微服务,其中:
6.所述用户设备,用于向所述认证中心发送登录请求;所述登录请求中包括用户信息;
7.所述认证中心,用于获取所述用户信息对应的访问域,并在将所述用户信息和访问域组合为jwt信息后,将所述jwt信息发送至所述用户设备;其中,所述访问域为所述用户信息针对各个所述微服务的访问权限;
8.所述注册中心,用于将所述访问域实时同步至所述网关;
9.所述网关,用于在接收所述用户设备发送的针对目标微服务的访问请求时,根据所述访问域对所述访问请求中的待验证的jwt信息进行验证,以确定是否允许所述用户设备访问所述目标微服务。
10.可选地,所述认证中心,还用于修改所述用户信息对应的访问域,并将修改后的访问域发送至所述注册中心;
11.所述注册中心,还用于将所述修改后的访问域实时同步至所述网关。
12.可选地,所述注册中心,还用于获取所述微服务的微服务信息,根据所述微服务信息注册所述微服务;所述微服务信息包括所述微服务的标识、ip地址和端口。
13.可选地,所述网关,还用于提取所述访问请求中携带的待验证jwt信息;所述待验
证jwt信息包括针对所述目标微服务的待验证访问域;当所述访问域中包含针对所述目标微服务的待验证访问域时,允许所述用户设备访问所述目标微服务。
14.可选地,所述网关,还用于当所述目标jwt信息中的访问域中不包含针对所述目标微服务的访问域时,拒绝所述用户设备访问所述目标微服务,并提示错误信息。
15.本发明实施例还公开了一种微服务的鉴权方法,其特征在于,包括用户设备、认证中心、注册中心和网关,所述注册中心注册有多个微服务,所述方法包括:
16.所述用户设备向所述认证中心发送登录请求;所述登录请求中包括用户信息;
17.所述认证中心获取所述用户信息对应的访问域,并在将所述用户信息和访问域组合为jwt信息后,将所述jwt信息发送至所述用户设备;其中,所述访问域为所述用户信息针对各个所述微服务的访问权限;
18.所述注册中心将所述访问域实时同步至所述网关;
19.所述网关在接收所述用户设备发送的针对目标微服务的访问请求时,根据所述访问域对所述访问请求中的待验证的jwt信息进行验证,以确定是否允许所述用户设备访问所述目标微服务。
20.可选地,还包括:
21.所述认证中心修改所述用户信息对应访问域,并将修改后的访问域发送至所述注册中心;
22.所述注册中心将所述修改后的访问域实时同步至所述网关。
23.可选地,还包括:
24.所述注册中心获取所述微服务的微服务信息,根据所述微服务信息注册所述微服务;所述微服务信息包括所述微服务的标识、ip地址和端口。
25.可选地,所述根据所述访问域对所述访问请求中的待验证的jwt信息进行验证,以确定是否允许所述用户设备访问所述目标微服务,包括:
26.所述网关提取所述访问请求中携带的待验证jwt信息;所述待验证jwt信息包括针对所述目标微服务的待验证访问域;
27.当所述访问域中包含针对所述目标微服务的待验证访问域时,允许所述用户设备访问所述目标微服务。
28.可选地,所述根据所述jwt信息对所述访问请求中的待验证的jwt信息进行验证,以确定是否允许所述用户设备访问所述目标微服务,包括:
29.所述网关当所述目标jwt信息中的访问域中不包含针对所述目标微服务的访问域时,拒绝所述用户设备访问所述目标微服务,并提示错误信息。
30.本发明实施例公开了一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的微服务的鉴权方法的步骤。
31.本发明实施例公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的微服务的鉴权方法的步骤。
32.本发明实施例包括以下优点:
33.本发明实施例提供了一种微服务的鉴权系统,包括:用户设备用于向认证中心发送登录请求;登录请求中包括用户信息;认证中心用于获取用户信息对应的访问域,并在将
用户信息和访问域组合为jwt信息后,将jwt信息发送至用户设备;访问域为用户信息针对各个微服务的访问权限;注册中心用于将访问域实时同步至网关;网关用于在接收用户设备发送的针对目标微服务的访问请求时,根据访问域对访问请求中的待验证的jwt信息进行验证,以确定是否允许用户设备访问所述目标微服务。本发明实施例可以实时同步用户访问域,并在网关中基于访问域对用户的访问请求进行快速鉴权,提高微服务的鉴权效率和运行性能。
附图说明
34.图1是本发明实施例提供的一种微服务的鉴权系统的结构框图;
35.图2是本发明的一种微服务的鉴权系统的鉴权过程示意图;
36.图3是本发明的一种微服务的鉴权方法实施例的步骤流程图。
具体实施方式
37.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
38.微服务是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通。每个服务都围绕着具体业务进行构建,并且能够独立地部署到生产环境、类生产环境等。因此需要一个统一的网关为这些独立的微服务提供访问入口,但并非是所有通过认证中心登录的用户都允许直接访问所有微服务,一些微服务需要具备某些系统的访问权限才可以访问,因此需要对微服务的访问请求进行鉴权。
39.目前微服务的鉴权方式通常是直接在当前微服务中验证当前用户是否有访问本微服务或本微服务的某些接口的权限,但采用这样的方式,网关必须向上游微服务发起一个耗时连接请求,如果系统对网关的性能要求较高,则此操作显然会降级网关的吞吐量,不利于构建一个具备高性能高吞吐的网关服务的微服务系统。对此,本发明实施例提供了一种微服务的鉴权系统,可以实时同步用户访问域,并在网关中基于访问域对用户的访问请求进行快速鉴权,提高微服务的鉴权效率和运行性能。
40.参照图1,示出了本发明实施例提供的一种微服务的鉴权系统的结构框图,微服务的鉴权系统100可以包括:用户设备101、认证中心102、注册中心103、网关104,其中,注册中心103注册有多个微服务,具体如下:
41.所述用户设备101,用于向所述认证中心发送登录请求;所述登录请求中包括用户信息;
42.在本发明实施例中,可以通过用户设备访问微服务,而在访问微服务之前,用户设备需要进行登录认证,具体为,通过用户设备向微服务系统中的认证中心发送登录请求,登录请求中可以携带用户的用户信息,以使认证中心对登录请求中的用户信息进行验证。其中,用户设备可以是用于访问微服务的终端设备,具体可以包括手机、平板电脑、台式电脑等。用户信息可以包括用户的名称、账号和密码等可用于区分用户的标识信息。
43.所述认证中心102,用于获取所述用户信息对应的访问域,并在将所述用户信息和
访问域组合为jwt信息后,将所述jwt信息发送至所述用户设备;其中,所述访问域为所述用户信息针对各个所述微服务的访问权限;
44.具体地,认证中心可以是微服务系统中的统一认证中心(authserver),可以用于用户登录认证,并向登录验证成功的用户返回验证信息,验证信息中可以包含了用户的用户信息和访问域信息,在本发明实施例中,验证信息可以是jwt信息,当然,验证信息也可以是其他形式的,本发明实施例对此不作限制。
45.其中,访问域(scope)为一个用户对一个或多个微服务的访问权限的权限信息,可以是包含在用户的用户信息中,即在用户登录时,认证中心就可以通过该用户的用户信息获取到对应的访问域。
46.jwt(json web token)是为了在网络应用环境间传递声明而执行的一种基于json的开放标准(rfc 7519),该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(sso)场景。jwt的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,在本发明实施例中,就把用户对应的访问域增加到了用户的jwt信息中,该token也可直接被用于认证,也可被加密。
47.在具体实现中,认证中心可以在用户首次登录时,对用户的用户信息进行验证,并在验证通过后,将用户的用户信息和访问域组合为jwt信息,并将组合后的jwt信息返回至用户设备。用户设备在收到了该jwt信息后,可以将该jwt信息作为后续访问请求的验证信息,在后续对微服务的访问中,该用户的用户信息可以不再经过认证中心的认证。
48.所述注册中心103,用于将所述访问域实时同步至所述网关;
49.在本发明实施例中,注册中心可以是微服务系统中的统一注册中心(registrationserver),提供微服务注册以及服务发现,注册中心中存储有所有用户的访问域,并且可以将访问域实时同步至网关中。
50.在一示例性实施例中,所述注册中心,还用于获取所述微服务的微服务信息,根据所述微服务信息注册所述微服务;所述微服务信息包括所述微服务的标识、ip地址和端口。
51.其中,微服务的服务注册是指在服务启动时,向注册中心提供自身的主机名、ip地址、端口号、版本号和服务配置等信息,在注册中心内部形成一个服务注册表,服务注册表是服务发现的核心部分,是包含所有服务实例的网络地址的数据库;服务发现是服务发现客户端会定期从服务发现中心同步服务注册表,并缓存在客户端,当需要对某服务进行请求时,服务实例通过该注册表,定位目标服务网络地址。若目标服务存在多个网络地址,则使用负载均衡算法从多个服务实例中选择出一个,然后发出请求。
52.所述网关104,用于在接收所述用户设备发送的针对目标微服务的访问请求时,根据所述访问域对所述访问请求中的待验证的jwt信息进行验证,以确定是否允许所述用户设备访问所述目标微服务。
53.在本发明实施例中,网关可以是微服务系统中的统一网关服务(gateway),可以预加载注册中心提供的用户的访问域到缓存中,并订阅注册中心的访问域,当注册中心的访问域变更时,可以实时更新缓存中的访问域。进而可以根据该访问域验证该待验证jwt中的用户访问域是否符合访问条件,以确定是否允许该用户设备访问目标微服务。
54.在本发明实施例中,用户设备用于向认证中心发送登录请求;登录请求中包括用
户信息;认证中心用于获取用户信息对应的访问域,并在将用户信息和访问域组合为jwt信息后,将jwt信息发送至用户设备;访问域为用户信息针对各个微服务的访问权限;注册中心用于将访问域实时同步至网关;网关用于在接收用户设备发送的针对目标微服务的访问请求时,根据jwt信息对访问请求中的待验证的jwt信息进行验证,以确定是否允许用户设备访问所述目标微服务。本发明实施例可以实时同步用户访问域,并在网关中基于访问域对用户的访问请求进行快速鉴权,提高微服务的鉴权效率和运行性能。
55.在一示例性实施例中,所述认证中心,还用于修改所述用户信息对应的访问域,并将修改后的访问域发送至所述注册中心;
56.所述注册中心,还用于将所述修改后的访问域实时同步至所述网关。
57.在具体实现中,一个用户的访问域通常在用户注册和登录时就已经确定了,如有用户a和用户b,假设用户a的访问域是可以访问微服务1、微服务2和微服务3,而用户b的访问域是可以访问微服务1;此时,当用户b发起对微服务2的访问请求时,将会被拒绝,因为用户b的访问域不符合访问微服务2的访问条件。一种可能的情况是,需要对用户对应的访问域进行修改。
58.一种示例是,可以在认证中心中对用户对应的访问域进行修改,并将该修改后的访问域发送至注册中心,通过注册中心实时同步至网关中,以使网关可以根据修改后的访问域对用户的访问请求进行鉴权。例如,可以对上述用户b的访问域进行修改,增加用户b对微服务2的访问权限,此时用户b的访问域为可以访问微服务1和2,再将修改后的用户b的访问域发送至注册中心,由注册中心同步至网关。当用户b再发起对微服务2的访问请求时,网关通过鉴权用户b为可以访问微服务2的用户,则允许用户b对微服务2进行访问。当然,此处仅为对用户访问域修改的一种示例,具体的修改方式可以根据实际情况而定,本发明实施例对此不作限制。
59.在上述示例性实施例中,通过微服务鉴权系统中的认证中心,可以修改用户对应的访问域,将修改后的访问域发送至注册中心,再由注册中心同步至网关中,采用网关对用户针对微服务的访问进行鉴权。可以实现对用户访问域的修改,提高微服务鉴权的灵活性,并且在修改后,可以实时同步至鉴权网关中,保证微服务鉴权的实时性。
60.在一示例性实施例中,所述网关,还用于
61.提取所述访问请求中携带的待验证jwt信息;所述待验证jwt信息包括针对所述目标微服务的待验证访问域;
62.当所述访问域中包含针对所述目标微服务的待验证访问域时,允许所述用户设备访问所述目标微服务。
63.在具体实现中,用户设备在登录成功之后,会接收到认证中心返回的jwt信息,以作为后续访问的验证信息。当用户设备针对微服务发起访问请求时,会在访问请求中携带有待验证jwt信息。网关可以提取访问请求中的待验证jwt信息,其中,待验证jwt信息中包括了该用户的待验证访问域。
64.具体地,网关在同步注册中心的访问域时,可以将访问域缓存起来,因此,在网关中可以存储有多个不同的访问域。
65.网关可以对目标jwt信息中的访问域进行验证,具体为,判断从注册中心同步过来的访问域中是否包含该访问请求想要访问的目标微服务的访问域,当访问域中包含针对目
标微服务的待验证访问域时,则允许用户设备访问目标微服务。
66.在一示例性实施例中,所述网关,还用于当所述访问域中不包含针对所述目标微服务的待验证访问域时,拒绝所述用户设备访问所述目标微服务,并提示错误信息。
67.当访问域不包含针对目标微服务的待验证访问域时,则说明该访问请求不满足该目标微服务的访问条件,即发起该访问请求的用户设备没有访问该目标微服务的访问权限,因此,网关可以拒绝该用户设备访问该目标微服务,并向用户设备提示错误信息。
68.在上述示例性实施例中,通过网关对访问请求携带的待验证jwt信息中的待验证用户信息,和待验证访问域进行验证,可以在网关层面对访问请求的合法性和访问域进行鉴权,实现微服务系统对访问请求的快速鉴权,提高微服务的鉴权效率。
69.为了使本领域技术人员更好地理解本发明实施例的技术方案,下面通过一个例子,以及结合图2对本发明实施例进行说明。
70.参照图2,示出了本发明的一种微服务的鉴权系统的鉴权过程示意图。其中,user为用户设备,gateway为网关,servicea为目标微服务,authserver为认证中心,scope为用户设备的访问域。在图2中,为了简化流程,已将注册中心隐藏,但其在本发明的一种微服务的鉴权系统中的作用并不受影响。其中,servicea为已经经过注册中心注册的微服务,authserver和gateway的jwt信息经过注册中心进行同步。
71.1、user1和user2向认证中心发送登录请求,认证中心对接收到的登录请求进行验证,在user1和user2的登录请求验证成功后,分别向user1和user2返回携带了访问域的jwt信息;
72.2、user1和user2向目标微服务发送携带了待验证jwt信息的访问请求,网关拦截访问请求,并对访问请求进行鉴权;
73.3、网关对user1和user2的待验证jwt信息中的待验证访问域进行验证,经过验证,确定user1不具有访问目标微服务的访问权限,拒绝user1的访问请求,并返回403错误提示信息;确定user2具有访问目标微服务的访问权限,将user2的访问请求发送至目标微服务中,并从目标微服务中获得针对user2的访问请求返回的数据,并返回给user2。
74.在本发明实施例中,用户设备用于向认证中心发送登录请求;登录请求中包括用户信息;认证中心用于获取用户信息对应的访问域,并在将用户信息和访问域组合为jwt信息后,将jwt信息发送至用户设备;访问域为用户信息针对各个微服务的访问权限;注册中心用于将jwt信息实时同步至网关;网关用于在接收用户设备发送的针对目标微服务的访问请求时,根据访问域对访问请求中的待验证的jwt信息进行验证,以确定是否允许用户设备访问所述目标微服务。本发明实施例可以实时同步用户访问域,并在网关中基于访问域对用户的访问请求进行快速鉴权,提高微服务的鉴权效率和运行性能。
75.参照图3,示出了本发明的一种微服务的鉴权方法实施例的步骤流程图,包括用户设备、认证中心、注册中心和网关,所述注册中心注册有多个微服务,所述方法包括:
76.步骤301、所述用户设备向所述认证中心发送登录请求;所述登录请求中包括用户信息;
77.步骤302、所述认证中心获取所述用户信息对应的访问域,并在将所述用户信息和访问域组合为jwt信息后,将所述jwt信息发送至所述用户设备;其中,所述访问域为所述用户信息针对各个所述微服务的访问权限;
78.步骤303、所述注册中心将所述访问域实时同步至所述网关;
79.步骤304、所述网关在接收所述用户设备发送的针对目标微服务的访问请求时,根据所述访问域对所述访问请求中的待验证的jwt信息进行验证,以确定是否允许所述用户设备访问所述目标微服务。
80.在一示例性实施例中,所述方法还包括:
81.所述认证中心修改所述用户信息对应访问域,并将修改后的访问域发送至所述注册中心;
82.所述注册中心将所述修改后的访问域实时同步至所述网关。
83.在一示例性实施例中,所述方法还包括:
84.所述注册中心获取所述微服务的微服务信息,根据所述微服务信息注册所述微服务;所述微服务信息包括所述微服务的标识、ip地址和端口。
85.在一示例性实施例中,所述步骤304、所述根据所述访问域对所述访问请求中的待验证的jwt信息进行验证,以确定是否允许所述用户设备访问所述目标微服务,包括:
86.所述网关提取所述访问请求中携带的待验证jwt信息;所述待验证jwt信息包括针对所述目标微服务的待验证访问域;
87.当所述访问域中包含针对所述目标微服务的待验证访问域时,允许所述用户设备访问所述目标微服务。
88.在一示例性实施例中,所述步骤304、所述根据所述访问域对所述访问请求中的待验证的jwt信息进行验证,以确定是否允许所述用户设备访问所述目标微服务,包括:
89.所述网关当所述访问域中不包含针对所述目标微服务的访问域时,拒绝所述用户设备访问所述目标微服务,并提示错误信息。
90.对于方法实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
91.本发明实施例公开了一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上微服务的鉴权方法实施例所述的步骤。
92.本发明实施例公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上微服务的鉴权方法实施例所述的步骤。
93.本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
94.本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
95.本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些
计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
96.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
97.这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
98.尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
99.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
100.以上对本发明所提供的一种微服务的鉴权系统、一种微服务的鉴权方法、电子设备和存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1