微服务访问方法、装置、设备及存储介质与流程

专利2024-08-07  19


本发明涉及信息安全技术的网关控制领域,尤其涉及一种微服务访问方法、装置、设备及存储介质。



背景技术:

在现有的单体应用中认证与应用接口api、菜单的权限控制一般采用一个公共的jar包,需要权限控制的微服务引入权限的包,在其基础上进行适配;或者单独为每个应用开发对应的权限管理模块。

现有的权限控制方案对微服务的入侵比较严重,一般需要在微服务内新建对应的权限相关表,在本地数据库存储权限相关的数据,再将本地数据库与jar包中的接口进行适配。同时由于权限缺乏统一的管理,当一个系统具有多个子微服务时,每个子微服务之间需要进行权限数据的同步,容易引起权限数据的不一致。并且每一个子服务都需要执行权限校验规则,每一个子微服务在接入权限时都需要投入大量开发测试,导致微服务集群的权限验证效率低和微服务访问准确率低的问题。



技术实现要素:

本发明提供了一种微服务访问方法、装置、设备及存储介质,用于提高微服务集群的权限验证效率和微服务访问准确率。

为实现上述目的,本发明第一方面提供了一种微服务访问方法,包括:通过预设微服务网关拦截微服务访问请求,得到访问请求地址和目标用户令牌,所述预设微服务网关为基于预设路由过滤对象实现的请求拦截器;获取当前时刻和目标用户令牌的过期时刻,并判断所述过期时刻是否大于所述当前时刻;若所述过期时刻小于或者等于所述当前时刻,则获取新的用户令牌,按照所述新的用户令牌向目标权限管理服务发送权限获取请求,得到目标用户权限列表,并根据所述新的用户令牌将所述目标用户权限列表写入至内存数据库中的会话信息,所述目标权限管理服务用于指示对多个租户进行微服务授权操作;若所述过期时刻大于所述当前时刻,则根据所述目标用户令牌查询内存数据库中的会话信息,得到租户标识值和缓存的权限列表数据,判断所述缓存的权限列表数据中是否存在所述访问请求地址;若所述缓存的权限列表数据中不存在所述访问请求地址,则按照所述目标用户令牌和所述租户标识值生成操作日志信息,获取并展示警示信息,所述警示信息用于指示微服务访问请求受限;若所述缓存的权限列表数据中存在所述访问请求地址,则基于所述租户标识值确定目标微服务集群,按照所述访问请求地址对所述目标微服务集群中的目标系统微服务进行访问,得到访问结果。

可选的,在本发明第一方面的第一种实现方式中,所述通过预设微服务网关拦截微服务访问请求,得到访问请求地址和目标用户令牌,所述预设微服务网关为基于预设路由过滤对象实现的请求拦截器,包括:接收微服务访问请求,通过预设微服务网关拦截并解析所述微服务访问请求,得到请求头信息,所述预设微服务网关为基于预设路由过滤对象zuulfilter实现的请求拦截器;按照预设参数名从所述请求头信息中读取访问请求地址和目标用户令牌,所述目标用户令牌为用户成功登录微服务时设置的字符串。

可选的,在本发明第一方面的第二种实现方式中,所述若所述过期时刻小于或者等于所述当前时刻,则获取新的用户令牌,按照所述新的用户令牌向目标权限管理服务发送权限获取请求,得到目标用户权限列表,并根据所述新的用户令牌将所述目标用户权限列表写入至内存数据库中的会话信息,所述目标权限管理服务用于指示对多个租户进行微服务授权操作,包括:若所述过期时刻小于或者等于所述当前时刻,则调用预设登录页面引导用户重新登录,得到登录结果;当所述登录结果为预设值时,确定用户登录成功,并获取新的用户令牌和用户的会话信息,将所述新的用户令牌和所述用户的会话信息关联映射并存储至内存数据库中;按照所述新的用户令牌从所述用户的会话信息中获取用户唯一标识和租户标识值,并基于所述用户唯一标识和所述租户标识值向目标权限管理服务发送权限获取请求,以使得所述目标权限管理服务按照所述用户唯一标识和所述租户标识值查找并返回目标用户权限列表,所述目标权限管理服务用于指示对多个租户进行微服务授权操作;接收所述目标用户权限列表,基于所述新的用户令牌将所述目标用户权限列表更新至所述内存数据库中的会话信息,得到更新结果,并根据所述更新结果确定是否发送所述微服务访问请求。

可选的,在本发明第一方面的第三种实现方式中,所述若所述过期时刻大于所述当前时刻,则根据所述目标用户令牌查询内存数据库中的会话信息,得到租户标识值和缓存的权限列表数据,判断所述缓存的权限列表数据中是否存在所述访问请求地址,包括:若所述过期时刻大于所述当前时刻,则将所述目标用户令牌设置为目标键,按照所述目标键查询内存数据库中的会话信息,得到目标值,所述会话信息为用户首次登录时调用预设权限服务获取的用户权限列表数据;当所述目标值不为空值时,从所述目标值中获取租户标识值和缓存的权限列表数据;调用预设查找函数按照所述访问请求地址检索所述缓存的权限列表数据,得到检索结果;若所述检索结果不为预设目标值,则确定所述缓存的权限列表数据中不存在所述访问请求地址,生成提示信息,所述提示信息用于指示所述微服务访问请求存在异常;若所述检索结果为预设目标值,则确定所述缓存的权限列表数据中存在所述访问请求地址。

可选的,在本发明第一方面的第四种实现方式中,所述若所述缓存的权限列表数据中不存在所述访问请求地址,则按照所述目标用户令牌和所述租户标识值生成操作日志信息,获取并展示警示信息,所述警示信息用于指示微服务访问请求受限,包括:若所述缓存的权限列表数据中不存在所述访问请求地址,则按照所述目标用户令牌和所述租户标识值生成操作日志信息,并将所述操作日志信息更新至所述内存数据库中;按照预设模板生成警示信息,通过预设提示框对所述警示信息进行显示,所述警示信息用于指示微服务访问请求受限。

