发明内容
本发明的实施例提供一种跨域名单点登录和注销的方法、系统及相应设备,以便提高跨域名单点登录和注销的效率。
为达到上述目的,本发明的实施例采用如下技术方案:
一种跨域名单点登录的方法,在单点代理组件拦截用户端向联盟应用端发送的访问请求之后,包括:
当所述用户端是首次登陆所述联盟应用端时,所述单点代理组建对所述用户端进行二次验证;
若二次验证通过,则所述单点代理组件从所述单点登录服务器获取同步令牌;
所述单点代理组件校验所述同步令牌是否正确;
若校验结果代表所述同步令牌正确,则所述单点代理组件从所述单点登录服务器获取对应所述同步令牌的用户信息,并将所述用户信息以及所述同步令牌保存在所述联盟应用端的本地缓存中。
一种跨域名单点注销的方法,在单点代理组件将用户信息以及同步令牌保存在联盟应用端的本地缓存中后,包括:
所述单点代理组件将所述联盟应用端的地址注册到单点登录服务器的终端注册表中,以记录保存了所述用户信息以及同步令牌的联盟应用端。
一种联盟应用端,包括:单点代理组件和联盟应用系统,其中,所述单点代理组件包括:
拦截单元,用于拦截用户端向所述联盟应用系统发送的访问请求;
验证单元,用于当所述用户端是首次登陆所述联盟应用端时,对所述用户端进行二次验证;
获取单元,用于若验证单元的二次验证通过,则从单点登录服务器获取同步令牌;
校验单元,用于校验所述同步令牌是否正确;
本地缓存单元,用于若校验单元的校验结果代表所述同步令牌正确,则所从所述单点登录服务器获取对应所述同步令牌的用户信息,并将所述用户信息以及所述同步令牌保存在所述联盟应用系统的本地缓存中。
一种跨域名单点登录和注销的系统,包括:用户端,单点登录服务器,单点代理组件以及联盟应用端;其中,
所述单点代理组件,用于在拦截所述用户端向所述联盟应用端发送的访问请求后,当所述用户端是首次登陆所述联盟应用端时,对所述用户端进行二次验证;若二次验证通过,则从所述单点登录服务器获取同步令牌,并校验所述同步令牌是否正确;若校验结果代表所述同步令牌正确,则所述从所述单点登录服务器获取对应所述同步令牌的用户信息,并将所述用户信息以及所述同步令牌保存在所述联盟应用端的本地缓存中。
本发明实施例提供的技术方案具有如下有益效果:通过采用在联盟应用端的本地缓存中保存用户信息和令牌的技术方案,可减少每次单点登录时认证中心与联盟应用端的验证交互过程,取得了可提高跨域名单点登录效率的技术效果;通过将保存有用户信息和令牌的联盟应用端记录到单点登录服务器上的技术手段,可使在注销时无需一一遍历每个联盟应用端,直接确定需要删除的联盟应用端,从而提高了跨域名单点注销的效率。
具体实施方式
本发明实施例提供了一种跨域名单点登录的方法,如图1所示,该方法主要包括如下步骤:
步骤101,用户端通过单点登录服务器进行正常登陆,登陆成功后,单点登录服务器将分发给该用户端的令牌存储到浏览器的cookie中。所述用户端发送访问请求到想要访问的联盟应用端。运行在所述联盟应用端上的单点代理组件拦截所述用户端向所述联盟应用端发送的访问请求;
需要说明的是:在本发明的各个实施例中为了简便网络构架,将单点代理组件部署在了运行联盟应用系统的联盟应用端上,即单点代理组件和联盟应用系统皆运行在联盟应用端上。
步骤102,所述单点代理组件根据cookie中存储的所述用户端的令牌获知所述用户端是否登录过所述联盟应用端;当获知所述用户端是首次登陆所述联盟应用端时,所述单点代理组件对所述用户端进行二次验证;
步骤103,若二次验证结果代表验证通过,则所述单点代理组件从所述单点登录服务器获取同步令牌;
步骤104,所述单点代理组件校验所述同步令牌是否正确;
步骤105,若校验结果代表所述同步令牌正确,则所述单点代理组件从所述单点登录服务器获取对应所述同步令牌的用户信息,并将所述用户信息以及所述同步令牌保存在所述联盟应用端的本地缓存中。
上述跨域名单点登录的方法通过采用在联盟应用端的本地缓存中保存用户信息和令牌的技术方案,可减少每次单点登录时认证中心与联盟应用端的验证交互过程,取得了可提高跨域名单点登录效率的技术效果。
本发明实施例还提供了一种跨域名单点注销的方法,该方法主要包括:
在单点代理组件将用户信息以及同步令牌保存在其所属的联盟应用端的本地缓存中之后,所述单点代理组件将所述联盟应用端的地址注册到单点登录服务器的终端注册表中,以便该单点登录服务器记录下保存了所述用户信息以及同步令牌的联盟应用端。
本实施例提供的跨域名注销的方法,通过采用将保存有用户信息和令牌的联盟应用端记录到单点登录服务器上的技术手段,可便于单点登录服务器在注销时直接确定需要删除的联盟应用端,无需一一遍历每个联盟应用端,从而提高了跨域名单点注销的效率。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。并且,以下各实施例均为本发明的可选方案,实施例的排列顺序及实施例的编号与其优选执行顺序无关。
实施例1
本实施例具体提供一种跨域名单点登录和注销的方法,如图2所示,该方法包括:
步骤201,用户端通过单点登录服务器进行正常登陆,登陆成功后,单点登录服务器将分发给该用户端的令牌存储到浏览器的cookie中。所述用户端发送访问请求到想要访问的联盟应用端1。运行在所述联盟应用端上1的单点代理组件拦截所述用户端向所述联盟应用端1发送的访问请求。
步骤202,单点代理组件可根据在cookie中存储的所述令牌获知所述用户端是否登录过联盟应用端1。在获知所述用户端是首次登录过联盟应用端1时,执行步骤203;在获知所述用户端是在首次登陆之后的再次登陆时,即所述用户端登陆过所述联盟应用端时,则执行步骤206。
具体地,步骤202的可通过如下方式实现:单点代理组件验证所述cookie中存储的令牌的令牌值是否为空,若令牌值为空,则代表对应的用户端是首次登录联盟应用端1,并执行步骤203;若令牌值不为空,则代表对应的用户端登陆过联盟应用端1,并执行步骤206。
步骤203,单点代理组件对所述用户端进行二次验证。若二次验证结果代表通过,则执行步骤204;否则可按现有技术进行相应处理,并不再执行下述步骤。
该二次验证的过程实际上就是因为所述用户端在首次登陆时,令牌的令牌值为空,为了获取到有令牌值的令牌而进行的一次验证过程。
具体地,步骤203的可通过如下方式实现:进行二次验证的过程包括:所述单点代理组件重定向所述单点登录服务器,请求所述单点登录服务器对所述用户端进行再次验证。该二次验证实际上是为了单点代理组件能够从改单点登录服务上获取到该用户端的令牌。由于用户端登录以及验证的服务器都是通过该单点登录服务器进行的,并且属于同一域,所以二次验证应该是通过的。所以,若所述再次验证结果代表所述用户端通过验证,则执行步骤204;否则可按现有技术进行相应处理,例如:重定向登录页面,或提示错误。
步骤204,所述单点代理组件从所述单点登录服务器获取同步令牌。
具体地,步骤204的可通过如下方式实现:若所述再次验证结果代表所述用户端通过验证,则所述单点登录服务器再次重定向到用户访问页面,并携带访问地址和发送包含所述用户端的同步令牌的请求到所述联盟应用端1,所述单点代理组件拦截所述请求,并从该请求中获取所述同步令牌。
步骤205,所述单点代理组件校验该获取的同步令牌是否正确。该校验可以按照现有技术的方式进行。例如:对同步令牌进行解密,并判断解密后的结果以校验该同步令牌是否合格等。
若校验结果代表所述同步令牌正确,则所述单点代理组件从所述单点登录服务器获取对应所述同步令牌的用户信息,将所述校验正确的同步令牌存储到浏览器的cookie中,并将所述用户信息以及所述同步令牌保存在所述联盟应用端1本地缓存中。这样,在以后的每次登录时,联盟应用端就不需要每次都与单点登录服务器进行重新交互从而获取到用户信息来进行访问了。
同时,所述单点代理组件将联盟应用端1的地址注册到单点登录服务器的终端注册表中,以使该单点登录服务器记录保存了所述用户信息以及同步令牌的联盟应用端1,并不再执行下述步骤206,就此结束获取用户信息的流程。
由于该用户端还可能登陆联盟应用端2、联盟应用端3......等,所以,对于其中任何一个联盟应用端都可以将其看作联盟应用端1,进而执行上述各个步骤,从而在该单点登录服务器上的终端注册表中,最终将会记录下保存了该用户端的用户信息以及同步令牌的所有联盟应用端。
若校验结果代表所述同步令牌不正确,则可按现有技术进行相应处理,例如:重新返回登录页面执行,或提示出错信息,并不再执行下述步骤206。
步骤206,因为在首次登陆所述联盟应用端1时,在联盟应用端1的本地缓存中应该存储有该用户端的用户信息以及对应的同步令牌,所以,在获知所述用户端是再次登陆所述联盟应用端1时,所述单点代理组件在所述本地缓存中查找是否有与所述令牌相同的同步令牌;若查找到相同的同步令牌则调用与之对应的用户信息,以便所述联盟应用端凭借所述用户信息进行访问,若未查找到则可重定向到登陆页面。
由于在上述步骤205中,在单点代理组件将用户信息以及同步令牌保存在联盟应用端的本地缓存中后,所述单点代理组件将所述联盟应用端的地址注册到单点登录服务器的终端注册表中,因此,在该单点登录服务器接收到来自用户端的注销登录过的联盟应用端指示之后,可按照如下步骤执行:
步骤207,所述单点登录服务器根据所述终端注册表获取所述用户端登陆过的至少一个联盟应用端的注册地址。
具体地,假设,该用户端仅登录过联盟应用端1,则该终端注册表上将仅记录了该联盟应用端1的地址,那么,该单点登录服务器从该终端注册表中读取到联盟应用端1的地址。
步骤208,所述单点登录服务器按照所述注册地址通知对应的联盟应用端1删除其保存在本地缓存中的所述用户端的用户信息和同步令牌。联盟应用端1在接收到该指示后,将本地缓存中的对应的该用户信息和同伴令牌删除。
当该用户端再次访问联盟应用端1的时候,由于用户端1同步令牌缓存已经不存在,所以单点代理组件就会重新到单点登录服务端进行验证,即执行步骤201。
本发明实施例提供的技术方案具有如下有益效果:通过采用在联盟应用端的本地缓存中保存用户信息和令牌的技术方案,可减少每次单点登录时认证中心与联盟应用端的验证交互过程,取得了可提高跨域名单点登录效率的技术效果;通过将保存有用户信息和令牌的联盟应用端记录到单点登录服务器上的技术手段,可使在注销时无需一一遍历每个联盟应用端,直接确定需要删除的联盟应用端,从而提高了跨域名单点注销的效率。
实施例2
本实施例提供一种联盟应用端300,可作为实施例1中的联盟应用端1进行使用。该联盟应用端300,如图3所示,包括:单点代理组件400和联盟应用系统500,其中,
单点代理组件400包括:拦截单元41,验证单元42,获取单元43,校验单元44,本地缓存单元45。
拦截单元41,用于拦截用户端向所述联盟应用系统发送的访问请求;验证单元42,用于在拦截单元41拦截访问请求后,当所述用户端是首次登陆所述联盟应用端时,对所述用户端进行二次验证;获取单元43,用于若验证单元42的二次验证结果代表所述用户端登录过所述联盟应用系统,则从单点登录服务器获取同步令牌;校验单元44,用于校验验证单元42获取的同步令牌是否正确;本地缓存单元45,用于若校验单元44的校验结果代表所述同步令牌正确,则所从所述单点登录服务器获取对应所述同步令牌的用户信息,并将所述用户信息以及所述同步令牌保存在所述联盟应用系统500的本地缓存中。
另外,在本实施例中,该单点代理组件400还可包括如下单元:查找单元46,调用单元40;注册单元47,接收单元48,删除单元49。
查找单元46,用于当所述用户端在首次登陆之后再次登陆所述联盟应用端时在所述本地缓存中查找是否有本地缓存单元45缓存的与所述令牌相同的同步令牌;调用单元40,用于在查找单元46查找到相同的同步令牌后,在本地缓存中调用与之对应的用户信息,以便所述联盟应用系统凭借所述用户信息进行访问。
注册单元47,用于将所述联盟应用系统的地址注册到所述单点登录服务器的终端注册表中;接收单元48,用于接收来自所述单点登录服务器的删除请求,所述删除请求是所述单点登录服务器按照所述注册单元在所述终端注册表中注册的地址发送而来的;删除单元49,用于在接收单元48接收所述删除请求后删除其保存在本地缓存中的所述用户端的用户信息和同步令牌。
本实施例提供的联盟应用端具有如下有益效果:跨域单点登录时,具有将用户信息保存在本地缓存中的功能,可减少了联盟应用端与单点登录服务器之间的交互,提高了跨域单点登录的效率。同时,具有注册通知机制与令牌缓存机制的功能,可提高了单点登录的全局注销的效率。
另外,在本实施例提到的用户端,主要指访问应用联盟的用户端;
单点登录服务器也就是认证中心服务器,主要用于用户端的用户名和密码,以及用户端的认证令牌等有效信息都存储在这个单点登录服务的系统中,根据当前令牌值从其上对应的终端注册表中获得所有已经登录的联盟应用端的注册地址,并且联盟应用端300和单点登录服务器交互时的令牌验证、全局注销的处理。
联盟应用系统500:运行在联盟应用端300上的,主要用于提供单点登录的各个应用系统。
本实施例在用户端首次登陆后,以后的每次登录访问同一个联盟应用端时,已无需该联盟应用端再与单点登录服务器之间进行多次交互获取用户信息,从而提高了登录的效率,并且。因为单点代理组件具有注册通知机制与令牌缓存机制的功能,所以单点登录服务器在注销时直接确定需要删除的联盟应用端,无需一一遍历每个联盟应用端,从而提高了跨域名单点注销的效率。
实施例3
本实施例具体提供一种跨域名单点登录和注销的系统,如图4所示,包括:用户端61,单点登录服务器62,单点代理组件63以及包含所述单点代理组件63的联盟应用端64。
其中,单点代理组件63,用于在拦截所述用户端61向所述联盟应用端64发送的访问请求后,当所述用户端61是首次登陆所述联盟应用端64时,对所述用户端61进行二次验证;若二次验证结果代表所述用户端61登录过所述联盟应用端64,则所述单点代理组件63从单点登录服务器62获取同步令牌,并校验所述同步令牌是否正确;若校验结果代表所述同步令牌正确,则所述从所述单点登录服务器62获取对应所述同步令牌的用户信息,并将所述用户信息以及所述同步令牌保存在所述联盟应用端64的本地缓存中。
并且,在本实施例中,在所述用户端的用户信息以及所述同步令牌保存在所述联盟应用端的本地缓存中后,单点代理组件63,还用于当所述用户端61在首次登陆之后再次登陆所述联盟应用端64时,在所述本地缓存中查找是否有与所述令牌相同的同步令牌;若查找到相同的同步令牌则调用与之对应的用户信息,以便所述联盟应用端64凭借所述用户信息进行访问。
此外,单点代理组件63,还用于在用户信息以及同步令牌保存在述联盟应用端64的本地缓存中后,将所述联盟应用端64的地址注册到单点登录服务器62的终端注册表中,以记录保存了所述用户信息以及同步令牌的联盟应用端。
相应地,该单点登录服务器62,还用于接收来自所述用户端61的注销登录过的联盟应用端指示之后,根据所述终端注册表获取所述用户端登陆过的至少一个联盟应用端的注册地址,并按照所述注册地址通知对应的联盟应用端删除其保存在本地缓存中所述用户端61的用户信息和同步令牌。
本发明实施例提供的系统具有如下有益效果:通过采用在联盟应用端的本地缓存中保存用户信息和令牌的技术方案,可减少每次单点登录时认证中心与联盟应用端的验证交互过程,取得了可提高跨域名单点登录效率的技术效果;通过将保存有用户信息和令牌的联盟应用端记录到单点登录服务器上的技术手段,可使在注销时无需一一遍历每个联盟应用端,直接确定需要删除的联盟应用端,从而提高了跨域名单点注销的效率。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台设备(可以是笔记本电脑等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。