多租户用户访问控制系统及方法技术方案

技术编号:33288224 阅读:19 留言:0更新日期:2022-05-01 00:00
本发明专利技术公开了多租户用户访问控制系统及方法,属于web技术领域,本发明专利技术要解决的技术问题为如何实现各应用系统之间的租户隔离以及租户用户访问权限控制,保障各应用系统的安全性,采用的技术方案为:该系统包括租户管理模块、多应用系统和用户鉴权模块,租户管理模块与多应用系统之间采用独立的数据库;多应用系统之间能够实现单点登录,且各应用系统具有唯一应用标识;其中,租户管理模块用于多应用系统的租户管理;多应用系统的租户管理包括租户的创建以及租户的应用访问授权;多应用系统用于为租户用户提供服务;用户鉴权模块用于嵌入各应用系统,采用Keycloak实现对不同租户的数据隔离以及对不同用户的权限控制。本发明专利技术还公开了多租户用户访问控制方法。开了多租户用户访问控制方法。开了多租户用户访问控制方法。

【技术实现步骤摘要】
多租户用户访问控制系统及方法


[0001]本专利技术涉及Web应用
,具体地说是一种多租户用户访问控制系统及方法。

技术介绍

[0002]随着互联网技术的飞速发展,越来越多的应用软件厂商提供SaaS服务。目前安全问题层出不穷,且随着大家安全意识的增强,人们对应用系统的安全性要求越来越高。多租户技术是一种实现租户隔离,提高应用系统安全性的措施。通常多租户的实现方式包括在应用系统数据表中增加租户属性字段或者为不同租户部署不同的应用系统等。前者对应用系统侵入性较高,且由于共享数据库资源,对于高数据库资源占用型的应用系统,租户之间的性能会受到相互影响。对于为不同租户部署单独应用系统的实现方式具有较高的成本。
[0003]故如何实现各应用系统之间的租户隔离以及租户用户访问权限控制,保障各应用系统的安全性是目前亟待解决的技术问题。

技术实现思路