可选的,在本发明第一方面的第五种实现方式中,所述若所述缓存的权限列表数据中存在所述访问请求地址,则基于所述租户标识值确定目标微服务集群,按照所述访问请求地址对所述目标微服务集群中的目标系统微服务进行访问,得到访问结果,包括:若所述缓存的权限列表数据中存在所述访问请求地址,则基于所述租户标识值查询预设数据表,得到目标微服务集群,所述目标微服务集群用于指示系统微服务所属容器的列表数据;获取随机数,并按照所述随机数对系统微服务所属容器数量进行取余,得到目标余数;将所述目标余数设置为系统微服务所属容器的索引,按照所述访问请求地址和所述系统微服务所属容器的索引对所述目标微服务集群中的目标系统微服务进行服务调用,得到访问结果,所述访问结果包括访问成功和访问失败。

可选的,在本发明第一方面的第六种实现方式中,在所述通过预设微服务网关拦截微服务访问请求,得到访问请求地址和目标用户令牌,所述预设微服务网关为基于预设路由过滤对象实现的请求拦截器之前,所述微服务访问方法还包括:通过所述目标权限管理服务新增租户,并对所述租户配置对应的租户信息;获取包含多个用户信息的配置文件,并将所述配置文件导入至所述目标权限管理服务中,以使得多个用户信息分别与所述租户进行关联绑定;对所述租户新增至少一个系统微服务,对每个系统微服务新建资源项信息,所述资源项信息包括菜单资源和界面按钮;对所述租户创建角色树,对所述角色树中的每个角色设置所述资源项信息,并将所述角色树中的角色数据分配至与所述租户关联绑定的多个用户。

本发明第二方面提供了一种微服务访问装置,包括:拦截模块,用于通过预设微服务网关拦截微服务访问请求,得到访问请求地址和目标用户令牌,所述预设微服务网关为基于预设路由过滤对象实现的请求拦截器;判断模块,用于获取当前时刻和目标用户令牌的过期时刻,并判断所述过期时刻是否大于所述当前时刻;写入模块,若所述过期时刻小于或者等于所述当前时刻,则用于获取新的用户令牌,按照所述新的用户令牌向目标权限管理服务发送权限获取请求,得到目标用户权限列表,并根据所述新的用户令牌将所述目标用户权限列表写入至内存数据库中的会话信息,所述目标权限管理服务用于指示对多个租户进行微服务授权操作;查询模块,若所述过期时刻大于所述当前时刻,则用于根据所述目标用户令牌查询内存数据库中的会话信息,得到租户标识值和缓存的权限列表数据,判断所述缓存的权限列表数据中是否存在所述访问请求地址;处理模块,若所述缓存的权限列表数据中不存在所述访问请求地址,则用于按照所述目标用户令牌和所述租户标识值生成操作日志信息,获取并展示警示信息,所述警示信息用于指示微服务访问请求受限;访问模块,若所述缓存的权限列表数据中存在所述访问请求地址,则用于基于所述租户标识值确定目标微服务集群,按照所述访问请求地址对所述目标微服务集群中的目标系统微服务进行访问,得到访问结果。

可选的,在本发明第二方面的第一种实现方式中,所述拦截模块具体用于:接收微服务访问请求,通过预设微服务网关拦截并解析所述微服务访问请求,得到请求头信息,所述预设微服务网关为基于预设路由过滤对象zuulfilter实现的请求拦截器;按照预设参数名从所述请求头信息中读取访问请求地址和目标用户令牌,所述目标用户令牌为用户成功登录微服务时设置的字符串。

可选的,在本发明第二方面的第二种实现方式中,所述写入模块具体用于:若所述过期时刻小于或者等于所述当前时刻,则调用预设登录页面引导用户重新登录,得到登录结果;当所述登录结果为预设值时,确定用户登录成功,并获取新的用户令牌和用户的会话信息,将所述新的用户令牌和所述用户的会话信息关联映射并存储至内存数据库中;按照所述新的用户令牌从所述用户的会话信息中获取用户唯一标识和租户标识值,并基于所述用户唯一标识和所述租户标识值向目标权限管理服务发送权限获取请求,以使得所述目标权限管理服务按照所述用户唯一标识和所述租户标识值查找并返回目标用户权限列表,所述目标权限管理服务用于指示对多个租户进行微服务授权操作;接收所述目标用户权限列表,基于所述新的用户令牌将所述目标用户权限列表更新至所述内存数据库中的会话信息,得到更新结果,并根据所述更新结果确定是否发送所述微服务访问请求。

可选的,在本发明第二方面的第三种实现方式中,所述查询模块具体用于:若所述过期时刻大于所述当前时刻,则将所述目标用户令牌设置为目标键,按照所述目标键查询内存数据库中的会话信息,得到目标值,所述会话信息为用户首次登录时调用预设权限服务获取的用户权限列表数据;当所述目标值不为空值时,从所述目标值中获取租户标识值和缓存的权限列表数据;调用预设查找函数按照所述访问请求地址检索所述缓存的权限列表数据,得到检索结果;若所述检索结果不为预设目标值,则确定所述缓存的权限列表数据中不存在所述访问请求地址,生成提示信息,所述提示信息用于指示所述微服务访问请求存在异常;若所述检索结果为预设目标值,则确定所述缓存的权限列表数据中存在所述访问请求地址。

可选的,在本发明第二方面的第四种实现方式中,所述处理模块具体用于:若所述缓存的权限列表数据中不存在所述访问请求地址,则按照所述目标用户令牌和所述租户标识值生成操作日志信息,并将所述操作日志信息更新至所述内存数据库中;按照预设模板生成警示信息,通过预设提示框对所述警示信息进行显示,所述警示信息用于指示微服务访问请求受限。

