CN111314491B - 跨租户数据交互方法、装置、服务器集群及介质 - Google Patents
跨租户数据交互方法、装置、服务器集群及介质 Download PDFInfo
- Publication number
- CN111314491B CN111314491B CN202010232158.7A CN202010232158A CN111314491B CN 111314491 B CN111314491 B CN 111314491B CN 202010232158 A CN202010232158 A CN 202010232158A CN 111314491 B CN111314491 B CN 111314491B
- Authority
- CN
- China
- Prior art keywords
- token
- called system
- request
- tenant
- domain name
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4505—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
- H04L61/4511—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种跨租户数据交互方法、装置、服务器集群及介质,所述方法包括:中央API交互服务接收调用方系统发送的第一请求;中央API交互服务解析第一请求,得到租户ID、被调用系统ID和第一请求参数,并根据租户ID和被调用系统ID获取被调用系统的域名和token;中央API交互服务根据被调用系统的域名和token以及所述第一请求参数构造第二请求,并向被调用系统发送第二请求;在被调用系统对第二请求解析得到的token验证通过,并根据第一请求参数返回第一响应数据后,接收被调用系统返回的第一响应数据,并将第一响应数据转发至调用方系统。本发明具有实现多租户多系统之间统一的接口交互的效果。
Description
技术领域
本发明涉及SAAS服务技术领域,尤其是涉及一种跨租户数据交互方法、装置、服务器集群及介质。
背景技术
租户根据业务需求,租赁包含满足业务需求的功能点的应用,组合各个应用的功能点新建成一个应用系统,称为业务系统。随着办公自动化、标准化、网络化的渐趋完善,越来越多的租户使用不止一套业务系统,基于租户的数据安全及行业要求,部分业务系统的部署必须采用独占模式,使用独立域名和服务器资源;而基于成本和扩展的考虑,一部分业务系统会采用SAAS化模式进行部署,与其他租户共享域名和服务器资源,仅在数据层面使用独立数据源或独立Schema分隔租户数据。不同模式的业务系统之间如何进行跨租户安全的接口及数据交互,成为亟待解决的问题。
现有的解决方案都是解决服务之间,每个服务只存在于单一服务集群资源之中,或两个服务同处于某个集群资源内的接口调用,如Dubbo、Spring Cloud、Web Service等,服务集群中多个服务之间实现负载均衡的远程接口调用,每个业务系统独立提供一套访问其他业务系统的API接口,但是,无法解决某一个服务部署在多个相互独立的服务资源下,另一个服务对该服务的统一的跨租户接口调用。
发明内容
本发明目的一是提供跨租户数据交互方法,可以实现多租户多系统之间统一的接口交互。
本发明的上述发明目的一是通过以下技术方案得以实现的:
一种跨租户数据交互方法,应用于SAAS服务器集群,包括:
中央API交互服务接收调用方系统发送的第一请求;
所述中央API交互服务解析所述第一请求,得到租户ID、被调用系统ID和第一请求参数,并根据所述租户ID和所述被调用系统ID获取被调用系统的域名和token;
所述中央API交互服务根据所述被调用系统的域名和token以及所述第一请求参数构造第二请求,并向所述被调用系统发送所述第二请求;
在所述被调用系统对所述第二请求解析得到的token验证通过,并根据所述第一请求参数返回第一响应数据后,所述中央API交互服务接收所述被调用系统返回的第一响应数据,并将所述第一响应数据转发至所述调用方系统。
通过采用上述技术方案,将不同系统不同租户的数据交互集中在一个中央API交互服务处理及维护,实现多租户统一的接口调用,实现独占系统与SAAS系统的多租户数据交互,进而提高租户部署模式的灵活性及扩展性,节省租户的部署及维护成本,支持新系统的无缝接入和已有系统之间的数据交互,为后续的租户选择、切换系统及其部署方式提供极大的便利。
本发明在一较佳示例中可以进一步配置为:所述根据租户ID和被调用系统ID获取被调用系统的域名和token,包括:
所述中央API交互服务查询缓存中是否存在所述被调用系统的域名和token,若是则获取缓存中的被调用系统的域名和token,否则调用全局租户配置系统,获取所述被调用系统的域名和token。
通过采用上述技术方案,在获取租户ID和被调用系统ID之后,需先查询缓存中是否有被调用系统的域名和token,若有则直接获取,否则调用全局租户配置系统进行获取,可以节省整个数据交互的时间,提高数据交互效率。
本发明在一较佳示例中可以进一步配置为:所述调用全局租户配置系统,获取被调用系统的域名和token,包括:
所述中央API交互服务向所述全局租户配置系统发送携带所述租户ID和所述被调用系统ID的第三请求;
所述全局租户配置系统解析所述第三请求,获取所述租户ID和所述被调用系统ID,并根据所述租户ID和所述被调用系统ID从持久化数据库中查询所述被调用系统的域名和公钥;
所述全局租户配置系统利用所述公钥加密第二请求参数,得到加密字符串,其中,所述第二请求参数包括所述租户ID和所述被调用系统ID;
所述全局租户配置系统向所述被调用系统发送携带所述加密字符串和所述第二请求参数的第四请求;
在所述被调用系统利用私钥对所述加密字符串解密并验证通过,生成具有第一有效期的token,并利用所述私钥对所述token加密后,所述全局租户配置系统接收所述被调用系统发送的加密后的token,并利用所述公钥对加密后的token解密,得到所述token;
所述全局租户配置系统将携带所述token和所述被调用系统的域名的第二响应数据返回给所述中央API交互服务;
所述中央API交互服务接收所述第二响应数据并获取所述被调用系统的域名和token。
通过采用上述技术方案,基于全局配置的接口交互模块,由全局租户配置系统负责配置各租户各系统的访问域名及公钥,中央API交互服务通过全局租户配置系统获取租户被调用系统的访问域名及访问token,并向被调用系统发起访问请求,获取响应数据,实现多租户统一、安全的接口调用。
本发明在一较佳示例中可以进一步配置为:在所述调用全局租户配置系统,获取被调用系统的域名和token之后,还包括:
所述中央API交互服务缓存所述被调用系统的域名和token,并为缓存的token设置第二有效期,所述第二有效期不大于所述第一有效期。
通过采用上述技术方案,动态的切换目的接口请求的域名和token,安全获取所需数据,返回给调用方系统。
本发明在一较佳示例中可以进一步配置为:在所述中央API交互服务解析所述第一请求之后,还包括:
中央API交互服务校验所述第一请求是否包含所述租户ID和所述被调用系统ID,若校验成功,则根据所述租户ID和所述被调用系统ID获取所述被调用系统的域名和token;若校验失败,则向所述调用方系统返回异常响应信息。
通过采用上述技术方案,在接收调用方系统发来的第一请求后,对请求进行校验,若不包含租户ID和被调用系统ID则直接返回异常信息,不进行后续进程。
本发明目的二是提供一种跨租户数据交互装置,可以实现多租户多系统之间统一的接口交互。
本发明的上述发明目的二是通过以下技术方案得以实现的:
一种跨租户数据交互装置,应用于SAAS服务器集群,包括:
第一接收模块,用于中央API交互服务接收调用方系统发送的第一请求;
第一获取模块,用于所述中央API交互服务解析所述第一请求,得到租户ID、被调用系统ID和第一请求参数,并根据所述租户ID和所述被调用系统ID获取被调用系统的域名和token;
第一请求模块,用于所述中央API交互服务根据所述被调用系统的域名和token以及所述第一请求参数构造第二请求,并向所述被调用系统发送所述第二请求;
第二接收模块,用于在所述被调用系统对所述第二请求解析得到的token验证通过,并根据所述第一请求参数返回第一响应数据后,所述中央API交互服务接收所述被调用系统返回的第一响应数据;以及
第一响应模块,用于所述中央API交互服务将所述第一响应数据转发至所述调用方系统。
通过采用上述技术方案,将不同系统不同租户的数据交互集中在一个中央API交互服务处理及维护,实现多租户统一的接口调用,实现独占系统与SAAS系统的多租户数据交互,进而提高租户部署模式的灵活性及扩展性,节省租户的部署及维护成本,支持新系统的无缝接入和已有系统之间的数据交互,为后续的租户选择、切换系统及其部署方式提供极大的便利。
本发明在一较佳示例中可以进一步配置为:所述第一获取模块,具体用于所述中央API交互服务查询缓存中是否存在所述被调用系统的域名和token,若是则获取缓存中的被调用系统的域名和token,否则调用全局租户配置系统,获取所述被调用系统的域名和token。
通过采用上述技术方案,在获取租户ID和被调用系统ID之后,需先查询缓存中是否有被调用系统的域名和token,若有则直接获取,否则调用全局租户配置系统进行获取,可以节省整个数据交互的时间,提高数据交互效率。
本发明在一较佳示例中可以进一步配置为:所述第一获取模块包括:
第二请求模块,用于所述中央API交互服务向所述全局租户配置系统发送携带所述租户ID和所述被调用系统ID的第三请求;
第二获取模块,用于所述全局租户配置系统解析所述第三请求,获取所述租户ID和所述被调用系统ID;
查询模块,用于所述全局租户配置系统根据所述租户ID和所述被调用系统ID从持久化数据库中查询所述被调用系统的域名和公钥;
公钥加密模块,用于所述全局租户配置系统利用所述公钥加密第二请求参数,得到加密字符串,其中,所述第二请求参数包括所述租户ID和所述被调用系统ID;
第三请求模块,用于所述全局租户配置系统根据所述被调用系统的域名向所述被调用系统发送携带所述加密字符串和所述第二请求参数的第四请求;
私钥解密模块,用于在所述被调用系统利用私钥对所述加密字符串解密并验证通过,生成具有第一有效期的token,并利用所述私钥对所述token加密后,所述全局租户配置系统接收所述被调用系统发送的加密后的token,并利用所述公钥对加密后的token解密,得到所述token;
第二响应模块,用于所述全局租户配置系统将携带所述token和所述被调用系统的域名的第二响应数据返回给所述中央API交互服务;以及
第二接收模块,用于所述中央API交互服务接收所述第二响应数据并获取所述被调用系统的域名和token。
通过采用上述技术方案,基于全局配置的接口交互模块,由全局租户配置系统负责配置各租户各系统的访问域名及公钥,中央API交互服务通过全局租户配置系统获取租户被调用系统的访问域名及访问token,并向被调用系统发起访问请求,获取响应数据,实现多租户统一、安全的接口调用。
本发明目的三是提供一种SAAS服务器集群,可以实现多租户多系统之间统一的接口交互。
本发明的上述发明目的三是通过以下技术方案得以实现的:
一种SAAS服务器集群,包括多个服务器,所述服务器包括存储器和处理器,所述存储器上存储有能够被所述处理器加载并执行如上述任一种跨租户数据交互方法的计算机程序。
通过采用上述技术方案,将不同系统不同租户的数据交互集中在一个中央API交互服务处理及维护,实现多租户统一的接口调用,实现独占系统与SAAS系统的多租户数据交互,进而提高租户部署模式的灵活性及扩展性,节省租户的部署及维护成本,支持新系统的无缝接入和已有系统之间的数据交互,为后续的租户选择、切换系统及其部署方式提供极大的便利。
本发明目的四是提供一种计算机存储介质,能够存储相应的程序,具有便于实现多租户多系统之间统一的接口交互的特点。
本发明的上述发明目的四是通过以下技术方案得以实现的:
一种计算机可读存储介质,存储有能够被处理器加载并执行上述任一种跨租户数据交互方法的计算机程序。
通过采用上述技术方案,便于将不同系统不同租户的数据交互集中在一个中央API交互服务处理及维护,实现多租户统一的接口调用,实现独占系统与SAAS系统的多租户数据交互,进而提高租户部署模式的灵活性及扩展性,节省租户的部署及维护成本,支持新系统的无缝接入和已有系统之间的数据交互,为后续的租户选择、切换系统及其部署方式提供极大的便利。
综上所述,本发明包括以下至少一种有益技术效果:
1.将不同系统不同租户的数据交互集中在一个中央API交互服务处理及维护,实现多租户统一的接口调用,实现独占系统与SAAS系统的多租户数据交互,进而提高租户部署模式的灵活性及扩展性,节省租户的部署及维护成本,支持新系统的无缝接入和已有系统之间的数据交互,为后续的租户选择、切换系统及其部署方式提供极大的便利;
2.在获取租户ID和被调用系统ID之后,需先查询缓存中是否有被调用系统的域名和token,若有则直接获取,否则调用全局租户配置系统进行获取,可以节省整个数据交互的时间,提高数据交互效率;
3.基于全局配置的接口交互模块,由全局租户配置系统负责配置各租户各系统的访问域名及公钥,中央API交互服务通过全局租户配置系统获取租户被调用系统的访问域名及访问token,并向被调用系统发起访问请求,获取响应数据,实现多租户统一、安全的接口调用。
附图说明
图1是本发明实施例一的流程示意图。
图2是本发明实施例一中步骤S200的流程示意图。
图3是本发明实施例一中步骤S230的流程示意图。
图4是同一租户不同系统间数据交互的流程示意图。
图5是中央API交互服务的结构框图。
图6是中央API交互服务代理调用的流程示意图。
图7是全局租户配置系统向业务系统获取token的流程示意图。
图8是互联网医院系统访问医院HIS系统的示意图。
图9是本发明实施例二的结构框图。
图10是本发明实施例二的第一获取模块的结构框图。
图11是本发明实施例的服务器的结构框图。
图中,500、第一接收模块,600、第一获取模块,610、第二请求模块,620、第二获取模块,630、查询模块,640、公钥加密模块,650、第三请求模块,660、私钥解密模块,670、第二响应模块,680、第二接收模块,700、第一请求模块,800、第二接收模块,900、第一响应模块,1000、缓存模块。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
另外,在本发明实施例的描述中,需要理解的是,术语“第一”、“第二”、“第三”、“第四”等仅用于描述目的,而不能理解为指示或暗示相对重要性。
实施例一:
本发明实施例提供一种跨租户数据交互方法,如图1所示,所述方法的主要流程描述如下:
步骤S100,中央API交互服务接收调用方系统发送的第一请求;
步骤S200,中央API交互服务解析第一请求,得到租户ID、被调用系统ID和第一请求参数,并根据租户ID和被调用系统ID获取被调用系统的域名和token;
本实施例中,每个租户都有一个唯一的ID标识,有了租户id标识,SAAS系统也就可以自动路由到对应租户的数据库去操作业务;每个业务系统(不论是独占模式还是SAAS共享模式)也均有一个唯一的ID标识。根据这两个ID标识,中央API交互服务可以获取到被调用系统的域名和token。
调用方系统与被调用系统是同一租户在不同服务器资源下的业务系统。被调用系统具有多个接口,每个接口都有各自定义的请求参数。通过第一请求参数,调用方系统就可以调用第一请求参数对应的接口在被调用系统中获取到所需要的数据。具体的,第一请求参数包含被调用接口的请求路径、请求方法、请求头、请求体等信息。
本实施例中,中央API交互服务在接收到第一请求后,通过前置信息验证拦截器校验第一请求是否包含租户ID和被调用系统ID,若不包含则校验失败,直接向调用方系统返回异常响应信息;若包含则进入域名及token封装拦截器。
本实施例中,可以采用Dubbo、WebService等远程调用技术实现对被调用系统的调用。
如图2所示,步骤S200具体可以包括以下步骤:
步骤S210,中央API交互服务查询缓存中是否存在被调用系统的域名和token,若是则执行步骤S220,否则执行步骤S230;
步骤S210中,中央API交互服务根据租户ID和被调用系统ID查询缓存中是否有被调用系统的域名和token。
步骤S220,中央API交互服务获取缓存中的被调用系统的域名和token;
步骤S230,中央API交互服务调用全局租户配置系统,获取被调用系统的域名和token。
如图3所示,步骤S230可以包括以下步骤:
步骤S231,中央API交互服务向全局租户配置系统发送携带租户ID和被调用系统ID的第三请求;
步骤S232,全局租户配置系统解析第三请求,获取租户ID和被调用系统ID,并根据租户ID和被调用系统ID从持久化数据库中查询被调用系统的域名和公钥;
本实施例中,全局租户配置系统负责配置每个租户各个业务系统的域名和公钥信息,每个业务系统都有一对唯一的公钥和私钥,私钥由业务系统保留,公钥配置在全局租户配置系统。全局租户配置系统存储有各业务系统的域名,当业务系统的域名需要修改或更换时,可以通过全局租户配置系统进行修改或更换,更新后的域名就存储在持久化数据库中。
步骤S233,全局租户配置系统利用公钥加密第二请求参数,得到加密字符串,其中,第二请求参数包括租户ID和被调用系统ID;
步骤S233中,如果只对租户ID和被调用系统ID加密,会导致全局租户配置系统每次向被调用系统发送的加密字符串都是相同的,容易被非法用户假冒,因此,可以将时间戳、随机字符串也作为第二请求参数,提高加密字符串的随机性。
步骤S234,全局租户配置系统向被调用系统发送携带加密字符串和第二请求参数的第四请求;
步骤S235,在被调用系统利用私钥对加密字符串解密并验证通过,生成具有第一有效期的token,并利用私钥对token加密后,全局租户配置系统接收被调用系统发送的加密后的token,并利用公钥对加密后的token解密,得到token;
在被调用系统接收到第四请求后,解析第四请求得到加密字符串和第二请求参数,利用私钥对加密字符串进行解密,如果解密成功,并且解密得到的信息与第二请求参数对比无误,身份认证成功,说明是合法的全局租户配置系统,就生成token,并缓存到本系统对应的Redis。
由于非法拦截者没有公钥不能解密得到token,因此,被调用系统利用私钥对token加密后传输,可以防止非法拦截者获取token,并利用token随意访问被调用系统,获取数据,提高数据交互的安全性;另外,全局租户配置系统通过公钥解密也可以对被调用系统的身份进行认证。
步骤S236,全局租户配置系统将携带token和被调用系统的域名的第二响应数据返回给中央API交互服务;
步骤S237,中央API交互服务接收第二响应数据并获取被调用系统的域名和token。
本实施例中,利用公钥加密第二请求参数、利用私钥加密token的加密算法可以采用MD5、SHA1等散列加密算法,或者DES、AES等对称加密算法,或者RSA、ECC等非对称加密算法,对此本实施例不做具体限定。
本实施例中,全局租户配置系统与被调用系统之间通过公钥、私钥的加解密操作对对方的身份进行认证,只有认证通过后,才会进行后续操作,确保token获取过程的安全性。
进一步的,如图2所示,在步骤S230之后,还可以包括:步骤S240,中央API交互服务缓存被调用系统的域名和token,并为缓存的token设置第二有效期,第二有效期不大于第一有效期。
本实施例中,中央API交互服务获取到全局租户配置系统发送的被调用系统的域名和token后,缓存token,并为该token设置第二有效期,当超过第二有效期时,中央API交互服务会自动删除token;中央API交互服务在接收到第一请求后,无法从缓存中获取被调用系统的域名和token,只能调用全局租户配置系统获取。而中央API交互服务缓存的token的第二有效期是与被调用系统生成的token的第一有效期有关,即第二有效期不能大于第一有效期,由被调用系统来决定token的有效期。
当第二有效期等于第一有效期时,有可能会出现中央API交互服务缓存的token有效但被调用系统的token失效的情况,此时会导致被调用系统验证token失败,导致调用失败,因此,为了防止这种情况发生,可以设置第二有效期小于第一有效期。
当第二有效期小于第一有效期时,存在中央API交互服务缓存的token失效而被调用系统缓存的token还没有失效的情况,当有调用方系统向中央API交互服务发出第一请求时,中央API交互服务只能通过全局租户配置系统向被调用系统获取token,此时,为防止现有未失效的token的剩余有效时间少而导致后续调用失败,被调用系统会生成新的token,并将新的token返回给全局配置系统,被调用系统的Redis缓存有之前未失效的token以及新生成的token。
本实施例中,被调用系统只是针对租户生成token,调用方系统以及该租户的其他业务系统在第二有效期内,都可以通过中央API交互服务获取其缓存中的token,并访问被调用系统。例如,租户A拥有三个业务系统——系统1、系统2和系统3,系统1访问系统3获取数据,访问过程中,中央API交互服务缓存了token,该token有效期为1小时,在1小时内,系统2访问系统3,中央API交互服务可以直接根据该token访问系统3。
本实施例中,当被调用系统的域名更新后,全局租户配置系统会通知中央API交互服务更新缓存中的相应被调用系统的域名,以防后续因域名不对而导致调用失败。
步骤S300,中央API交互服务根据被调用系统的域名和token以及第一请求参数构造第二请求,并向被调用系统发送第二请求;
步骤S300中,根据被调用系统的域名、token及调用方系统提供的第一请求参数,通过jdk动态代理,生成请求代理对象,然后使用HttpClient或其他HTTP协议工具类发起接口调用。
具体的,将被调用系统的域名和token绑定在当前请求线程的ThreadLocal中,请求进入对应请求资源的Mapping类的方法中;封装业务接口所需的请求参数,调用业务接口中的方法,业务接口(Interface)是项目启动时通过动态代理注入到Spring容器中统一管理的Bean;动态代理类中实现对方法的增强,包括解析接口上自定义注解,根据注解设置请求前缀和相关策略,将第二请求所需的HttpClient等相关Bean注入到代理Bean中;方法执行前,根据方法参数及注解、返回类型、方法上注解以及ThreadLocal中的域名及token信息,构造请求体、请求头、请求完整url等相关信息,结合接口上自定义注解解析的信息及策略,发送第二请求到被调用系统。
步骤S400,在被调用系统对第二请求解析得到的token验证通过,并根据第一请求参数返回第一响应数据后,中央API交互服务接收被调用系统返回的第一响应数据,并将第一响应数据转发至调用方系统。
图4示出了同一租户不同系统间数据交互的流程示意图。如图4所示,当A租户的系统1首次访问A租户的系统2时,先携带请求信息访问中央API交互服务,中央API交互服务根据租户A及系统2的ID从全局租户配置系统获取系统2的访问域名及访问token,然后根据域名、token以及系统1请求信息构造出对应的HTTP请求,请求系统2,系统2验证token通过后,将系统1所需数据响应给中央API交互服务,中央API交互服务再响应给系统1,一个完整的请求响应完成。
租户的一个业务系统对另一个业务系统的接口调用,均通过中央API交互服务代理调用。调用方系统只需要明确租户和被调用系统,并携带必要的接口路径及参数信息,访问中央API交互服务即可。图5示出了中央API交互服务的结构框图,图6示出了中央API交互服务代理调用的流程示意图。如图6所示,中央API交互服务先校验调用方系统发来的第一请求中是否包含租户ID和被调用系统ID,若校验失败则返回异常响应信息;若校验成功则判断缓存中是否有被调用系统的域名和token,若有则直接构造第二请求;若没有则需调用全局租户配置系统进行获取;然后将从全局租户配置系统获取的被调用系统的域名和token进行缓存,并构造第二请求;最后向被调用系统发起第二请求,将被调用系统返回的响应数据转发给调用方系统。
图7示出了全局租户配置系统向业务系统获取token的流程示意图。如图7所示,全局租户配置系统在接收到中央API交互服务发来的请求后,先查询业务系统的域名和公钥,利用公钥加密请求信息,得到加密字符串A,并发送至请求至业务系统,业务系统利用私钥对加密字符串A验证通过后,生成token,并存储过期时间,将域名响应给全局租户配置系统,全局租户配置系统将业务系统的域名和token响应给中央API交互服务。
下面以医院项目为例对本发明实施例进行描述。
对于医疗行业,院内的HIS系统对于数据的私密性及安全性要求极高,不同的医院一般都是独立部署和访问;院外的互联网医院系统的数据大多依赖于院内HIS系统提供,本身存储的数据及相关业务没有强烈的私密性及安全性要求,同时又考虑到院外部署成本问题,医院往往采用共享的SAAS部署模式,节省成本,快速迭代。
如图8所示,租户A和租户B分别代表两个医院,系统2表示院内的HIS系统,它们均为独享模式,独立部署、独占域名和服务器资源;系统1表示院外的互联网医院系统,租户A和租户B共享域名及服务器资源,仅根据租户ID的不同,使用数据源级别或更低的数据库Schema级别隔离数据。
租户A的系统1为了获取其在系统2中的某些数据,发出一个请求,请求来到中央API交互服务,中央API交互服务从全局租户配置系统获取租户A的系统2配置的访问域名和访问token等信息,根据这些信息构造访问系统2的完整请求,请求即可顺利发送到租户A采用独享模式部署的系统2。系统2验证token后,根据请求相关信息返回对应的响应数据给中央API交互服务,中央API交互服务随即将响应数据返回给SAAS模式部署的系统1,自此,一个完整的请求响应顺利完成。同理系统2对系统1的调用也是如此,不再赘述。
本实施例中,全局租户配置系统、中央API交互服务这两个服务可以都是服务器集群模式部署,每个服务可以部署在多个服务器上负载均衡,防止单点故障,提升系统稳定性。
实施例二:
本实施例提供一种跨租户数据交互装置,应用于SAAS服务器集群,如图9所示,包括:
第一接收模块500,用于中央API交互服务接收调用方系统发送的第一请求;
第一获取模块600,用于中央API交互服务解析第一请求,得到租户ID、被调用系统ID和第一请求参数,并根据租户ID和被调用系统ID获取被调用系统的域名和token;
第一请求模块700,用于中央API交互服务根据被调用系统的域名和token以及第一请求参数构造第二请求,并向被调用系统发送第二请求;
第二接收模块800,用于在被调用系统对第二请求解析得到的token验证通过,并根据第一请求参数返回第一响应数据后,中央API交互服务接收被调用系统返回的第一响应数据;以及
第一响应模块900,用于中央API交互服务将第一响应数据转发至调用方系统。
本实施例中,第一获取模块600,具体用于中央API交互服务查询缓存中是否存在被调用系统的域名和token,若是则获取缓存中的被调用系统的域名和token,否则调用全局租户配置系统,获取被调用系统的域名和token。
在本实施例中,第一获取模块600还用于在所述中央API交互服务解析所述第一请求之后,中央API交互服务校验第一请求是否包含租户ID和被调用系统ID,若校验成功,则根据租户ID和被调用系统ID获取被调用系统的域名和token;若校验失败,则向调用方系统返回异常响应信息。
可选的,如图10所示,第一获取模块600包括:
第二请求模块610,用于中央API交互服务向全局租户配置系统发送携带租户ID和被调用系统ID的第三请求;
第二获取模块620,用于全局租户配置系统解析第三请求,获取租户ID和被调用系统ID;
查询模块630,用于全局租户配置系统根据租户ID和被调用系统ID从持久化数据库中查询被调用系统的域名和公钥;
公钥加密模块640,用于全局租户配置系统利用公钥加密第二请求参数,得到加密字符串,其中,第二请求参数包括租户ID和被调用系统ID;
第三请求模块650,用于全局租户配置系统根据被调用系统的域名向被调用系统发送携带加密字符串和第二请求参数的第四请求;
私钥解密模块660,用于在所述被调用系统利用私钥对所述加密字符串解密并验证通过,生成具有第一有效期的token,并利用所述私钥对所述token加密后,所述全局租户配置系统接收所述被调用系统发送的加密后的token,并利用所述公钥对加密后的token解密,得到所述token;
第二响应模块670,用于所述全局租户配置系统将携带所述token和所述被调用系统的域名的第二响应数据返回给所述中央API交互服务;以及
第二接收模块680,用于中央API交互服务接收第二响应数据并获取被调用系统的域名和token。
作为本实施例的一种可选实施方式,如图9所示,该装置还包括:缓存模块1000,用于在第一获取模块600调用全局租户配置系统,获取被调用系统的域名和token之后,中央API交互服务缓存被调用系统的域名和token,并为缓存的token设置第二有效期,第二有效期不大于第一有效期。
由于本实施例所述装置内各模块与上述实施例一所述方法的各步骤一一对应,因此,对上述各模块的说明详见实施例一,本实施例不再赘述。
实施例三:
本实施例提供一种SAAS服务器集群,包括多个服务器,服务器包括存储器和处理器,存储器上存储有能够被处理器加载并执行如实施例一所述跨租户数据交互方法的计算机程序。
图11是本实施例的服务器的结构框图。如图11所示,服务器包括通用的计算机硬件结构,其至少包括处理器和存储器,处理器和存储器通过总线连接。存储器适于存储处理器可执行的指令或程序。处理器可以是独立的微处理器,也可以是一个或多个微处理器集合。由此,处理器通过执行存储器所存储的指令,从而执行如实施例一所述的方法流程实现跨租户的数据交互。总线将上述多个组件连接在一起,同时将上述组件连接到显示控制器和显示装置以及输入/输出装置。输入/输出装置可以是鼠标、键盘、调制解调器、网络接口、触控输入装置、体感输入装置、打印机以及本领域公知的其他装置。典型地,输入/输出装置通过输入/输出控制器与系统相连。
实施例四:
本实施例提供一种计算机可读存储介质,存储有能够被处理器加载并执行如实施例一所述跨租户数据交互方法的计算机程序。
本实施例中,计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意组合。具体的,计算机可读存储介质可以是便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、讲台随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、光盘、机械编码设备以及上述任意组合。
上述实施例三和四中的计算机程序包含用于执行实施例一中流程图所示的方法的程序代码,程序代码可包括对应执行实施例一提供的方法步骤对应的指令。计算机程序可从计算机可读存储介质下载到各个计算/处理设备,或者通过网络(例如因特网、局域网、广域网和/或无线网)下载到外部计算机或外部存储设备。计算机程序可完全地在用户计算机上执行、作为一个独立的软件包执行。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种跨租户数据交互方法,其特征在于,应用于SAAS服务器集群,包括:
中央API交互服务接收调用方系统发送的第一请求;
所述中央API交互服务解析所述第一请求,得到租户ID、被调用系统ID和第一请求参数,并根据所述租户ID和所述被调用系统ID获取被调用系统的域名和token;
所述中央API交互服务根据所述被调用系统的域名和token以及所述第一请求参数构造第二请求,并向所述被调用系统发送所述第二请求;
在所述被调用系统对所述第二请求解析得到的token验证通过,并根据所述第一请求参数返回第一响应数据后,所述中央API交互服务接收所述被调用系统返回的第一响应数据,并将所述第一响应数据转发至所述调用方系统;
所述根据租户ID和被调用系统ID获取被调用系统的域名和token,包括:
所述中央API交互服务查询缓存中是否存在所述被调用系统的域名和token,若是则获取缓存中的被调用系统的域名和token,否则调用全局租户配置系统,获取所述被调用系统的域名和token;
所述调用全局租户配置系统,获取被调用系统的域名和token,包括:
所述中央API交互服务向所述全局租户配置系统发送携带所述租户ID和所述被调用系统ID的第三请求;
所述全局租户配置系统解析所述第三请求,获取所述租户ID和所述被调用系统ID,并根据所述租户ID和所述被调用系统ID从持久化数据库中查询所述被调用系统的域名和公钥;
所述全局租户配置系统利用所述公钥加密第二请求参数,得到加密字符串,其中,所述第二请求参数包括所述租户ID和所述被调用系统ID;
所述全局租户配置系统向所述被调用系统发送携带所述加密字符串和所述第二请求参数的第四请求;
在所述被调用系统利用私钥对所述加密字符串解密并验证通过,生成具有第一有效期的token,并利用所述私钥对所述token加密后,所述全局租户配置系统接收所述被调用系统发送的加密后的token,并利用所述公钥对加密后的token解密,得到所述token;
所述全局租户配置系统将携带所述token和所述被调用系统的域名的第二响应数据返回给所述中央API交互服务;
所述中央API交互服务接收所述第二响应数据并获取所述被调用系统的域名和token。
2.根据权利要求1所述的方法,其特征在于,在所述调用全局租户配置系统,获取被调用系统的域名和token之后,还包括:
所述中央API交互服务缓存所述被调用系统的域名和token,并为缓存的token设置第二有效期,所述第二有效期不大于所述第一有效期。
3.根据权利要求1所述的方法,其特征在于,在所述中央API交互服务解析所述第一请求之后,还包括:
中央API交互服务校验所述第一请求是否包含所述租户ID和所述被调用系统ID,若校验成功,则根据所述租户ID和所述被调用系统ID获取所述被调用系统的域名和token;若校验失败,则向所述调用方系统返回异常响应信息。
4.一种跨租户数据交互装置,其特征在于,应用于SAAS服务器集群,包括:
第一接收模块,用于中央API交互服务接收调用方系统发送的第一请求;
第一获取模块,用于所述中央API交互服务解析所述第一请求,得到租户ID、被调用系统ID和第一请求参数,并根据所述租户ID和所述被调用系统ID获取被调用系统的域名和token;
第一请求模块,用于所述中央API交互服务根据所述被调用系统的域名和token以及所述第一请求参数构造第二请求,并向所述被调用系统发送所述第二请求;
第二接收模块,用于在所述被调用系统对所述第二请求解析得到的token验证通过,并根据所述第一请求参数返回第一响应数据后,所述中央API交互服务接收所述被调用系统返回的第一响应数据;以及
第一响应模块,用于所述中央API交互服务将所述第一响应数据转发至所述调用方系统;
所述第一获取模块,具体用于所述中央API交互服务查询缓存中是否存在所述被调用系统的域名和token,若是则获取缓存中的被调用系统的域名和token,否则调用全局租户配置系统,获取所述被调用系统的域名和token;
所述第一获取模块包括:
第二请求模块,用于所述中央API交互服务向所述全局租户配置系统发送携带所述租户ID和所述被调用系统ID的第三请求;
第二获取模块,用于所述全局租户配置系统解析所述第三请求,获取所述租户ID和所述被调用系统ID;
查询模块,用于所述全局租户配置系统根据所述租户ID和所述被调用系统ID从持久化数据库中查询所述被调用系统的域名和公钥;
公钥加密模块,用于所述全局租户配置系统利用所述公钥加密第二请求参数,得到加密字符串,其中,所述第二请求参数包括所述租户ID和所述被调用系统ID;
第三请求模块,用于所述全局租户配置系统根据所述被调用系统的域名向所述被调用系统发送携带所述加密字符串和所述第二请求参数的第四请求;
私钥解密模块,用于在所述被调用系统利用私钥对所述加密字符串解密并验证通过,生成具有第一有效期的token,并利用所述私钥对所述token加密后,所述全局租户配置系统接收所述被调用系统发送的加密后的token,并利用所述公钥对加密后的token解密,得到所述token;
第二响应模块,用于所述全局租户配置系统将携带所述token和所述被调用系统的域名的第二响应数据返回给所述中央API交互服务;以及
第二接收模块,用于所述中央API交互服务接收所述第二响应数据并获取所述被调用系统的域名和token。
5.一种SAAS服务器集群,其特征在于,包括多个服务器,所述服务器包括存储器和处理器,所述存储器上存储有能够被所述处理器加载并执行如权利要求1至3中任一种方法的计算机程序。
6.一种计算机可读存储介质,其特征在于,存储有能够被处理器加载并执行如权利要求1至3中任一种方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010232158.7A CN111314491B (zh) | 2020-03-27 | 2020-03-27 | 跨租户数据交互方法、装置、服务器集群及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010232158.7A CN111314491B (zh) | 2020-03-27 | 2020-03-27 | 跨租户数据交互方法、装置、服务器集群及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111314491A CN111314491A (zh) | 2020-06-19 |
CN111314491B true CN111314491B (zh) | 2022-07-08 |
Family
ID=71147376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010232158.7A Active CN111314491B (zh) | 2020-03-27 | 2020-03-27 | 跨租户数据交互方法、装置、服务器集群及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111314491B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111861140A (zh) * | 2020-06-28 | 2020-10-30 | 微民保险代理有限公司 | 一种业务处理方法、装置、存储介质和电子装置 |
CN112491747B (zh) * | 2020-11-25 | 2022-06-14 | 湖南麒麟信安科技股份有限公司 | 一种高可用的数据交换集群的应用方法 |
US11487639B2 (en) | 2021-01-21 | 2022-11-01 | Vmware, Inc. | User experience scoring and user interface |
US11586526B2 (en) | 2021-01-22 | 2023-02-21 | Vmware, Inc. | Incident workflow interface for application analytics |
US20220237097A1 (en) * | 2021-01-22 | 2022-07-28 | Vmware, Inc. | Providing user experience data to tenants |
CN113271334B (zh) * | 2021-03-25 | 2023-07-21 | 西藏宁算科技集团有限公司 | 基于SaaS场景下的业务策略分发方法、装置及电子设备 |
CN113918919A (zh) * | 2021-12-14 | 2022-01-11 | 天聚地合(苏州)数据股份有限公司 | 一种基于Redis的令牌获取方法、装置及电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106201506A (zh) * | 2016-07-07 | 2016-12-07 | 华南理工大学 | 基于多租户模式的功能装配与定制方法 |
CN108471395A (zh) * | 2017-02-23 | 2018-08-31 | 华为技术有限公司 | 实现认证/授权的方法、装置、云计算系统及计算机系统 |
CN109561226A (zh) * | 2017-09-26 | 2019-04-02 | 华为技术有限公司 | 一种api混合多租户路由方法、系统和api网关 |
CN109951530A (zh) * | 2019-02-27 | 2019-06-28 | 上海浪潮云计算服务有限公司 | 一种多租户模式的技术实现方法 |
CN110309636A (zh) * | 2019-07-04 | 2019-10-08 | 阿里巴巴集团控股有限公司 | 一种身份认证的方法和系统 |
CN110430065A (zh) * | 2019-08-08 | 2019-11-08 | 浪潮云信息技术有限公司 | 一种应用服务调用方法、装置及系统 |
CN110603802A (zh) * | 2018-03-27 | 2019-12-20 | 甲骨文国际公司 | 多租户身份云服务的跨区域信任 |
-
2020
- 2020-03-27 CN CN202010232158.7A patent/CN111314491B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106201506A (zh) * | 2016-07-07 | 2016-12-07 | 华南理工大学 | 基于多租户模式的功能装配与定制方法 |
CN108471395A (zh) * | 2017-02-23 | 2018-08-31 | 华为技术有限公司 | 实现认证/授权的方法、装置、云计算系统及计算机系统 |
CN109561226A (zh) * | 2017-09-26 | 2019-04-02 | 华为技术有限公司 | 一种api混合多租户路由方法、系统和api网关 |
CN110603802A (zh) * | 2018-03-27 | 2019-12-20 | 甲骨文国际公司 | 多租户身份云服务的跨区域信任 |
CN109951530A (zh) * | 2019-02-27 | 2019-06-28 | 上海浪潮云计算服务有限公司 | 一种多租户模式的技术实现方法 |
CN110309636A (zh) * | 2019-07-04 | 2019-10-08 | 阿里巴巴集团控股有限公司 | 一种身份认证的方法和系统 |
CN110430065A (zh) * | 2019-08-08 | 2019-11-08 | 浪潮云信息技术有限公司 | 一种应用服务调用方法、装置及系统 |
Non-Patent Citations (2)
Title |
---|
Policy-Driven Data Management Middleware for Multi-cloud Storage in Multi-tenant SaaS;Ansar Rafique;《2015 IEEE/ACM 2nd International Symposium on Big Data Computing(BDC)》;20160215;全文 * |
一种面向SAAS应用开发的中间件设计与实现;孙冰清;《中国优秀硕士学位论文全文数据库信息科技辑》;20131115;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111314491A (zh) | 2020-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111314491B (zh) | 跨租户数据交互方法、装置、服务器集群及介质 | |
CN110968743B (zh) | 针对隐私数据的数据存储、数据读取方法及装置 | |
JP5635978B2 (ja) | 人間が介入しないアプリケーションのための認証されたデータベース接続 | |
JP4309629B2 (ja) | ネットワークシステム | |
US9530011B2 (en) | Method and system for provision of cryptographic services | |
US8925108B2 (en) | Document access auditing | |
US8627077B2 (en) | Transparent authentication process integration | |
US11398900B2 (en) | Cloud based key management | |
US8479301B2 (en) | Offline access in a document control system | |
CN109379336B (zh) | 一种统一认证方法、分布式系统和计算机可读存储介质 | |
JP6663032B2 (ja) | 車載ゲートウェイ、鍵管理装置 | |
US20180020008A1 (en) | Secure asynchronous communications | |
JP5100286B2 (ja) | 暗号モジュール選定装置およびプログラム | |
US20130212707A1 (en) | Document control system | |
CN111064569B (zh) | 可信计算集群的集群密钥获取方法及装置 | |
JP2021511743A (ja) | Iotサービスを実施するための方法、アプリケーションサーバ、iot装置および媒体 | |
US8719574B2 (en) | Certificate generation using virtual attributes | |
US11595398B1 (en) | Access control for named domain networking | |
JP2018092446A (ja) | 認証認可システム及び情報処理装置と認証認可方法とプログラム | |
KR102510868B1 (ko) | 클라이언트 시스템 인증 방법, 클라이언트 장치 및 인증 서버 | |
CN112560003A (zh) | 用户权限管理方法和装置 | |
CN105656995A (zh) | 基于分布式处理的数据共享方法和系统 | |
JP3770173B2 (ja) | 共通鍵管理システムおよび共通鍵管理方法 | |
KR20140077132A (ko) | 디지털 콘텐츠 전송 방법, 시스템 및 장치 | |
JP5894860B2 (ja) | Id管理方法およびデータ管理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |