logo好方法网

一种基于微服务多租户的接口鉴权、权限验证方法及系统


技术摘要:
本发明公开了一种基于微服务多租户的接口鉴权、权限验证方法及系统,涉及微服务技术领域,本发明可供不同的终端以及不同的应用进行调用提高了接口的维护性,只需维护接口版本等即可,同时方便终端业务的集成式开发,无需关注后台开发,只需要对前端做相应的开发即可,  全部
背景技术:
传统软件模式架构比较单一,采用传统带有的视图层框架进行web项目开发的方 式,其缺陷是:代码臃肿,不便于维护,扩展性差。对于安全验证采用常用开源框架,虽然开 发难度低,但是对于微服务架构而言适用性较低,并且对于前后端分离的架构方式就会显 得绰绰有余。 目大部分的开发者经历和开发过单体应用,无论是传统的Servlet JSP,还是SSM, 或是现在的SpringBoot,它们都是单体应用,存在部署成本高,改动影响大,风险高,无法满 足快速扩容,弹性伸缩,因此微服务架构诞生了,但是微服务带来了新的问题,如复杂性,分 布式事务问题,权限设计问题等等。 因此,亟需一种基于微服务实现全新的接口鉴权和权限分配设计。
技术实现要素:
针对现有技术中存在的缺陷,本发明的目的在于提供一种基于微服务多租户的接 口鉴权、权限验证方法及系统,提高接口的维护性、提高资源访问的安全及性能。 为达到以上目的,本发明采取的技术方案是:一种基于微服务多租户的接口鉴权、 权限验证方法,包括以下步骤: 设置用户权限表,用户权限表用于存储租户ID及对应的用户ID、用户角色、应用、 权限信息; 用户通过登陆接口登陆平台认证服务器时,平台认证服务器获取用户ID、密码和 用户类别并验证密码,若验证通过,根据用户ID和所属的租户ID、token过期时间、用户类别 对应的密钥,生成token和refresh  token;并根据用户ID和租户ID查询所述用户权限表获 取用户对应的角色集合和权限信息,将用户的角色集合、权限信息和token、用户类别拼装 成JSON字符串返回给客户端; 用户通过请求接口发起获取资源服务的用户请求时,用户请求中携带用户类别和 token,平台网关服务器获取用户请求中的用户类别和token,通过用户类别对token进行解 密操作,如果解密成功则返回用户ID及租户ID,通过解析出的用户ID及租户ID查询用户权 限表,根据对应的权限信息调用本地缓存中的资源服务。 在上述技术方案的基础上,所述权限信息包括资源名称、资源编码、接口URL的集 合。 在上述技术方案的基础上,根据用户ID和所属的租户ID、token过期时间、用户类 别对应的密钥,生成token和refresh  token,具体包括以下步骤: 将用户ID和所属的租户ID、token过期时间组拼成JSON,维护配置列表用于存储用 4 CN 111586030 A 说 明 书 2/7 页 户类别与对应的密钥;通过获取登陆接口定义的用户类别获取对应的密钥,采用获取的密 钥对拼装的JSON字符串做DES加密,生成token和refreshToken,token用于登陆验证, refresh  Token用于重新获取token。 在上述技术方案的基础上,通过解析出的用户ID及租户ID查询用户权限表,根据 对应的权限信息调用本地缓存中的资源服务,具体包括以下步骤: 通过解析出的用户ID及租户ID,调用本地缓存中的资源服务,获取响应的权限服 务,如果缓存中没有,调用用户权限表获取该用户的所有的角色集合和权限信息,获取后返 回并放入缓存; 获取当前的用户请求URL和请求方式,与获取的缓存中的权限信息进行匹配;如果 匹配成功,则该用户请求具有该接口的访问权限,反之,直接返回错误信息给客户端; 权限验证通过后,获取用户请求中的参数信息,将参数信息加入租户ID并重新组 装加入用户请求中。 在上述技术方案的基础上,所述方法还包括以下步骤: 第三方应用需登陆平台认证服务器时,通过DES进行加密生成相应的token; 第三方应用需访问平台网关服务器获取资源时,将生成的token以及用户类别发 送至平台认证服务器进行保存,并设置第三方用户权限表,第三方用户权限表用于存储租 户ID及对应的第三方平台类型、用户角色和权限信息。 本发明还提供一种基于微服务多租户的接口鉴权、权限验证系统,包括: 权限服务模块,其用于:维护用户权限表,用户权限表用于存储租户ID及对应的用 户ID、用户角色、应用、权限信息; 平台认证服务器,其用于:用户通过登陆接口登陆平台认证服务器时,获取用户 ID、密码和用户类别并验证密码,若验证通过,根据用户ID和所属的租户ID、token过期时 间、用户类别对应的密钥,生成token和refresh  token;并根据用户ID和租户ID查询所述用 户权限表获取用户对应的角色集合和权限信息,将用户的角色集合、权限信息和token、用 户类别拼装成JSON字符串返回给客户端; 平台网关服务器,其用于:用户通过请求接口发起获取资源服务的用户请求时,获 取用户请求中的用户类别和token,通过用户类别对token进行解密操作,如果解密成功则 返回用户ID及租户ID,通过解析出的用户ID及租户ID查询用户权限表,根据对应的权限信 息调用本地缓存中的资源服务。 在上述技术方案的基础上,所述权限信息包括资源名称、资源编码、接口URL的集 合。 在上述技术方案的基础上,所述平台认证服务器根据用户ID和所属的租户ID、 token过期时间、用户类别对应的密钥,生成token和refresh  token,具体包括以下步骤: 将用户ID和所属的租户ID、token过期时间组拼成JSON,维护配置列表用于存储用 户类别与对应的密钥;通过获取登陆接口定义的用户类别获取对应的密钥,采用获取的密 钥对拼装的JSON字符串做DES加密,生成token和refreshToken,token用于登陆验证, refresh  Token用于重新获取token。 在上述技术方案的基础上,所述平台网关服务器通过解析出的用户ID及租户ID查 询用户权限表,根据对应的权限信息调用本地缓存中的资源服务,具体包括以下步骤: 5 CN 111586030 A 说 明 书 3/7 页 通过解析出的用户ID及租户ID,调用本地缓存中的资源服务,获取响应的权限服 务,如果缓存中没有,调用用户权限表获取该用户的所有的角色集合和权限信息,获取后返 回并放入缓存; 获取当前的用户请求URL和请求方式,与获取的缓存中的权限信息进行匹配;如果 匹配成功,则该用户请求具有该接口的访问权限,反之,直接返回错误信息给客户端; 权限验证通过后,获取用户请求中的参数信息,将参数信息加入租户ID并重新组 装加入用户请求中。 在上述技术方案的基础上,所述所述平台认证服务器还用于:第三方应用需登陆 平台认证服务器时,通过DES进行加密生成相应的token; 所述权限服务模块还用于:维护第三方应用权限表,第三方应用权限表用于存储 租户ID及对应的第三方应用类别、用户ID、用户角色和权限信息; 所述平台网关服务器还其用于:第三方应用通过请求接口发起获取资源服务的用 户请求时,获取用户请求中的第三方应用类别和token,通过用户类别对token进行解密操 作,如果解密成功则返回租户ID,通过解析出的租户ID查询第三方应用权限表,根据对应的 权限信息调用本地缓存中的资源服务。 本发明提供的技术方案带来的有益效果包括: 本发明可供不同的终端以及不同的应用进行调用提高了接口的维护性,只需维护 接口版本等即可,同时方便终端业务的集成式开发,无需关注后台开发,只需要对前端做相 应的开发即可,可适用于前端后端分离的开发模式。同时,本发明采用无状态登陆方式验 证,天然支持单点登陆,方便子系统的相互集成,而且没有单点登陆瓶颈;然而在性能方面, 权限认证进行抽离通过网关进行独立部署运行结合分布式缓存,无需频繁关注数据库的交 互的性能瓶颈,大大提高资源访问的安全及性能。 附图说明 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发 明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根 据这些附图获得其他的附图。 图1是本发明实施例的基于微服务多租户的接口鉴权、权限验证方法的流程示意 图; 图2是本发明实施例的基于微服务多租户的接口鉴权、权限验证方法的平台认证 服务的流程示意图; 图3是本发明实施例的基于微服务多租户的接口鉴权、权限验证方法的接口权限 设置的示意图; 图4是本发明实施例的基于微服务多租户的接口鉴权、权限验证方法的平台本地 用户的平台网关服务的流程示意图; 图5是本发明实施例的基于微服务多租户的接口鉴权、权限验证方法的第三方应 用的平台网关服务的流程示意图。 6 CN 111586030 A 说 明 书 4/7 页
分享到:
收藏