可选的,在本发明第二方面的第五种实现方式中,所述访问模块具体用于:若所述缓存的权限列表数据中存在所述访问请求地址,则基于所述租户标识值查询预设数据表,得到目标微服务集群,所述目标微服务集群用于指示系统微服务所属容器的列表数据;获取随机数,并按照所述随机数对系统微服务所属容器数量进行取余,得到目标余数;将所述目标余数设置为系统微服务所属容器的索引,按照所述访问请求地址和所述系统微服务所属容器的索引对所述目标微服务集群中的目标系统微服务进行服务调用,得到访问结果,所述访问结果包括访问成功和访问失败。

可选的,在本发明第二方面的第六种实现方式中,所述微服务访问装置还包括:配置模块,用于通过所述目标权限管理服务新增租户,并对所述租户配置对应的租户信息;导入模块,用于获取包含多个用户信息的配置文件,并将所述配置文件导入至所述目标权限管理服务中,以使得多个用户信息分别与所述租户进行关联绑定;新增模块,用于对所述租户新增至少一个系统微服务,对每个系统微服务新建资源项信息,所述资源项信息包括菜单资源和界面按钮;分配模块,用于对所述租户创建角色树,对所述角色树中的每个角色设置所述资源项信息,并将所述角色树中的角色数据分配至与所述租户关联绑定的多个用户。

本发明第三方面提供了一种微服务访问设备,包括:存储器和至少一个处理器,所述存储器中存储有指令;所述至少一个处理器调用所述存储器中的所述指令,以使得所述微服务访问设备执行上述的微服务访问方法。

本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的微服务访问方法。

本发明提供的技术方案中,通过预设微服务网关拦截微服务访问请求,得到访问请求地址和目标用户令牌,所述预设微服务网关为基于预设路由过滤对象实现的请求拦截器;获取当前时刻和目标用户令牌的过期时刻,并判断所述过期时刻是否大于所述当前时刻;若所述过期时刻小于或者等于所述当前时刻,则获取新的用户令牌,按照所述新的用户令牌向目标权限管理服务发送权限获取请求,得到目标用户权限列表,并根据所述新的用户令牌将所述目标用户权限列表写入至内存数据库中的会话信息,所述目标权限管理服务用于指示对多个租户进行微服务授权操作;若所述过期时刻大于所述当前时刻,则根据所述目标用户令牌查询内存数据库中的会话信息,得到租户标识值和缓存的权限列表数据,判断所述缓存的权限列表数据中是否存在所述访问请求地址;若所述缓存的权限列表数据中不存在所述访问请求地址,则按照所述目标用户令牌和所述租户标识值生成操作日志信息,获取并展示警示信息,所述警示信息用于指示微服务访问请求受限;若所述缓存的权限列表数据中存在所述访问请求地址,则基于所述租户标识值确定目标微服务集群,按照所述访问请求地址对所述目标微服务集群中的目标系统微服务进行访问,得到访问结果。本发明实施例中,通过预设微服务网关拦截微服务访问请求,得到访问请求地址和目标用户令牌;在用户令牌过期后按照新的用户令牌向目标权限管理服务获取并缓存目标用户权限列表;在过期时刻内基于租户标识值确定目标微服务集群,按照访问请求地址对目标微服务集群中的系统微服务进行访问,提高了微服务集群的权限验证效率和微服务访问准确率。

附图说明

图1为本发明实施例中微服务访问方法的一个实施例示意图;

图2为本发明实施例中微服务访问方法的另一个实施例示意图;

图3为本发明实施例中微服务访问装置的一个实施例示意图;

图4为本发明实施例中微服务访问装置的另一个实施例示意图;

图5为本发明实施例中微服务访问设备的一个实施例示意图。

具体实施方式

本发明实施例提供了一种微服务访问方法、装置、设备及存储介质,用于在过期时刻内基于租户标识值确定目标微服务集群,按照访问请求地址对目标微服务集群中的系统微服务进行访问,提高微服务集群的权限验证效率和微服务访问准确率。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中微服务访问方法的一个实施例包括:

101、通过预设微服务网关拦截微服务访问请求,得到访问请求地址和目标用户令牌,预设微服务网关为基于预设路由过滤对象实现的请求拦截器。

其中,预设微服务网关作为整个微服务前端流量的总入口,所有对微服务的访问必须经过预设微服务网关,预设微服务网关拦截所有的微服务访问请求,并调用权限服务进行认证校验。具体的,终端通过预设微服务网关拦截终端发送的微服务访问请求;终端从微服务访问请求中提取对应的访问请求地址url与目标用户令牌token。

进一步地,将访问请求地址存储于区块链数据库中,具体此处不做限定。

可以理解的是,本发明的执行主体可以为微服务访问装置,还可以是终端或者服务器,具体此处不做限定。本发明实施例以终端为执行主体为例进行说明。

102、获取当前时刻和目标用户令牌的过期时刻,并判断过期时刻是否大于当前时刻。

每个目标用户令牌均存在过期时刻,其过期时刻与用户在内存数据库中的会话信息的过期时刻是一致的。具体的,终端按照预设时刻生成函数(例如,预设时刻生成函数为time())生成当前时刻;终端按照目标用户令牌从预设数据配置表中读取目标用户令牌的过期时刻;终端将过期时刻与当前时刻进行差运算,得到差值;终端判断差值是否大于0;若差值大于0,则终端确定过期时刻大于当前时刻,并执行步骤104;若差值小于或者等于0,则终端确定过期时刻小于或者等于当前时刻,并执行步骤103。

103、若过期时刻小于或者等于当前时刻,则获取新的用户令牌,按照新的用户令牌向目标权限管理服务发送权限获取请求,得到目标用户权限列表,并根据新的用户令牌将目标用户权限列表写入至内存数据库中的会话信息,目标权限管理服务用于指示对多个租户进行微服务授权操作。

具体的,终端更新过期时刻,并按照用户令牌向目标权限管理服务发送权限获取请求,以使得目标权限管理服务按照用户令牌查找并返回用户权限列表,终端根据用户令牌对返回的用户权限列表重新写入至内存数据库的会话信息中。也就是,终端在内存数据库中查找token有权限的url中是否包含当前请求的url,如果包含则路由到对应的微服务上。由于内存数据库具有过期时刻,当终端检测到过期时刻小于或者等于当前时刻时,终端从目标权限管理服务加载并缓存该用户的权限列表。目标权限管理服务根据token识别对应的用户及该用户对应的租户,进而查询出该用户的权限列表返给网关服务。其中,目标权限管理服务为基于预设框架springboot构建的微服务。

104、若过期时刻大于当前时刻,则根据目标用户令牌查询内存数据库中的会话信息,得到租户标识值和缓存的权限列表数据,判断缓存的权限列表数据中是否存在访问请求地址。

可以理解的是,终端发送登录请求至服务器,服务器创建会话信息和目标用户令牌,并将会话信息和目标用户令牌映射关联后,向终端发送已关联的会话信息和目标用户令牌,终端将其存储至内存数据库中,其中,会话信息包括权限列表数据。终端每次发送微服务访问请求中都包含目标用户令牌,目标用户令牌用于指示用户的唯一标识信息。拦截器通过验证目标用户令牌和访问请求地址验证每个微服务访问请求并建立安全上下文。安全上下文描述了用户主体及其角色,终端使用安全上下文来获取用户在内存数据库中的会话信息,并从会话信息读取目标用户令牌对应的租户标识值和缓存的权限资源列表。

105、若缓存的权限列表数据中不存在访问请求地址,则按照目标用户令牌和租户标识值生成操作日志信息,获取并展示警示信息,警示信息用于指示微服务访问请求受限。

具体的,若缓存的权限列表数据中不存在访问请求地址,则终端基于目标用户令牌和租户标识值生成操作日志信息,并将操作日志信息存储至内存数据库中,进一步地,终端将内存数据库进行数据持久化处理或者数据备份处理,以防止数据丢失,确保数据的安全性。然后终端从内存数据库中获取预设模板,终端根据预设模板生成警示信息,警示信息用于指示微服务访问请求受限(也就是,用户不具有访问权限)。

106、若缓存的权限列表数据中存在访问请求地址,则基于租户标识值确定目标微服务集群,按照访问请求地址对目标微服务集群中的目标系统微服务进行访问,得到访问结果。

其中,系统微服务可以为资产管理系统,也可以为订单管理系统,还可以为财务系统或者销售管理系统,具体此处不做限定。一个租户可以包括多个用户,不同租户具有各自对应的系统服务群。可以理解的是,预设系统服务中的每张表都存在一个字段tenantid(租户标识值),用于标记该数据的所属租户,微服务访问请求在鉴权以后需要携带该字段作为微服务访问条件,预设系统服务中的所有数据都标记了所属租户。

本发明实施例中,通过预设微服务网关拦截微服务访问请求,得到访问请求地址和目标用户令牌;在用户令牌过期后按照新的用户令牌向目标权限管理服务获取并缓存目标用户权限列表;在过期时刻内基于租户标识值确定目标微服务集群,按照访问请求地址对目标微服务集群中的系统微服务进行访问,提高了微服务集群的权限验证效率和微服务访问准确率。

请参阅图2,本发明实施例中微服务访问方法的另一个实施例包括:

201、接收微服务访问请求,通过预设微服务网关拦截并解析微服务访问请求,得到请求头信息,预设微服务网关为基于预设路由过滤对象zuulfilter实现的请求拦截器。

例如,request=requestcontext.getcurrentcontext(),其中,request用于指示终端获取的请求头信息。

进一步地,在步骤201之前,终端通过目标权限管理服务新增租户,并对租户配置对应的租户信息;终端获取包含多个用户信息的配置文件,并将配置文件导入至目标权限管理服务中,以使得多个用户信息分别与租户进行关联绑定;终端对租户新增至少一个系统微服务,对每个系统微服务新建资源项信息,资源项信息包括菜单资源和界面按钮;终端对租户创建角色树,对角色树中的每个角色设置资源项信息,并将角色树中的角色数据分配至与租户关联绑定的多个用户。也就是,终端通过目标权限服务进行租户和用户对微服务访问的权限控制,并且,租户与用户为一对多关系,目标权限服务可管理多个租户。

202、按照预设参数名从请求头信息中读取访问请求地址和目标用户令牌,目标用户令牌为用户成功登录微服务时设置的字符串。

例如,终端从请求头信息request中获取访问请求地址url和目标用户令牌token。预设路由过滤对象为zuulfilter。

需要说明的是,终端还需要预先搭建内存数据库,用来缓存预设微服务网关的会话session信息,例如,内存数据库可以为远程服务字典redis服务,也可以为其他数据库,具体此处不做限定;然后终端预先部署与预设微服务网关的程序包;其次终端预先部署基于对象关系型数据库管理系统pgsql的数据库集群,以便于作为权限管理服务的数据库;最后终端部署预先配置的权限服务程序包。

203、获取当前时刻和目标用户令牌的过期时刻,并判断过期时刻是否大于当前时刻。

该步骤203与步骤102的执行过程相似,具体此处不再赘述。

204、若过期时刻小于或者等于当前时刻,则获取新的用户令牌,按照新的用户令牌向目标权限管理服务发送权限获取请求,得到目标用户权限列表,并根据新的用户令牌将目标用户权限列表写入至内存数据库中的会话信息,目标权限管理服务用于指示对多个租户进行微服务授权操作。