[0004]本专利技术的技术任务是提供一种多租户用户访问控制系统及方法,来解决如何实现各应用系统之间的租户隔离以及租户用户访问权限控制,保障各应用系统的安全性的问题。
[0005]本专利技术的技术任务是按以下方式实现的,一种多租户用户访问控制系统,该系统包括租户管理模块、多应用系统和用户鉴权模块,租户管理模块与多应用系统之间采用独立的数据库;多应用系统之间能够实现单点登录,且各应用系统具有唯一应用标识;
[0006]其中,租户管理模块用于多应用系统的租户管理;多应用系统的租户管理包括租户的创建以及租户的应用访问授权;
[0007]多应用系统用于为租户用户提供服务;
[0008]用户鉴权模块用于嵌入各应用系统,采用Keycloak实现对不同租户的数据隔离以及对不同用户的权限控制。
[0009]作为优选,所述租户管理模块创建租户时,在Keycloak的用户属性中添加authorizedApps、tenantCode、tenantId、expiredTime及userType,authorizedApps、tenantCode、tenantId、expiredTime及userType分别表示租户授权访问的应用系统、租户标识、租户唯一ID、租户到期时间及用户类型;
[0010]其中,tenantCode为8位唯一随机字符串;tenantId为36为UUID;expiredTime为租户允许访问应用的到期时间;userType为用户类型,对于租户其取值为tenant,对于租户下的用户其取值为user。
[0011]更优地,所述租户管理模块在创建用户时根据其授权访问的应用系统分别为租户创建各应用系统的应用数据库以及租户用户数据库,并初始化应用配置信息和租户配置信息;租户授权访问的多应用系统共享一个租户用户数据库;
[0012]应用配置信息包括应用字典配置、应用菜单权限及应用接口权限;
[0013]租户配置信息包括租户默认角色;租户默认角色包括各应用系统的管理员角色,各应用系统的管理角色具有对应应用系统的所有菜单和接口权限;
[0014]租户用户数据库用于保存租户用户以及各应用系统的资源访问控制配置信息,保存租户用户以及各应用系统的资源访问控制配置信息包括应用菜单权限、应用接口权限、角色、角色和权限对应关系以及用户和角色对应关系;
[0015]其中,各租户应用系统的应用数据库各应用系统的应用数据库名是由应用标识和tenantCode两部分组成,应用标识和tenantCode之间通过下划线分割;
[0016]租户用户数据库名是由固定标识user和tenantCodde两部分组成,固定标识user和tenantCodde之间通过下划线分割。
[0017]更优地,各应用系统具有租户访问控制过滤器,租户访问控制过滤器用于租户用户访问各应用系统时,切换到该用户对应的租户应用数据库以及用户对应租户的用户数据库及对租户访问鉴权;
[0018]租户访问控制过滤器利用Spring的Filter实现,具体如下:
[0019](1)、租户访问控制过滤器从用户请求的Authorization请求头获取用户登录Token;
[0020](2)、解析Token中的authorizedApps属性;
[0021](3)、判断该属性中是否包含当前应用标识:
[0022]①
、若无,则禁止用户访问;
[0023]②
、若有,则执行步骤(4);
[0024](4)、检查token中的expiredTime属性是否位于当前时间之后:
[0025]①
、若否,则拒绝访问;
[0026]②
、若是,则执行步骤(5);
[0027](5)、判断当前请求路径是否包含sys前缀:
[0028]①
、若是,则将数据源切换为租户用户数据库;
[0029]②
、若否,则将数据源切换为租户应用数据库。
[0030]更优地,各应用系统在创建用户时,从token中获取authorizedApps、tenantCode、tenantId、expiredTime及userType属性:
[0031]若userType为user,则创建用户的tenantId设置为token中的tenantId;
[0032]若userType为tenant,则创建用户的tenantId设置为当前登录用户的ID;
[0033]当前创建用户的userType设置为user,用户属性authorizedApps、tenantCode、tenantId及expiredTime和token中的相应解析值保持一致。
[0034]更优地,各应用系统采用前端页面和应用后端分离的架构;用户访问前端页面时,前端页面调用应用后端接口获取用户当前应用的菜单和接口授权权限,并保存在全局变量中;
[0035]前端页面包括路由控制,用户请求任一个菜单路径时,先检查前端全局变量中用户授权菜单中是否包含当前访问路径:
[0036]若是,则允许访问;
[0037]若否,则跳转到默认禁止访问页面;
[0038]接口授权权限利用SpringSecurity实现,在所有Controller上添加PreAuthorize
注解,通过注解中的Spel表达式调用自定义接口权限校验方法,接口权限校验方法参数为该接口对应的接口权限标识。
[0039]一种多租户用户访问控制方法,该方法具体如下:
[0040]S1、创建租户:指定租户授权访问的应用以及授权到期时间;
[0041]S2、对每一个租户创建用户;
[0042]S3、前端页面加载初始化以及前端路由控制;
[0043]S4、执行租户访问控制过滤器:
[0044]作为优选,所述步骤S1中的创建租户具体如下:
[0045]S101、为租户生成一个8为唯一的tenantCode,即租户编码,在创建租户应用数据库和用户数据本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种多租户用户访问控制系统,其特征在于,该系统包括租户管理模块、多应用系统和用户鉴权模块,租户管理模块与多应用系统之间采用独立的数据库;多应用系统之间能够实现单点登录,且各应用系统具有唯一应用标识;其中,租户管理模块用于多应用系统的租户管理;多应用系统的租户管理包括租户的创建以及租户的应用访问授权;多应用系统用于为租户用户提供服务;用户鉴权模块用于嵌入各应用系统,采用Keycloak实现对不同租户的数据隔离以及对不同用户的权限控制。2.根据权利要求1所述的多租户用户访问控制系统,其特征在于,所述租户管理模块创建租户时,在Keycloak的用户属性中添加authorizedApps、tenantCode、tenantId、expiredTime及userType,authorizedApps、tenantCode、tenantId、expiredTime及userType分别表示租户授权访问的应用系统、租户标识、租户唯一ID、租户到期时间及用户类型;其中,tenantCode为8位唯一随机字符串;tenantId为36为UUID;expiredTime为租户允许访问应用的到期时间;userType为用户类型,对于租户其取值为tenant,对于租户下的用户其取值为user。3.根据权利要求1或2所述的多租户用户访问控制系统,其特征在于,所述租户管理模块在创建用户时根据其授权访问的应用系统分别为租户创建各应用系统的应用数据库以及租户用户数据库,并初始化应用配置信息和租户配置信息;租户授权访问的多应用系统共享一个租户用户数据库;应用配置信息包括应用字典配置、应用菜单权限及应用接口权限;租户配置信息包括租户默认角色;租户默认角色包括各应用系统的管理员角色,各应用系统的管理角色具有对应应用系统的所有菜单和接口权限;租户用户数据库用于保存租户用户以及各应用系统的资源访问控制配置信息,保存租户用户以及各应用系统的资源访问控制配置信息包括应用菜单权限、应用接口权限、角色、角色和权限对应关系以及用户和角色对应关系;其中,各租户应用系统的应用数据库各应用系统的应用数据库名是由应用标识和tenantCode两部分组成,应用标识和tenantCode之间通过下划线分割;租户用户数据库名是由固定标识user和tenantCodde两部分组成,固定标识user和tenantCodde之间通过下划线分割。4.根据权利要求3所述的多租户用户访问控制系统,其特征在于,各应用系统具有租户访问控制过滤器,租户访问控制过滤器用于租户用户访问各应用系统时,切换到该用户对应的租户应用数据库以及用户对应租户的用户数据库及对租户访问鉴权;租户访问控制过滤器利用Spring的Filter实现,具体如下:(1)、租户访问控制过滤器从用户请求的Authorization请求头获取用户登录Token;(2)、解析Token中的authorizedApps属性;(3)、判断该属性中是否包含当前应用标识:

、若无,则禁止用户访问;

、若有,则执行步骤(4);
(4)、检查token中的expiredTime属性是否位于当前时间之后:

、若否,则拒绝访问;

、若是,则执行步骤(5);(5)、判断当前请求路径是否包含sys前缀:

、若是,则将数据源切换为租户用户数据库;

、若否,则将数据源切换为租户应用数据库。5.根据权利要求4所述的多租户用户访问控制系统,其特征在于,各应用系统在创建用户时,从token中获取authorizedApps、tenantCode、tenantId、expiredTime及userType属性:若userType为user,则创建用户的tenantId设置为token中的tenantId;若userType为tenant,则创建用户的tenantId设置为当前登录用户的ID;当前创建用户的userType设置为user,用户属性authorizedApps、tenantCode、tenantId及expiredTime和token中的相应解析值保持一致。6.根据权利要求5所述的多租户用户访问控制系统,其特征在于,各应用系统采用前端页面和应用后端分离的架构;用户访问前端页面时,前端页面调用应用后端接口获取用户当前应用的菜单和接口授权权限,并保存在全局变量中;前端页面包括路由控制,用户请求任一个菜单路径时,先检查前端全局变量中用户授权菜单中是否包含当前访问路径:若是,则允许访问;若否,则跳转到默认禁止访问页面;接口授权权限利用SpringSecurity实现,在所有Controller上添加PreAuthorize注解,通过注解中的Spel...

【专利技术属性】
技术研发人员:孙光涛陈尧张永皋
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1