基于微服务架构的鉴权方法及装置
文献发布时间:2023-06-19 11:49:09
技术领域
本发明涉及微服务架构技术领域,具体涉及一种基于微服务架构的鉴权方法及装置。
背景技术
现有技术中的系统鉴权使用的是session-cookie方式,不适合做微服务,同时服务间的接口调用没有鉴权;
另外比较流行的单点登录方案在微服务架构下,一旦微服务组件数量较多,会产生大量非常琐碎的网络流量和重复的工作,同时传统的鉴权不配合AIP gateway使用,即所有API请求都会对外暴露微服务,不够安全。
上述问题是目前亟待解决的。
发明内容
本发明所要解决的技术问题是提供一种基于微服务架构的鉴权方法及装置。
本发明解决其技术问题所采用的技术方案是:提供一种基于微服务架构的鉴权方法,包括:
获取用户令牌以及用户请求;
对用户令牌进行外部鉴权,即,通过微服务调用鉴权服务的permissions/check检查权限;
对用户令牌以及用户请求进行内部鉴权,即,在用户令牌中提取用户的uuid,根据各个微服务的业务来对用户令牌对应的用户请求进行权限判断。
进一步的,所述用户令牌所具有的权限的获取方法包括:
基于RBACO模型对用户的权限进行划分;
依据权限划分结果获取用户令牌所对应的用户的权限。
进一步的,所述对用户令牌进行外部鉴权,即,通过微服务调用鉴权服务的permissions/check检查权限的方法包括:
鉴权服务收到用户请求后检查用户令牌是否有效;
微服务依据接收到鉴权服务的检查结果判断当前鉴权状态。
进一步的,所述鉴权服务收到用户请求后检查用户令牌是否有效的方法包括:
判断用户令牌是否过期和/或被撤销,若是,则返回401至微服务,鉴权失败;
判断用户令牌是否具有管理员权限,若是,则返回200以及鉴权结果true至微服务,鉴权成功;
判断生成用户令牌的客户端是否为信任的客户端,若是,则返回200以及鉴权结果true至微服务,鉴权成功;
依据用户请求所需的权限与用户令牌所具有的权限进行鉴权,若鉴权成功,返回200以及鉴权结果true,鉴权成功;若鉴权失败,则返回200以及鉴权结果false至微服务,鉴权失败。
进一步的,所述微服务依据接收到鉴权服务的检查结果判断当前鉴权状态的方法包括:
微服务收到401,微服务A返回401至用户端,鉴权失败;
微服务收到200,鉴权结果是true,鉴权成功,依据用户请求进行具体业务处理;
微服务收到200,鉴权结果是false,进行内部鉴权。
进一步的,所述对用户令牌以及用户请求进行内部鉴权,即,在用户令牌中提取用户的uuid,根据各个微服务的业务来对用户令牌对应的用户请求进行权限判断的方法包括:
鉴权失败,返回403至用户端;
鉴权成功,依据用户请求进行具体业务处理。
本发明还提供了一种基于微服务架构的鉴权装置,包括:
令牌获取模块,适于获取用户令牌以及用户请求;
外部鉴权模块,适于对用户令牌进行外部鉴权,即,通过微服务调用鉴权服务的permissions/check检查权限;
内部鉴权模块,适于对用户令牌以及用户请求进行内部鉴权,即,在用户令牌中提取用户的uuid,根据各个微服务的业务来对用户令牌对应的用户请求进行权限判断。
进一步的,所述外部鉴权模块包括:
用户令牌有效检测单元,适于鉴权服务收到用户请求后检查用户令牌是否有效;
鉴权状态判断单元,适于微服务依据接收到鉴权服务的检查结果判断当前鉴权状态。
本发明还提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被计算机运行时执行如上述方法中的步骤。
本发明还提供了一种电子设备,包括存储器和处理器;所述存储器中存储有至少一条程序指令;所述处理器,通过加载并执行所述至少一条程序指令以实现如上述方法中的步骤。
本发明的有益效果是:本发明提供了一种基于微服务架构的鉴权方法及装置,其中,基于微服务架构的鉴权方法通过对用户令牌进行外部鉴权以及对用户令牌以及用户请求进行内部鉴权的方式,提高了鉴权的效率,避免对每个用户请求进行全部的鉴权流程,同时,用户令牌在客户端生成,由身份验证服务进行签名,令牌附加到每个请求上,为微服务提供用户身份验证,安全性高。
附图说明
下面结合附图和实施例对本发明作进一步说明。
图1是本发明实施例提供的基于微服务架构的鉴权方法的流程图。
图2是本发明实施例提供的基于微服务架构的鉴权方法中的用户和权限的关系图。
图3是本发明实施例提供的基于微服务架构的鉴权装置的原理框图。
图4是本发明实施例所提供的电子设备的部分原理框图。
具体实施方式
现在结合附图对本发明作详细的说明。此图为简化的示意图,仅以示意方式说明本发明的基本结构,因此其仅显示与本发明有关的构成。
实施例1
请参阅图1,本实施例提供了一种基于微服务架构的鉴权方法。基于微服务架构的鉴权方法通过对用户令牌进行外部鉴权以及对用户令牌以及用户请求进行内部鉴权的方式,提高了鉴权的效率,避免对每个用户请求进行全部的鉴权流程,同时,用户令牌在客户端生成,由身份验证服务进行签名,令牌附加到每个请求上,为微服务提供用户身份验证,安全性高。
具体来说,基于微服务架构的鉴权方法包括以下步骤:
S110:获取用户令牌以及用户请求。
具体来说,客户端生成用户令牌由身份验证服务进行签名,并且必须包含足够的信息,以便可以在所有微服务中建立用户身份,同时用户发送的用户请求上会附加上用户令牌,为微服务提供用户身份验证。客户端发送用户请求至微服务,微服务此时获取用户令牌以及用户请求。
S120:对用户令牌进行外部鉴权,即,通过微服务调用鉴权服务的permissions/check检查权限。
具体来说,步骤S120包括以下步骤:
S121:鉴权服务收到用户请求后检查用户令牌是否有效。
其中,步骤S121包括以下步骤:
S1211:判断用户令牌是否过期和/或被撤销,若是,则返回401至微服务,鉴权失败;
S1212:判断用户令牌是否具有管理员权限,若是,则返回200以及鉴权结果true至微服务,鉴权成功;
S1213:判断生成用户令牌的客户端是否为信任的客户端,若是,则返回200以及鉴权结果true至微服务,鉴权成功;
S1214:依据用户请求所需的权限与用户令牌所具有的权限进行鉴权,若鉴权成功,返回200以及鉴权结果true,鉴权成功;若鉴权失败,则返回200以及鉴权结果false至微服务,鉴权失败。
通过步骤S121,对用户请求进行初步鉴权,以提高鉴权效率。
S122:微服务依据接收到鉴权服务的检查结果判断当前鉴权状态。
其中,步骤S122包括以下步骤:
微服务收到401,微服务A返回401至用户端,鉴权失败;
微服务收到200,鉴权结果是true,鉴权成功,依据用户请求进行具体业务处理;
微服务收到200,鉴权结果是false,进行内部鉴权。
S130:对用户令牌以及用户请求进行内部鉴权,即,在用户令牌中提取用户的通用唯一识别码(Universally Unique Identifier,uuid),根据各个微服务的业务来对用户令牌对应的用户请求进行权限判断。其中,所述用户令牌所具有的权限的获取方法包括:基于RBACO模型对用户的权限进行划分;依据权限划分结果获取用户令牌所对应的用户的权限,用户的权限的关系图如图2所示,权限可以赋予角色,组,同时权限允许单独赋予到具体的用户,权限具有传递性,例如,用户1属于的组1或者角色1具有P1权限,则用户也具有P1权限。
具体来说,步骤S130包括以下步骤:
S131:鉴权失败,返回403至用户端。
S132:鉴权成功,依据用户请求进行具体业务处理。
实施例2
请参阅图3,本实施例提供了一种基于微服务架构的鉴权装置,基于微服务架构的鉴权装置包括:令牌获取模块、外部鉴权模块以及内部鉴权模块。
其中,令牌获取模块,适于获取用户令牌以及用户请求。具体地,客户端生成用户令牌由身份验证服务进行签名,并且必须包含足够的信息,以便可以在所有微服务中建立用户身份,同时用户发送的用户请求上会附加上用户令牌,为微服务提供用户身份验证。客户端发送用户请求至微服务,微服务此时获取用户令牌以及用户请求。
外部鉴权模块,适于对用户令牌进行外部鉴权,即,通过微服务调用鉴权服务的permissions/check检查权限;
具体地,所述外部鉴权模块包括:
用户令牌有效检测单元,适于鉴权服务收到用户请求后检查用户令牌是否有效;并用于执行以下步骤:
S1211:判断用户令牌是否过期和/或被撤销,若是,则返回401至微服务,鉴权失败;
S1212:判断用户令牌是否具有管理员权限,若是,则返回200以及鉴权结果true至微服务,鉴权成功;
S1213:判断生成用户令牌的客户端是否为信任的客户端,若是,则返回200以及鉴权结果true至微服务,鉴权成功;
S1214:依据用户请求所需的权限与用户令牌所具有的权限进行鉴权,若鉴权成功,返回200以及鉴权结果true,鉴权成功;若鉴权失败,则返回200以及鉴权结果false至微服务,鉴权失败。
鉴权状态判断单元,适于微服务依据接收到鉴权服务的检查结果判断当前鉴权状态,并用于执行以下步骤:
微服务收到401,微服务A返回401至用户端,鉴权失败;
微服务收到200,鉴权结果是true,鉴权成功,依据用户请求进行具体业务处理;
微服务收到200,鉴权结果是false,进行内部鉴权。
内部鉴权模块,适于对用户令牌以及用户请求进行内部鉴权,即,在用户令牌中提取用户的uuid,根据各个微服务的业务来对用户令牌对应的用户请求进行权限判断。基于RBACO模型对用户的权限进行划分;依据权限划分结果获取用户令牌所对应的用户的权限,用户和权限的关系图如图2所示,权限可以赋予角色,组,同时权限允许单独赋予到具体的用户,权限具有传递性,例如,用户1属于的组1或者角色1具有P1权限,则用户也具有P1权限。
具体来说,内部鉴权模块用于执行以下步骤:
S131:鉴权失败,返回403至用户端。
S132:鉴权成功,依据用户请求进行具体业务处理。
实施例3
本实施例提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被计算机运行时执行实施例1所提供的基于微服务架构的鉴权方法。
在本实施例中,通过对用户令牌进行外部鉴权以及对用户令牌以及用户请求进行内部鉴权的方式,提高了鉴权的效率,避免对每个用户请求进行全部的鉴权流程,同时,用户令牌在客户端生成,由身份验证服务进行签名,令牌附加到每个请求上,为微服务提供用户身份验证,安全性高。
实施例4
请参阅图4,本发明实施例还提供了一种电子设备,包括:存储器502和处理器501;所述存储器502中存储有至少一条程序指令;所述处理器501,通过加载并执行所述至少一条程序指令以实现如实施例1所提供的基于微服务架构的鉴权方法。
存储器502和处理器501采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器501和存储器502的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器501处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器501。
处理器501负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器502可以被用于存储处理器501在执行操作时所使用的数据。
综上所述,本发明提供了一种基于微服务架构的鉴权方法及装置,其中,基于微服务架构的鉴权方法通过对用户令牌进行外部鉴权以及对用户令牌以及用户请求进行内部鉴权的方式,提高了鉴权的效率,避免对每个用户请求进行全部的鉴权流程,同时,用户令牌在客户端生成,由身份验证服务进行签名,令牌附加到每个请求上,为微服务提供用户身份验证,安全性高。
以上述依据本发明的理想实施例为启示,通过上述的说明内容,相关的工作人员完全可以在不偏离本发明的范围内,进行多样的变更以及修改。本项发明的技术范围并不局限于说明书上的内容,必须要根据权利要求范围来确定其技术性范围。
- 一种基于鉴权码鉴权技术的电动车辆与充电桩的鉴权方法
- 一种微服务架构服务间鉴权系统及优化方法