需要说明的是,目标权限管理服务用于提供权限资源的管理、角色管理、授权管理、认证服务功能。该目标权限管理服务在基于角色的访问控制(role-basedaccesscontrol,rbac)模型上增加了租户的概念,一个业务系统为一个租户可以包含多个微服务,包含一套权限数据,不同租户的权限控制数据完全隔离,在登陆时建立token与租户的关系。权限类型分为操作权限、管理权限和授权权限,其中,操作权限用于控制url、界面按钮与元素的访问与调用,返给网关的权限列表就只有操作权限。管理权限用于对url自身的管理如新增、删除、修改等。授权权限用于控制对操作、管理权限的授予控制。目标权限管理服务在实际获取权限列表时,通过token从会话中查询出对应的用户与租户,再获取用户在该租户中的角色列表,根据角色列表查询权限列表。

可选的,若过期时刻小于或者等于当前时刻,则终端调用预设登录页面引导用户重新登录,得到登录结果;当登录结果为预设值时,终端确定用户登录成功,并获取新的用户令牌和用户的会话信息,将新的用户令牌和用户的会话信息关联映射并存储至内存数据库中;终端按照新的用户令牌从用户的会话信息中获取用户唯一标识和租户标识值,并基于用户唯一标识和租户标识值向目标权限管理服务发送权限获取请求,以使得目标权限管理服务按照用户唯一标识和租户标识值查找并返回目标用户权限列表,目标权限管理服务用于指示对多个租户进行微服务授权操作;终端接收目标用户权限列表,基于新的用户令牌将目标用户权限列表更新至内存数据库中的会话信息,得到更新结果,并根据更新结果确定是否发送微服务访问请求。

205、若过期时刻大于当前时刻,则根据目标用户令牌查询内存数据库中的会话信息,得到租户标识值和缓存的权限列表数据,判断缓存的权限列表数据中是否存在访问请求地址。

需要说明的是,一个租户对应一个用户群(例如,一个公司或者一个公司事业部的员工),用户群中的单个人员便是系统的用户了,一个业务系统一般用来解决一个用户群的业务问题。其中,缓存的权限列表数据包括用户对应的租户、拥有所有权限的角色标识和所有权限的资源标识。可选的,当用户初次登录微服务时,目标权限管理服务根据用户名查询用户信息,用户信息包含该用户的所属租户标识值,然后再从用户角色关系表和角色资源关系表分别查询具有权限的所有角色标识、资源标识与url,,然后终端将这些信息保存到用户的会话信息中,得到缓存的权限列表数据。

可选的,若过期时刻大于当前时刻,则终端将目标用户令牌设置为目标键,按照目标键查询内存数据库中的会话信息,得到目标值,会话信息为用户首次登录时调用预设权限服务获取的用户权限列表数据,也就是,终端将权限列表数据存到当前的会话session中,缓存数据的过期与session保持一致。当目标值不为空值时,终端从目标值中获取租户标识值和缓存的权限列表数据;终端调用预设查找函数按照访问请求地址检索缓存的权限列表数据,得到检索结果;若检索结果不为预设目标值,则终端确定缓存的权限列表数据中不存在访问请求地址,终端生成提示信息,提示信息用于指示微服务访问请求存在异常;若检索结果为预设目标值,则终端确定缓存的权限列表数据中存在访问请求地址。

206、若缓存的权限列表数据中不存在访问请求地址,则按照目标用户令牌和租户标识值生成操作日志信息,获取并展示警示信息,警示信息用于指示微服务访问请求受限。

也就是,若缓存的权限列表数据中不存在访问请求地址,则终端确定微服务访问请求存在异常。可选的,若缓存的权限列表数据中不存在访问请求地址,则终端按照目标用户令牌和租户标识值生成操作日志信息,并将操作日志信息更新至内存数据库中;终端按照预设模板生成警示信息,通过预设提示框对警示信息进行显示,警示信息用于指示微服务访问请求受限。

进一步地,终端按照时刻倒序展示操作日志信息,以使得目标人员按照实际需求获取微服务访问的过程信息。

207、若缓存的权限列表数据中存在访问请求地址,则基于租户标识值确定目标微服务集群,按照访问请求地址对目标微服务集群中的目标系统微服务进行访问,得到访问结果。

可以理解的是,预设微服务网关直接透传目标权限管理服务对终端中元素的控制列表,再由终端中超文本标记语言h5页面进行权限判断。终端中元素预先设置有唯一编号。而在目标权限管理服务中对应的租户下对应的系统微服务中新建权限资源关联该唯一编号,并对权限资源进行角色赋权。终端将查询到的当前用户的具有权限资源列表返给终端,终端根据资源列表进行权限控制。

可选的,若缓存的权限列表数据中存在访问请求地址,则终端基于租户标识值查询预设数据表,得到目标微服务集群,目标微服务集群用于指示系统微服务所属容器的列表数据;终端获取随机数(例如,random()),并按照随机数对系统微服务所属容器数量进行取余,得到目标余数;终端将目标余数设置为系统微服务所属容器的索引,按照访问请求地址和系统微服务所属容器的索引对目标微服务集群中的目标系统微服务进行服务调用,得到访问结果,访问结果包括访问成功和访问失败。例如,随机数为69,系统微服务所属容器数量为10,则系统微服务所属容器的索引(目标余数)为9,服务器对索引为9的目标系统微服务进行访问,得到访问结果。

本发明实施例中,通过预设微服务网关拦截微服务访问请求,得到访问请求地址和目标用户令牌;在用户令牌过期后按照新的用户令牌向目标权限管理服务获取并缓存目标用户权限列表;在过期时刻内基于租户标识值确定目标微服务集群,按照访问请求地址对目标微服务集群中的系统微服务进行访问,提高了微服务集群的权限验证效率和微服务访问准确率。

上面对本发明实施例中微服务访问方法进行了描述,下面对本发明实施例中微服务访问装置进行描述,请参阅图3,本发明实施例中微服务访问装置的一个实施例包括:

拦截模块301,用于通过预设微服务网关拦截微服务访问请求,得到访问请求地址和目标用户令牌,预设微服务网关为基于预设路由过滤对象实现的请求拦截器;

