一种微服务切换方法及系统与流程

    专利2022-07-08  104


    本发明涉及互联网技术领域,特别涉及一种微服务切换方法及系统。



    背景技术:

    随着云服务系统的不断发展,原有的大型云服务系统可以被拆分为若干个微服务系统,从而通过微服务系统提供针对性更强、更加专业的服务。

    用户在使用微服务系统的过程中,通常需要从一个微服务切换至另一个微服务,在微服务切换时,如何避免多次的登录认证,成为了提升用户体验的关键问题。

    目前,可以基于cas(centralauthenticationservice,中央认证服务)协议构建sso(singlesignon,单点登录)系统,各项微服务可以接入该sso系统,从而进行统一的登录认证。在切换微服务时,sso系统可以基于已经存储的tgc(ticketgrantingcookie,存放用户身份认证凭证票据的cookie)信息直接完成登录认证。这样,用户无需多次输入账号和密码,便可以实现微服务之间的切换。

    然而,以上的方案也存在一定的缺陷,例如,当存在两个或者两个以上的sso系统时,如果需要跨sso系统提供服务,那么依然需要经过多次的登录认证过程。因此,目前需要一种更加有效的微服务切换方案。



    技术实现要素:

    本申请的目的在于提供一种微服务切换方法及系统,在切换微服务时可以避免多次的登录认证,从而提高微服务的切换效率。

    为实现上述目的,本申请一方面提供一种微服务切换方法,所述方法应用于公有云的单点登录系统中,所述方法包括:在用户已登录私有云数据中心的情况下,若从私有云微服务切换至公有云微服务,接收所述私有云数据中心发来的令牌获取请求,所述令牌获取请求中至少包括所述用户在所述私有云数据中心内的用户信息;响应于所述令牌获取请求,向所述私有云数据中心反馈令牌,并接收所述私有云数据中心发来的携带所述令牌的登录校验请求,所述登录校验请求中包括所述公有云微服务的服务地址;在验证所述登录校验请求中的令牌后,基于所述用户信息登录至公有云数据中心,并重定向至所述登录校验请求中的服务地址,以切换至所述服务地址表征的公有云微服务。

    为实现上述目的,本申请另一方面还提供一种公有云的单点登录系统,所述系统包括:令牌请求接收单元,用于在用户已登录私有云数据中心的情况下,若从私有云微服务切换至公有云微服务,接收所述私有云数据中心发来的令牌获取请求,所述令牌获取请求中至少包括所述用户在所述私有云数据中心内的用户信息;校验单元,用于响应于所述令牌获取请求,向所述私有云数据中心反馈令牌,并接收所述私有云数据中心发来的携带所述令牌的登录校验请求,所述登录校验请求中包括所述公有云微服务的服务地址;微服务切换单元,用于在验证所述登录校验请求中的令牌后,基于所述用户信息登录至公有云数据中心,并重定向至所述登录校验请求中的服务地址,以切换至所述服务地址表征的公有云微服务。

    为实现上述目的,本申请另一方面还提供一种微服务切换方法,所述方法应用于私有云的单点登录系统中,所述方法包括:在用户已登录公有云数据中心的情况下,若从公有云微服务切换至私有云微服务,接收公有云数据中心发来的访问请求,所述访问请求中包括会话标识和所述私有云微服务的服务地址;提取所述访问请求中的所述会话标识,并向公有云的单点登录系统发送包含所述会话标识的校验请求,并在所述会话标识被校验通过后,接收所述公有云的单点登录系统反馈的用户信息;基于所述用户信息登录至私有云数据中心,并重定向至所述访问请求中的服务地址,以切换至所述服务地址表征的私有云微服务。

    为实现上述目的,本申请另一方面还提供一种私有云的单点登录系统,所述系统包括:访问请求接收单元,用于在用户已登录公有云数据中心的情况下,若从公有云微服务切换至私有云微服务,接收公有云数据中心发来的访问请求,所述访问请求中包括会话标识和所述私有云微服务的服务地址;校验请求单元,用于提取所述访问请求中的所述会话标识,并向公有云的单点登录系统发送包含所述会话标识的校验请求,并在所述会话标识被校验通过后,接收所述公有云的单点登录系统反馈的用户信息;微服务切换单元,用于基于所述用户信息登录至私有云数据中心,并重定向至所述访问请求中的服务地址,以切换至所述服务地址表征的私有云微服务。

    由上可见,本申请一个或者多个实施方式提供的技术方案,公有云微服务和私有云微服务可以分别具备各自的sso系统,如果用户需要在公有云微服务和私有云微服务之间进行切换,就涉及跨sso系统的认证过程。在该认证过程中,当从私有云微服务切换至公有云微服务时,私有云的数据中心可以向公有云的sso系统请求令牌。后续,私有云的sso系统可以向公有云的sso系统发送携带该令牌的登录校验请求,如果该登录校验请求被公有云的sso系统验证通过,那么用户便可以直接基于私有云数据中心内的用户信息登录至公有云数据中心,从而实现微服务的切换过程。而如果从公有云微服务切换至私有云微服务,公有云数据中心可以向私有云的sso系统发送携带会话标识的访问请求,私有云的sso系统可以接着向公有云的sso系统请求校验该会话标识,如果该会话标识通过校验,私有云的sso系统便可以接收到公有云的sso系统反馈的用户信息,通过该用户信息便可以直接登录至私有云数据中心,从而完成微服务的切换。可见,本申请提供的技术方案,无需用户进行多次的账号和密码的输入,而是在跨sso系统切换微服务时,两个sso系统之间可以直接完成认证过程,并顺利进行微服务的切换。该过程对用户而言是无感知的,从用户的体验来看,在不需要多次输入账号和密码的情况下,就能够实现微服务的切换过程。

    附图说明

    为了更清楚地说明本发明实施方式中的技术方案,下面将对实施方式描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

    图1是本发明实施方式中的系统架构示意图;

    图2是本发明实施方式中微服务切换的方法示意图;

    图3是本发明实施方式中从公有云微服务退出的示意图;

    图4是本发明实施方式中从私有云微服务退出的示意图;

    图5是本发明实施方式中微服务切换的另一个方法示意图。

    具体实施方式

    为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施方式及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施方式仅是本申请一部分实施方式,而不是全部的实施方式。基于本申请中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本申请保护的范围。

    目前,cas协议的出现以及基于这个协议实现的sso系统,可以一定程度地避免用户在切换微服务的过程中需要多次输入账号密码的情况。

    基于完全标准的cas协议的sso系统,各个微服务可以接入sso系统中。用户登录微服务时,浏览器可以重定向到sso系统进行账号认证,账号密码校验成功后,sso系统生成tgt(ticketgrantingticket,用户身份认证凭证票据),将tgt存入cookie,并且颁发st(serviceticket,服务许可凭证票据)给微服务,微服务通过st便可以和sso系统进行认证完成一次登录。切换微服务时,sso系统通过获得浏览器中的tgc信息直接完成登录认证。这样用户就可以在不用再次输入账号密码情况下,访问其他微服务。微服务退出时,sso系统接收退出请求后,根据tgt获取本次登录的所有微服务会话,对各个微服务发送包含登录时的st信息,从而通知微服务销毁绑定st的会话(session),完成退出。

    在简化的cas实现方案中,用户首次登录微服务时,sso系统生成全局唯一的会话标识(sessionid,sid),当切换其他微服务时,将浏览器cookie中的sid发送给待切换的微服务并校验完成免密登录。退出时,由sso系统统一发送包含sid的退出通知,各微服务将此sid关联的会话销毁,完成退出。

    基于cas协议实现的单个sso登录系统的方案多种多样,解决方案也一直在更新。但是,在一些企业或机构中,尤其是做云解决方案的公司中,对外提供定制的云服务时,都有独立的应用系统和认证中心,即有多个sso系统。例如,一个企业对外提供一个统一的公有云服务,该公有云服务包含有众多的微服务系统。同时,该企业也对其他公司或个人提供了一个定制化的私有云服务,公有云服务与该私有云服务都具备各自的sso系统。如果一个用户已经登录了私有云,想使用或购买一个公有云上的某个服务时,该用户必须到公有云的sso系统,输入针对公有云的用户名和密码才能登录到公有云上,后续才可以继续进行操作,这样给用户带来很不友好的体验。

    因此,需要有一种支持这种跨sso系统的互信认证登录方案来解决此问题。

    当前有少数针对这种需求提出的一些方案,其中最常见的就是信任中心系统,即两个及以上的sso系统,同时接入一个信任中心,由该信任中心来实行统一的认证,以实现sso之间的互通互信。但是这种方案需要将不同sso系统的数据共通到统一的信任中心,无法起到将私有云与公有云的数据隔离的作用,数据存在一定的风险。而且,多引入一个信任中心系统,就需要额外增加一份维护和开发成本,且开发周期较长,对现有的sso系统改造过多。还有的方案是对实现了标准cas协议的sso登录系统做互信登录,但这种方案无法兼容简化cas协议实现的sso系统。其他的一些方案,有的也仅提出了如何进行登录验证的方案,对于如何进行统一退出的解决也无涉及,造成了用户登录一次后,却要在不同的sso系统中分别退出,这也给用户带来了困扰。

    鉴于此,本申请一个实施方式提供一种微服务切换方法,该方案可以应用于如图1所示的系统架构中。在该系统架构中,可以包括私有云的sso系统、私有云数据中心、公有云的sso系统以及公有云数据中心。其中,私有云数据中和公有云数据中心可以分别为用户提供私有云微服务和公有云微服务。私有云和公有云的sso系统则可以认证用户信息,以确认用户具备访问对应微服务的权限。请参阅图1和图2,本申请一个实施方式提供的微服务切换方法,可以应用于上述的公有云的sso系统中,该方法可以包括以下多个步骤。

    s11:在用户已登录私有云数据中心的情况下,若从私有云微服务切换至公有云微服务,接收所述私有云数据中心发来的令牌获取请求,所述令牌获取请求中至少包括所述用户在所述私有云数据中心内的用户信息。

    在本实施方式中,用户通过账号和密码登录了私有云数据中心后,便可以访问私有云数据中心提供的各项私有云微服务。在向用户提供私有云微服务时,页面中也可以具备公有云的微服务列表,以供用户选择。当用户选择了其中的一个公有云微服务时,便触发了从私有云微服务切换至公有云微服务的过程。此时,私有云数据中心可以向公有云的sso系统发送令牌获取请求,以从公有云的sso系统处获取一个一次性的令牌(token)。在发送令牌获取请求时,私有云数据中心可以将该用户的用户信息一并发送给公有云的sso系统,以便公有云的sso系统后续利用该用户信息自动进行登录。在实际应用中,该用户信息的形式可以多种多样。例如,该用户信息可以是用户在登录私有云数据中心时使用的账号和密码,也可以是用户在登录私有云数据中心后,私有云数据中心内存储的该用户的tgc信息。当然,在实际应用中,该用户信息还可以是其它的形式,只要能够基于该用户信息完成用户的登录过程即可。

    在一个实施方式中,私有云数据中心发送的令牌获取请求中,可以在请求头部添加私有云数据中心预先注册得到的标识信息。该标识信息例如可以是ak(accesskey)信息。私有云数据中心可以在管理系统中注册该标识信息,同时,该标识信息在生成时,可以具备相匹配的秘钥(secretkey,sk),这样,ak和sk便可以构成一组相匹配的信息,根据ak便可以查询到对应的sk。私有云数据中心可以将标识信息存放于令牌获取请求的请求头部,这样,公有云的sso系统接收到该令牌获取请求后,便可以从管理系统中查询与该标识信息相匹配的秘钥。然后,可以利用该秘钥对令牌获取请求的请求内容进行加密后得到验证签名。如果利用该秘钥加密得到的验证签名与令牌获取请求中携带的签名一致,则表示该令牌获取请求满足校验条件,此时公有云的sso系统可以向私有云数据中心反馈一个一次性的令牌。

    s13:响应于所述令牌获取请求,向所述私有云数据中心反馈令牌,并接收所述私有云数据中心发来的携带所述令牌的登录校验请求,所述登录校验请求中包括所述公有云微服务的服务地址。

    在本实施方式中,当私有云数据中心接收到该一次性的令牌后,便可以向公有云的sso系统发送携带该令牌的登录校验请求,以尝试在公有云的sso系统中完成用户信息的校验。由于该令牌是一次性的,因此在本次校验结束之后,该令牌会自动失效,从而保证后续校验过程的安全性。

    具体地,该登录校验请求可以是通过浏览器发起的,浏览器在发送该登录校验请求时,一方面可以带上一次性的令牌,另一方面还可以携带待切换的公有云微服务的服务地址。这样,公有云数据中心后续才知道应当切换至哪个公有云微服务。在实际应用中,公有云微服务的服务地址的域名,与登录校验请求的域名通常不同。例如,登录校验请求可以是http://public-cloud.sso.com?service=https://a.client.com,而公有云微服务的服务地址则可以是其中的https://a.client.com。可见,登录校验请求中可以携带公有云微服务的服务地址。

    s15:在验证所述登录校验请求中的令牌后,基于所述用户信息登录至公有云数据中心,并重定向至所述登录校验请求中的服务地址,以切换至所述服务地址表征的公有云微服务。

    在本实施方式中,公有云的sso系统接收到登录校验请求后,可以验证其中的令牌是否正确。如果正确,则可以正常处理该登录校验请求。在处理该登录校验请求时,可以先基于步骤s11中获取的用户信息,登录至公有云数据中心。这样,就避免了用户需要再次输入账号和密码的过程。在登录至公有云数据中心之后,公有云的sso系统可以对登录校验请求进行改写,生成指向公有云微服务的一个新的链接。具体地,公有云的sso系统可以从登录校验请求中识别公有云微服务的服务地址,并将公有云微服务的服务地址作为改写后的链接。例如,http://public-cloud.sso.com?service=https://a.client.com这样的登录校验请求,从中提取的公有云微服务的服务地址则可以是https://a.client.com,那么https://a.client.com便可以作为改写后的新的链接。在提取得到服务地址之后,公有云的sso系统便可以重定向至该服务地址,从而切换至该服务地址表征的公有云微服务。

    可见,通过私有云数据中心与公有云的sso系统之间的交互,可以完成用户信息的校验和登录,并且通过重定向的方式,能够切换至服务地址指向的公有云微服务,从而在不需要再次输入账号和密码的情况下,完成私有云微服务到公有云微服务的切换。

    当用户访问完公有云微服务或者私有云微服务后,需要退出当前的登录状态。为了统一地将公有云微服务和私有云微服务一并退出,在本申请中针对不同的退出场景,可以执行不同的方案。

    具体地,如果用户是在使用公有云微服务后,从公有云微服务中退出登录,此时,公有云的sso系统会接收到从公有云退出微服务的退出指令。在公有云的sso系统中,用户的用户信息与本次登录过程中已登录的各项公有云微服务均会进行关联,这样,通过用户信息,可以查询到相关联的已登录的所有公有云微服务。此时,公有云的sso系统可以逐一向这些公有云微服务发送退出通知,从而完成公有云微服务的退出过程。

    此外,用户在本次登录过程中,还可能访问了一部分私有云微服务,导致这些私有云微服务目前也处于登录状态。其中,处于登录状态的私有云微服务,也可以与用户信息相关联。这样,公有云的sso系统通过用户信息,便可以判断当前是否还有私有云微服务处于登录状态。如果有,那么公有云的sso系统可以将用户信息进行加密处理,从而得到会话标识(sid)。在私有云的sso系统中,已登录的私有云微服务都可以与sid进行关联。这样,公有云的sso系统可以将得到的sid发送至私有云的sso系统。这样,私有云的sso系统便可以将与sid相关联的私有云微服务都退出登录。这样,即使是从公有云退出微服务,也能够将公有云微服务和私有云微服务一并退出。

    请参阅图3,在一个具体应用场景中,用户在触发退出登录的操作时,公有云的sso系统可以通过重定向的方式,重定向至公有云的登出页面。与此同时,公有云的sso系统可以按照上述的方式,通知已登录的公有云微服务退出登录,并且根据tgc信息,判断当前是否有私有云微服务处于登录状态。公有云的sso系统在得到sid后,可以调用私有云的sso系统的退出接口,调用退出接口的过程可以是重定向的过程,从而重定向至私有云的登出页面。这样,公有云的sso系统可以向退出接口发起重定向访问,在该重定向访问中可以携带上述的sid,从而将sid传递至私有云的sso系统。私有云的sso系统后续便可以根据sid对关联的私有云微服务发起退出登录的通知。

    请参阅图4,在一个实施方式中,如果用户是从私有云退出微服务,那么私有云的sso系统可以接收到从私有云退出微服务的退出指令。此时,私有云的sso系统可以根据sid,查询到相关联的已登录的私有云微服务,并可以向这些私有云微服务发送退出通知。在完成私有云微服务的退出之后,还需要对当前处于登录状态的公有云微服务进行退出。具体地,私有云的sso系统可以向公有云的sso系统发送退出通知,该退出通知中可以包括sid和跳转链接。这样,公有云的sso系统在接收到sid之后,可以对该sid进行解密,从而得到对应的tgc信息。通过tgc信息,公有云的sso系统可以查询到关联的公有云微服务,并可以将这些公有云微服务退出登录。在退出登录之后,需要向用户展示退出登录后的页面,而该页面可以由私有云的sso系统通过上述的跳转链接决定。因此,公有云的sso系统在完成公有云微服务的退出后,可以重定向至上述跳转链接指向的页面,这样就可以向用户展示退出微服务之后的页面。

    在本实施方式中,私有云的sso系统在向公有云的sso系统发送退出通知时,可以调用公有云的sso系统的退出接口。该调用退出接口的过程也可以是浏览器的重定向过程,通过重定向的方式,可以携带上述的sid和跳转链接,从而使得公有云的sso系统能够基于sid完成公有云微服务的退出,并且根据跳转链接,可以向用户展示退出后的页面。

    本申请一个实施方式中还提供一种公有云的单点登录系统,所述系统包括:

    令牌请求接收单元,用于在用户已登录私有云数据中心的情况下,若从私有云微服务切换至公有云微服务,接收所述私有云数据中心发来的令牌获取请求,所述令牌获取请求中至少包括所述用户在所述私有云数据中心内的用户信息;

    校验单元,用于响应于所述令牌获取请求,向所述私有云数据中心反馈令牌,并接收所述私有云数据中心发来的携带所述令牌的登录校验请求,所述登录校验请求中包括所述公有云微服务的服务地址;

    微服务切换单元,用于在验证所述登录校验请求中的令牌后,基于所述用户信息登录至公有云数据中心,并重定向至所述登录校验请求中的服务地址,以切换至所述服务地址表征的公有云微服务。

    本申请一个实施方式还提供一种微服务切换方法,该方法可以应用于私有云的单点登录系统中,请参阅图1和图5,该方法可以包括以下多个步骤。

    s21:在用户已登录公有云数据中心的情况下,若从公有云微服务切换至私有云微服务,接收公有云数据中心发来的访问请求,所述访问请求中包括会话标识和所述私有云微服务的服务地址。

    在本实施方式中,用户通过账号和密码登录了公有云数据中心后,便可以访问公有云数据中心提供的各项公有云微服务。在向用户提供公有云微服务时,页面中也可以具备私有云的微服务列表,以供用户选择。当用户选择了其中的一个私有云微服务时,便触发了从公有云微服务切换至私有云微服务的过程。此时,由于公有云数据中的域名与公有云的sso系统的域名不同,因此公有云数据中心可以向公有云的sso系统发送跨域请求,该跨域请求可以是公有云数据中心发起的一个ajax请求,该ajax请求可以调用公有云的sso系统的接口。例如,该ajax请求可以是https://public.sso.com/obtain-sid,用于从公有云的sso系统处获取sid。

    在本实施方式中,响应于该跨域请求,公有云的sso系统可以查询本次登录的用户信息,该用户信息例如可以是tgc信息。然后,公有云的sso系统可以对该用户信息进行加密,从而得到对应的sid,并将该sid反馈给公有云数据中心。

    当从公有云微服务切换至私有云微服务时,公有云数据中心可以向私有云的sso系统发送访问请求,在该访问请求中,可以携带上述的sid以及待切换的私有云微服务的服务地址。

    在一个实际应用场景功能中,公有云数据中心通过调用私有云的认证接口,可以将上述的访问请求发送至私有云。私有云的微服务接收到该访问请求后,可以将该sid反馈至私有云的sso系统进行校验。这样,私有云的sso系统便可以接收到公有云数据中心提供的sid。

    s23:提取所述访问请求中的所述会话标识,并向公有云的单点登录系统发送包含所述会话标识的校验请求,并在所述会话标识被校验通过后,接收所述公有云的单点登录系统反馈的用户信息。

    在本实施方式中,私有云的sso系统接收到公有云数据中心提供的sid之后,便可以向公有云的sso系统请求验证该sid的合法性。当该sid被公有云的sso系统校验通过之后,公有云的sso系统便可以将本次用户登录的用户信息反馈给私有云的sso系统。

    s25:基于所述用户信息登录至私有云数据中心,并重定向至所述访问请求中的服务地址,以切换至所述服务地址表征的私有云微服务。

    在本实施方式中,私有云的sso系统接收到用户信息之后,便可以直接利用该用户信息登录私有云数据中心,并在登录之后,可以通过重定向的方式,重定向至访问请求中的服务地址,从而切换至该服务地址表征的私有云微服务,这样便可以完成公有云微服务到私有云微服务的切换过程。

    在本实施方式中,私有云的sso系统在获取到sid后,可以将sid与本次登录过程中的私有云微服务进行绑定,然后再从所述访问请求中识别出私有云微服务的服务地址,并重定向访问所述服务地址表征的私有云微服务。在实际应用中,公有云数据中心发起的访问请求可以是https://private.sso.com?service=https://b.client.com,在该访问请求中,可以携带私有云微服务的服务地址https://b.client.com。由于访问请求和服务地址的域名不同,因此浏览器需要通过重定向的方式,访问该服务地址表征的私有云微服务。

    在一个实施方式中,可以按照上文描述的方式从公有云微服务或者私有云微服务进行退出。这样,私有云的sso系统在接收到从私有云退出微服务的退出指令后,可以查询与所述会话标识相关联的已登录的私有云微服务,并向所述已登录的私有云微服务发送退出通知。然后,可以向公有云的sso系统发送所述会话标识和跳转链接,以使得所述公有云的sso系统将与所述会话标识相关联的公有云微服务退出登录后,重定向至所述跳转链接指向的页面。

    若从公有云退出微服务,私有云的sso系统可以接收公有云的sso系统发来的退出登录通知。响应于所述退出登录通知,私有云的sso系统可以查询与所述会话标识相关联的已登录的私有云微服务,并向所述已登录的私有云微服务发送退出通知。

    详细的描述过程可以参照前文描述,这里便不再赘述。

    本申请还提供一种私有云的单点登录系统,所述系统包括:

    访问请求接收单元,用于在用户已登录公有云数据中心的情况下,若从公有云微服务切换至私有云微服务,接收公有云数据中心发来的访问请求,所述访问请求中包括会话标识和所述私有云微服务的服务地址;

    校验请求单元,用于提取所述访问请求中的所述会话标识,并向公有云的单点登录系统发送包含所述会话标识的校验请求,并在所述会话标识被校验通过后,接收所述公有云的单点登录系统反馈的用户信息;

    微服务切换单元,用于基于所述用户信息登录至私有云数据中心,并重定向至所述访问请求中的服务地址,以切换至所述服务地址表征的私有云微服务。

    由上可见,本申请一个或者多个实施方式提供的技术方案,公有云微服务和私有云微服务可以分别具备各自的sso系统,如果用户需要在公有云微服务和私有云微服务之间进行切换,就涉及跨sso系统的认证过程。在该认证过程中,当从私有云微服务切换至公有云微服务时,私有云的数据中心可以向公有云的sso系统请求令牌。后续,私有云的sso系统可以向公有云的sso系统发送携带该令牌的登录校验请求,如果该登录校验请求被公有云的sso系统验证通过,那么用户便可以直接基于私有云数据中心内的用户信息登录至公有云数据中心,从而实现微服务的切换过程。而如果从公有云微服务切换至私有云微服务,公有云数据中心可以向私有云的sso系统发送携带会话标识的访问请求,私有云的sso系统可以接着向公有云的sso系统请求校验该会话标识,如果该会话标识通过校验,私有云的sso系统便可以接收到公有云的sso系统反馈的用户信息,通过该用户信息便可以直接登录至私有云数据中心,从而完成微服务的切换。可见,本申请提供的技术方案,无需用户进行多次的账号和密码的输入,而是在跨sso系统切换微服务时,两个sso系统之间可以直接完成认证过程,并顺利进行微服务的切换。该过程对用户而言是无感知的,从用户的体验来看,在不需要多次输入账号和密码的情况下,就能够实现微服务的切换过程。

    本说明书中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。尤其,针对系统的实施方式来说,均可以参照前述方法的实施方式的介绍对照解释。

    本领域内的技术人员应明白,本发明的实施方式可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施方式、完全软件实施方式、或结合软件和硬件方面的实施方式的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

    本发明是参照根据本发明实施方式的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

    这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

    这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

    在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

    内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

    计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

    还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

    以上所述仅为本申请的实施方式而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。


    技术特征:

    1.一种微服务切换方法,其特征在于,所述方法应用于公有云的单点登录系统中,所述方法包括:

    在用户已登录私有云数据中心的情况下,若从私有云微服务切换至公有云微服务,接收所述私有云数据中心发来的令牌获取请求,所述令牌获取请求中至少包括所述用户在所述私有云数据中心内的用户信息;

    响应于所述令牌获取请求,向所述私有云数据中心反馈令牌,并接收所述私有云数据中心发来的携带所述令牌的登录校验请求,所述登录校验请求中包括所述公有云微服务的服务地址;

    在验证所述登录校验请求中的令牌后,基于所述用户信息登录至公有云数据中心,并重定向至所述登录校验请求中的服务地址,以切换至所述服务地址表征的公有云微服务。

    2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

    若从所述公有云微服务切换至所述私有云微服务,接收所述公有云数据中心发来的跨域请求,响应于所述跨域请求查询本次登录的用户信息,并对所述用户信息进行加密后,生成对应的会话标识,并将所述会话标识反馈给所述公有云数据中心。

    3.根据权利要求1所述的方法,其特征在于,重定向至所述登录校验请求中的服务地址包括:

    从所述登录校验请求中识别所述公有云微服务的服务地址,并重定向访问所述服务地址表征的公有云微服务。

    4.根据权利要求1所述的方法,其特征在于,所述令牌获取请求中还包括所述私有云数据中心预先注册得到的标识信息;向所述私有云数据中心反馈令牌包括:

    查询与所述标识信息相匹配的秘钥,并利用所述秘钥对所述令牌获取请求的请求内容进行加密后得到验证签名;

    若所述验证签名与所述令牌获取请求中携带的签名一致,向所述私有云数据中心反馈令牌。

    5.根据权利要求1所述的方法,其特征在于,所述方法还包括:

    在接收到从公有云退出微服务的退出指令后,查询与所述用户信息相关联的已登录的公有云微服务,并向所述已登录的公有云微服务发送退出通知;

    对所述用户信息进行加密处理,得到会话标识,并将所述会话标识发送至私有云的单点登录系统,以使得所述私有云的单点登录系统将与所述会话标识相关联的私有云微服务退出登录。

    6.根据权利要求5所述的方法,其特征在于,将所述会话标识发送至私有云的单点登录系统包括:

    调用私有云的单点登录系统的退出接口,以向所述退出接口发起重定向访问,所述重定向访问中携带所述会话标识。

    7.根据权利要求1所述的方法,其特征在于,所述方法还包括:

    若从私有云退出微服务,接收私有云的单点登录系统发来的会话标识和跳转链接;

    查询与所述会话标识相关联的已登录的公有云微服务,向查询得到的所述已登录的公有云微服务发送退出通知,并重定向至所述跳转链接。

    8.一种公有云的单点登录系统,其特征在于,所述系统包括:

    令牌请求接收单元,用于在用户已登录私有云数据中心的情况下,若从私有云微服务切换至公有云微服务,接收所述私有云数据中心发来的令牌获取请求,所述令牌获取请求中至少包括所述用户在所述私有云数据中心内的用户信息;

    校验单元,用于响应于所述令牌获取请求,向所述私有云数据中心反馈令牌,并接收所述私有云数据中心发来的携带所述令牌的登录校验请求,所述登录校验请求中包括所述公有云微服务的服务地址;

    微服务切换单元,用于在验证所述登录校验请求中的令牌后,基于所述用户信息登录至公有云数据中心,并重定向至所述登录校验请求中的服务地址,以切换至所述服务地址表征的公有云微服务。

    9.一种微服务切换方法,其特征在于,所述方法应用于私有云的单点登录系统中,所述方法包括:

    在用户已登录公有云数据中心的情况下,若从公有云微服务切换至私有云微服务,接收公有云数据中心发来的访问请求,所述访问请求中包括会话标识和所述私有云微服务的服务地址;

    提取所述访问请求中的所述会话标识,并向公有云的单点登录系统发送包含所述会话标识的校验请求,并在所述会话标识被校验通过后,接收所述公有云的单点登录系统反馈的用户信息;

    基于所述用户信息登录至私有云数据中心,并重定向至所述访问请求中的服务地址,以切换至所述服务地址表征的私有云微服务。

    10.根据权利要求9所述的方法,其特征在于,所述会话标识按照以下方式生成:

    公有云的单点登录系统接收公有云数据中心发来的跨域请求,响应于所述跨域请求查询本次登录的用户信息,并对所述用户信息进行加密后,生成对应的会话标识,并将所述会话标识反馈给所述公有云数据中心。

    11.根据权利要求9所述的方法,其特征在于,重定向至所述访问请求中的服务地址包括:

    将所述会话标识与本次登录过程中的私有云微服务进行绑定,从所述访问请求中识别所述服务地址,并重定向访问所述服务地址表征的私有云微服务。

    12.根据权利要求9所述的方法,其特征在于,所述方法还包括:

    在接收到从私有云退出微服务的退出指令后,查询与所述会话标识相关联的已登录的私有云微服务,并向所述已登录的私有云微服务发送退出通知;

    向公有云的单点登录系统发送所述会话标识和跳转链接,以使得所述公有云的单点登录系统将与所述会话标识相关联的公有云微服务退出登录后,重定向至所述跳转链接指向的页面。

    13.根据权利要求9所述的方法,其特征在于,所述方法还包括:

    若从公有云退出微服务,接收公有云的单点登录系统发来的退出登录通知;

    响应于所述退出登录通知,查询与所述会话标识相关联的已登录的私有云微服务,并向所述已登录的私有云微服务发送退出通知。

    14.一种私有云的单点登录系统,其特征在于,所述系统包括:

    访问请求接收单元,用于在用户已登录公有云数据中心的情况下,若从公有云微服务切换至私有云微服务,接收公有云数据中心发来的访问请求,所述访问请求中包括会话标识和所述私有云微服务的服务地址;

    校验请求单元,用于提取所述访问请求中的所述会话标识,并向公有云的单点登录系统发送包含所述会话标识的校验请求,并在所述会话标识被校验通过后,接收所述公有云的单点登录系统反馈的用户信息;

    微服务切换单元,用于基于所述用户信息登录至私有云数据中心,并重定向至所述访问请求中的服务地址,以切换至所述服务地址表征的私有云微服务。

    技术总结
    本发明公开了一种微服务切换方法及系统,其中,所述方法包括:若从私有云微服务切换至公有云微服务,接收所述私有云数据中心发来的令牌获取请求,所述令牌获取请求中至少包括所述用户信息;响应于所述令牌获取请求,向所述私有云数据中心反馈令牌,并接收所述私有云数据中心发来的携带所述令牌的登录校验请求,所述登录校验请求中包括所述公有云微服务的服务地址;在验证所述登录校验请求中的令牌后,基于所述用户信息登录至公有云数据中心,并重定向至所述登录校验请求中的服务地址,以切换至所述服务地址表征的公有云微服务。本申请提供的技术方案,在切换微服务时可以避免多次的登录认证,从而提高微服务的切换效率。

    技术研发人员:郭金文;宋华花
    受保护的技术使用者:网宿科技股份有限公司
    技术研发日:2020.11.27
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-21111.html

    最新回复(0)