一种微服务下多租户高效切换访问和鉴权的方法与流程

文档序号:36240765发布日期:2023-12-02 01:07阅读:62来源:国知局
一种微服务下多租户高效切换访问和鉴权的方法与流程

本发明中涉及计算机技术,特别涉及一种微服务下多租户高效切换访问和鉴权的方法。


背景技术:

1、传统多租户场景大多解决方案为两种形式:

2、其一,用户在登录前选择此次需要登录的租户,登录成功则确定了此时访问的租户,如果需要更换访问其他租户,就不得不先退出后再选择租户重新登录。此方式流程繁琐,不利于用户交互和体验;

3、其二,用户在登录前选择或者登录后选择一个租户,此时后端将选择的租户持久化数据库等存储中或仅保存在此次登录人信息中,后续请求就只能访问选择的租户信息,若需要切换租户,则需要前端调用专门的切换租户的接口,此时后端会更改持久化的租户相关信息或者重新修改此次登录信息。此方式仍需额外调用接口,且有可能因网络问题等原因,接口返回切换未成功,实际上后端已经切换完毕而造成的前后端不一致的问题。

4、而且传统单体应用架构方式开发多租户模式项目,代码臃肿,不便于维护,扩展性差,无法满足快速扩容,弹性伸缩,无法适应租户规模较大场景下的需求,故较大规模的多租户常选用微服务形式开发。然而微服务下用户和权限信息获取效率低,鉴权分散耦合性高,并发能力有限。

5、因此提出一种微服务下多租户高效切换访问和鉴权的方法以改善上述问题。


技术实现思路

1、本申请的目的在于提供一种微服务下多租户高效切换访问和鉴权的方法,以解决上述背景技术中提出的问题。

2、为实现上述目的,本申请提供如下技术方案:一种微服务下多租户高效切换访问和鉴权的方法,包括以下步骤:

3、s1、前端登录成功后,认证服务校验成功返回合法的访问token,并缓存相关信息;

4、s2、用户访问租户列表,获取能访问的所有租户,以此选择此次访问需要的租户信息;

5、s3、将选择的租户id传递到后端;

6、s4、请求到达网关后,网关查询是否有此token的缓存,包括:

7、有此token的缓存:取出用户信息;

8、无此token的缓存:直接返回前端重新登录;

9、s5、获取到用户信息后,网关查询是否有此用户权限信息的缓存,包括:

10、有此用户权限信息的缓存:取出权限信息进入s7校验环节;

11、无此用户权限信息的缓存:进入s6查询权限信息;

12、s6、网关根据用户信息、租户id,调用权限服务查询出当前权限信息,同时缓存到redis集群中;

13、s7、网关根据用户权限信息,判断用户是否有权调用此次直接目的url接口:

14、鉴权不通过,则返回前端重新登录;

15、鉴权通过,则将用户的token,并随着目的url通过路由转发给相关的业务服务;

16、s8、下一节点的服务在接收到请求后,根据需要从缓存中取出用户信息使用;因为url鉴权已由网关统一处理,本节点业务服务非必要情况无需在校验权限信息。

17、优选地,所述s2中,可以使用单独接口获取租户信息列表。

18、优选地,所述s3中,租户id将通过header形式传递到后端。

19、优选地,所述s3中,租户id也可以通过url形式或者请求参数传递到后端。

20、优选地,所述url形式包括url路径和url参数。

21、优选地,所述s4中,缓存有效期可为token有效时长;如根据需要不查询缓存时,则直接查询认证服务。

22、优选地,所述s5中,缓存存储结构可以使用hash结构,此时key为用户id,filed为租户id,vlaue为权限信息。

23、优选地,所述s7中,使用的url校验方式为优化的hash和url匹配相结合的方式:网关拿到权限信息后会进行hash处理,形成一个hashmap表,然后才会存入redis集群,此时在匹配之前会先取目标url在hashmap表中查找,找到直接判断是否相等,相等则直接通过校验;不等或者未查找到则在进入url匹配。借此可极大提升匹配速度。

24、综上,本发明的技术效果和优点:

25、通过这一方式,不需要在登录时固定死登录所选租户的权限信息,解决了切换租户时需要重新登录或主动刷新结合缓存的繁琐问题;同时也避免了网络问题造成注销或刷新失败而出现的页面和后端实际操作租户不一致的问题,用户可以随时自由流畅的切换自己所属的租户,甚至在每次请求都可请求不同租户下数据。

26、考虑到微服务本身的特点,在适当的位置加入缓存机制避免多次耗时请求,同时优化缓存存储结构提高读取速度;加上优化了url匹配方式,大幅提高鉴权时url的匹配用时,既降低了系统的复杂性,又提高了鉴权的效率,同时借助于微服务的优势以及优化后的鉴权方式,系统并发量也将得到极大的提升,为大规模saas化应用提供很好的基础。



技术特征:

1.一种微服务下多租户高效切换访问和鉴权的方法,其特征在于包括以下步骤:

2.根据权利要求1所述的一种微服务下多租户高效切换访问和鉴权的方法,其特征在于:所述s3中,租户id可选择通过请求头或请求路径或请求参数形式传递到后端。

3.根据权利要求1所述的一种微服务下多租户高效切换访问和鉴权的方法,其特征在于:所述s4中,可根据需要选择不使用缓存而直接访问认证服务校验token,获取用户信息。

4.根据权利要求1所述的一种微服务下多租户高效切换访问和鉴权的方法,其特征在于:所述s5中,可根据需要选择不使用缓存,直接进入s6调用权限服务获取权限信息。

5.根据权利要求1所述的一种微服务下多租户高效切换访问和鉴权的方法,其特征在于:所述s5中,存储redis缓存的数据结构可以是多种形式。

6.根据权利要求1所述的一种微服务下多租户高效切换访问和鉴权的方法,其特征在于:所述s7中,不限于优化的url校验匹配方式。

7.根据权利要求1所述的一种微服务下多租户高效切换访问和鉴权的方法,其特征在于:所述认证服务和权限服务不限于为独立服务。


技术总结
本发明公开了一种微服务下多租户高效切换访问和鉴权的方法,涉及到计算机技术领域,客户在前端登录成功后,认证服务会将token和对应的用户信息存储在redis集群中,当前端访问接口获取数据时,会传递租户id和认证token等信息到后端,网关接收到请求后,先查询redis集群是否存在当前token以及对应的用户信息,查询不到则返回需要重新登录,查询到则动态的根据租户id和用户id继续查询缓存是否存在权限信息,若不存在则调用权限服务获取此租户下权限信息,有缓存或获取到权限信息则进入url统一鉴权。通过这一方式,解决了切换租户时需要重新登录或主动刷新结合缓存的繁琐,加上优化了url匹配和缓存,既减少了系统的复杂性,又提高了鉴权的效率。

技术研发人员:何瑞全
受保护的技术使用者:徐州市企业信用科技有限公司
技术研发日:
技术公布日:2024/1/16
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1