判断模块302,用于获取当前时刻和目标用户令牌的过期时刻,并判断过期时刻是否大于当前时刻;

写入模块303,若过期时刻小于或者等于当前时刻,则用于获取新的用户令牌,按照新的用户令牌向目标权限管理服务发送权限获取请求,得到目标用户权限列表,并根据新的用户令牌将目标用户权限列表写入至内存数据库中的会话信息,目标权限管理服务用于指示对多个租户进行微服务授权操作;

查询模块304,若过期时刻大于当前时刻,则用于根据目标用户令牌查询内存数据库中的会话信息,得到租户标识值和缓存的权限列表数据,判断缓存的权限列表数据中是否存在访问请求地址;

处理模块305,若缓存的权限列表数据中不存在访问请求地址,则用于按照目标用户令牌和租户标识值生成操作日志信息,获取并展示警示信息,警示信息用于指示微服务访问请求受限;

访问模块306,若缓存的权限列表数据中存在访问请求地址,则用于基于租户标识值确定目标微服务集群,按照访问请求地址对目标微服务集群中的目标系统微服务进行访问,得到访问结果。

进一步地,将访问请求地址存储于区块链数据库中,具体此处不做限定。

本发明实施例中,通过预设微服务网关拦截微服务访问请求,得到访问请求地址和目标用户令牌;在用户令牌过期后按照新的用户令牌向目标权限管理服务获取并缓存目标用户权限列表;在过期时刻内基于租户标识值确定目标微服务集群,按照访问请求地址对目标微服务集群中的系统微服务进行访问,提高了微服务集群的权限验证效率和微服务访问准确率。

请参阅图4,本发明实施例中微服务访问装置的另一个实施例包括:

拦截模块301,用于通过预设微服务网关拦截微服务访问请求,得到访问请求地址和目标用户令牌,预设微服务网关为基于预设路由过滤对象实现的请求拦截器;

判断模块302,用于获取当前时刻和目标用户令牌的过期时刻,并判断过期时刻是否大于当前时刻;

写入模块303,若过期时刻小于或者等于当前时刻,则用于获取新的用户令牌,按照新的用户令牌向目标权限管理服务发送权限获取请求,得到目标用户权限列表,并根据新的用户令牌将目标用户权限列表写入至内存数据库中的会话信息,目标权限管理服务用于指示对多个租户进行微服务授权操作;

查询模块304,若过期时刻大于当前时刻,则用于根据目标用户令牌查询内存数据库中的会话信息,得到租户标识值和缓存的权限列表数据,判断缓存的权限列表数据中是否存在访问请求地址;

处理模块305,若缓存的权限列表数据中不存在访问请求地址,则用于按照目标用户令牌和租户标识值生成操作日志信息,获取并展示警示信息,警示信息用于指示微服务访问请求受限;

访问模块306,若缓存的权限列表数据中存在访问请求地址,则用于基于租户标识值确定目标微服务集群,按照访问请求地址对目标微服务集群中的目标系统微服务进行访问,得到访问结果。

可选的,拦截模块301还可以具体用于:

接收微服务访问请求,通过预设微服务网关拦截并解析微服务访问请求,得到请求头信息,预设微服务网关为基于预设路由过滤对象zuulfilter实现的请求拦截器;

按照预设参数名从请求头信息中读取访问请求地址和目标用户令牌,目标用户令牌为用户成功登录微服务时设置的字符串。

可选的,写入模块303还可以具体用于:

若过期时刻小于或者等于当前时刻,则调用预设登录页面引导用户重新登录,得到登录结果;

当登录结果为预设值时,确定用户登录成功,并获取新的用户令牌和用户的会话信息,将新的用户令牌和用户的会话信息关联映射并存储至内存数据库中;

按照新的用户令牌从用户的会话信息中获取用户唯一标识和租户标识值,并基于用户唯一标识和租户标识值向目标权限管理服务发送权限获取请求,以使得目标权限管理服务按照用户唯一标识和租户标识值查找并返回目标用户权限列表,目标权限管理服务用于指示对多个租户进行微服务授权操作;

接收目标用户权限列表,基于新的用户令牌将目标用户权限列表更新至内存数据库中的会话信息,得到更新结果,并根据更新结果确定是否发送微服务访问请求。

可选的,查询模块304还可以具体用于:

若过期时刻大于当前时刻,则将目标用户令牌设置为目标键,按照目标键查询内存数据库中的会话信息,得到目标值,会话信息为用户首次登录时调用预设权限服务获取的用户权限列表数据;

当目标值不为空值时,从目标值中获取租户标识值和缓存的权限列表数据;

调用预设查找函数按照访问请求地址检索缓存的权限列表数据,得到检索结果;

若检索结果不为预设目标值,则确定缓存的权限列表数据中不存在访问请求地址,生成提示信息,提示信息用于指示微服务访问请求存在异常;

若检索结果为预设目标值,则确定缓存的权限列表数据中存在访问请求地址。

可选的,处理模块305还可以具体用于:

若缓存的权限列表数据中不存在访问请求地址,则按照目标用户令牌和租户标识值生成操作日志信息,并将操作日志信息更新至内存数据库中;

按照预设模板生成警示信息,通过预设提示框对警示信息进行显示,警示信息用于指示微服务访问请求受限。

可选的,访问模块306还可以具体用于:

若缓存的权限列表数据中存在访问请求地址,则基于租户标识值查询预设数据表,得到目标微服务集群,目标微服务集群用于指示系统微服务所属容器的列表数据;

获取随机数,并按照随机数对系统微服务所属容器数量进行取余,得到目标余数;

将目标余数设置为系统微服务所属容器的索引,按照访问请求地址和系统微服务所属容器的索引对目标微服务集群中的目标系统微服务进行服务调用,得到访问结果,访问结果包括访问成功和访问失败。

可选的,微服务访问装置还包括:

配置模块307,用于通过目标权限管理服务新增租户,并对租户配置对应的租户信息;

导入模块308,用于获取包含多个用户信息的配置文件,并将配置文件导入至目标权限管理服务中,以使得多个用户信息分别与租户进行关联绑定;

新增模块309,用于对租户新增至少一个系统微服务,对每个系统微服务新建资源项信息,资源项信息包括菜单资源和界面按钮;

分配模块310,用于对租户创建角色树,对角色树中的每个角色设置资源项信息,并将角色树中的角色数据分配至与租户关联绑定的多个用户。

本发明实施例中,通过预设微服务网关拦截微服务访问请求,得到访问请求地址和目标用户令牌;在用户令牌过期后按照新的用户令牌向目标权限管理服务获取并缓存目标用户权限列表;在过期时刻内基于租户标识值确定目标微服务集群,按照访问请求地址对目标微服务集群中的系统微服务进行访问,提高了微服务集群的权限验证效率和微服务访问准确率。

上面图3和图4从模块化的角度对本发明实施例中的微服务访问装置进行详细描述,下面从硬件处理的角度对本发明实施例中微服务访问设备进行详细描述。

图5是本发明实施例提供的一种微服务访问设备的结构示意图,该微服务访问设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)510(例如,一个或一个以上处理器)和存储器520,一个或一个以上存储应用程序533或数据532的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器520和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对微服务访问设备500中的一系列指令操作。更进一步地,处理器510可以设置为与存储介质530通信,在微服务访问设备500上执行存储介质530中的一系列指令操作。

微服务访问设备500还可以包括一个或一个以上电源540,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口560,和/或,一个或一个以上操作系统531,例如windowsserve,macosx,unix,linux,freebsd等等。本领域技术人员可以理解,图5示出的微服务访问设备结构并不构成对微服务访问设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述微服务访问方法的步骤。

本发明还提供一种微服务访问设备,所述微服务访问设备包括存储器和处理器,存储器中存储有指令,所述指令被处理器执行时,使得处理器执行上述各实施例中的所述微服务访问方法的步骤。

进一步地,所述计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。

本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。


技术特征:

1.一种微服务访问方法,其特征在于,所述微服务访问方法包括:

通过预设微服务网关拦截微服务访问请求,得到访问请求地址和目标用户令牌,所述预设微服务网关为基于预设路由过滤对象实现的请求拦截器;

获取当前时刻和目标用户令牌的过期时刻,并判断所述过期时刻是否大于所述当前时刻;

若所述过期时刻小于或者等于所述当前时刻,则获取新的用户令牌,按照所述新的用户令牌向目标权限管理服务发送权限获取请求,得到目标用户权限列表,并根据所述新的用户令牌将所述目标用户权限列表写入至内存数据库中的会话信息,所述目标权限管理服务用于指示对多个租户进行微服务授权操作;

若所述过期时刻大于所述当前时刻,则根据所述目标用户令牌查询内存数据库中的会话信息,得到租户标识值和缓存的权限列表数据,判断所述缓存的权限列表数据中是否存在所述访问请求地址;

若所述缓存的权限列表数据中不存在所述访问请求地址,则按照所述目标用户令牌和所述租户标识值生成操作日志信息,获取并展示警示信息,所述警示信息用于指示微服务访问请求受限;

若所述缓存的权限列表数据中存在所述访问请求地址,则基于所述租户标识值确定目标微服务集群,按照所述访问请求地址对所述目标微服务集群中的目标系统微服务进行访问,得到访问结果。

2.根据权利要求1所述的微服务访问方法,其特征在于,所述通过预设微服务网关拦截微服务访问请求,得到访问请求地址和目标用户令牌,所述预设微服务网关为基于预设路由过滤对象实现的请求拦截器,包括:

接收微服务访问请求,通过预设微服务网关拦截并解析所述微服务访问请求,得到请求头信息,所述预设微服务网关为基于预设路由过滤对象zuulfilter实现的请求拦截器;

按照预设参数名从所述请求头信息中读取访问请求地址和目标用户令牌,所述目标用户令牌为用户成功登录微服务时设置的字符串。

3.根据权利要求1所述的微服务访问方法,其特征在于,所述若所述过期时刻小于或者等于所述当前时刻,则获取新的用户令牌,按照所述新的用户令牌向目标权限管理服务发送权限获取请求,得到目标用户权限列表,并根据所述新的用户令牌将所述目标用户权限列表写入至内存数据库中的会话信息,所述目标权限管理服务用于指示对多个租户进行微服务授权操作,包括:

若所述过期时刻小于或者等于所述当前时刻,则调用预设登录页面引导用户重新登录,得到登录结果;

当所述登录结果为预设值时,确定用户登录成功,并获取新的用户令牌和用户的会话信息,将所述新的用户令牌和所述用户的会话信息关联映射并存储至内存数据库中;

按照所述新的用户令牌从所述用户的会话信息中获取用户唯一标识和租户标识值,并基于所述用户唯一标识和所述租户标识值向目标权限管理服务发送权限获取请求,以使得所述目标权限管理服务按照所述用户唯一标识和所述租户标识值查找并返回目标用户权限列表,所述目标权限管理服务用于指示对多个租户进行微服务授权操作;

接收所述目标用户权限列表,基于所述新的用户令牌将所述目标用户权限列表更新至所述内存数据库中的会话信息,得到更新结果,并根据所述更新结果确定是否发送所述微服务访问请求。

4.根据权利要求1所述的微服务访问方法,其特征在于,所述若所述过期时刻大于所述当前时刻,则根据所述目标用户令牌查询内存数据库中的会话信息,得到租户标识值和缓存的权限列表数据,判断所述缓存的权限列表数据中是否存在所述访问请求地址,包括:

若所述过期时刻大于所述当前时刻,则将所述目标用户令牌设置为目标键,按照所述目标键查询内存数据库中的会话信息,得到目标值,所述会话信息为用户首次登录时调用预设权限服务获取的用户权限列表数据;

当所述目标值不为空值时,从所述目标值中获取租户标识值和缓存的权限列表数据;

调用预设查找函数按照所述访问请求地址检索所述缓存的权限列表数据,得到检索结果;

若所述检索结果不为预设目标值,则确定所述缓存的权限列表数据中不存在所述访问请求地址,生成提示信息,所述提示信息用于指示所述微服务访问请求存在异常;

若所述检索结果为预设目标值,则确定所述缓存的权限列表数据中存在所述访问请求地址。

5.根据权利要求1所述的微服务访问方法,其特征在于,所述若所述缓存的权限列表数据中不存在所述访问请求地址,则按照所述目标用户令牌和所述租户标识值生成操作日志信息,获取并展示警示信息,所述警示信息用于指示微服务访问请求受限,包括:

若所述缓存的权限列表数据中不存在所述访问请求地址,则按照所述目标用户令牌和所述租户标识值生成操作日志信息,并将所述操作日志信息更新至所述内存数据库中;

按照预设模板生成警示信息,通过预设提示框对所述警示信息进行显示,所述警示信息用于指示微服务访问请求受限。

6.根据权利要求1所述的微服务访问方法,其特征在于,所述若所述缓存的权限列表数据中存在所述访问请求地址,则基于所述租户标识值确定目标微服务集群,按照所述访问请求地址对所述目标微服务集群中的目标系统微服务进行访问,得到访问结果,包括:

若所述缓存的权限列表数据中存在所述访问请求地址,则基于所述租户标识值查询预设数据表,得到目标微服务集群,所述目标微服务集群用于指示系统微服务所属容器的列表数据;

获取随机数,并按照所述随机数对系统微服务所属容器数量进行取余,得到目标余数;

将所述目标余数设置为系统微服务所属容器的索引,按照所述访问请求地址和所述系统微服务所属容器的索引对所述目标微服务集群中的目标系统微服务进行服务调用,得到访问结果,所述访问结果包括访问成功和访问失败。

7.根据权利要求1-6中任意一项所述的微服务访问方法,其特征在于,在所述通过预设微服务网关拦截微服务访问请求,得到访问请求地址和目标用户令牌,所述预设微服务网关为基于预设路由过滤对象实现的请求拦截器之前,所述微服务访问方法还包括:

通过所述目标权限管理服务新增租户,并对所述租户配置对应的租户信息;

获取包含多个用户信息的配置文件,并将所述配置文件导入至所述目标权限管理服务中,以使得多个用户信息分别与所述租户进行关联绑定;

对所述租户新增至少一个系统微服务,对每个系统微服务新建资源项信息,所述资源项信息包括菜单资源和界面按钮;

对所述租户创建角色树,对所述角色树中的每个角色设置所述资源项信息,并将所述角色树中的角色数据分配至与所述租户关联绑定的多个用户。

8.一种微服务访问装置,其特征在于,所述微服务访问装置包括:

拦截模块,用于通过预设微服务网关拦截微服务访问请求,得到访问请求地址和目标用户令牌,所述预设微服务网关为基于预设路由过滤对象实现的请求拦截器;

判断模块,用于获取当前时刻和目标用户令牌的过期时刻,并判断所述过期时刻是否大于所述当前时刻;

写入模块,若所述过期时刻小于或者等于所述当前时刻,则用于获取新的用户令牌,按照所述新的用户令牌向目标权限管理服务发送权限获取请求,得到目标用户权限列表,并根据所述新的用户令牌将所述目标用户权限列表写入至内存数据库中的会话信息,所述目标权限管理服务用于指示对多个租户进行微服务授权操作;

查询模块,若所述过期时刻大于所述当前时刻,则用于根据所述目标用户令牌查询内存数据库中的会话信息,得到租户标识值和缓存的权限列表数据,判断所述缓存的权限列表数据中是否存在所述访问请求地址;

处理模块,若所述缓存的权限列表数据中不存在所述访问请求地址,则用于按照所述目标用户令牌和所述租户标识值生成操作日志信息,获取并展示警示信息,所述警示信息用于指示微服务访问请求受限;

访问模块,若所述缓存的权限列表数据中存在所述访问请求地址,则用于基于所述租户标识值确定目标微服务集群,按照所述访问请求地址对所述目标微服务集群中的目标系统微服务进行访问,得到访问结果。

9.一种微服务访问设备,其特征在于,所述微服务访问设备包括:存储器和至少一个处理器,所述存储器中存储有指令;

所述至少一个处理器调用所述存储器中的所述指令,以使得所述微服务访问设备执行如权利要求1-7中任意一项所述的微服务访问方法。

10.一种计算机可读存储介质,其上存储有指令,其特征在于,所述指令被处理器执行时实现如权利要求1-7中任意一项所述的微服务访问方法。

技术总结
本发明涉及信息安全技术领域,公开了一种微服务访问方法、装置、设备及存储介质,用于提高微服务访问准确率。微服务访问方法包括:通过预设微服务网关拦截微服务访问请求,得到访问请求地址和目标用户令牌;若过期时刻小于或者等于当前时刻,则按照新的用户令牌向目标权限管理服务发送权限获取请求,得到目标用户权限列表;若过期时刻大于当前时刻,则根据目标用户令牌获取租户标识值和缓存的权限列表数据;若缓存的权限列表数据中不存在访问请求地址,则生成警示信息;若缓存的权限列表数据中存在访问请求地址,则基于租户标识值和访问请求地址对目标系统微服务进行访问。此外,本发明还涉及区块链技术,访问请求地址可存储于区块链节点中。

技术研发人员:陈忠平
受保护的技术使用者:平安科技(深圳)有限公司
技术研发日:2020.12.15
技术公布日:2021.04.06

转载请注明原文地址:https://xbbs.6miu.com/read-20973.html