单点登录处理系统和单点登录处理方法

文档序号:7854862阅读:171来源:国知局
专利名称:单点登录处理系统和单点登录处理方法
技术领域
本发明涉及单点登录集成技术领域,具体而言,涉及一种单点登录处理系统和一种单点登录处理方法。
背景技术
单点登录技术现在市面上有很多的解决方案,典型的如CAS。CAS (Central Authentication Service)是 Yale 大学发起的一个开源项目,旨在为Web应用系统提供一种可靠的单点登录方法。从结构体系看,CAS包含两部分CAS Server和CAS Client,如图I所示。
CAS Server负责完成对用户的认证工作,会处理用户名/密码等凭证(Credentials),它可能会到数据库检索一条用户帐号信息,也可能在XML文件中检索用户密码,对这种方式,CAS均提供一种灵活但同一的接口 /实现分离的方式,CAS究竟是用何种认证方式,跟CAS协议是分离的,也就是,这个认证的实现细节可以自己定制和扩展。CAS Client负责部署在客户端,原则上,CAS Client的部署意味着,当有对本地Web应用的受保护资源的访问请求,并且需要对请求方进行身份认证时,Web应用不再接受任何的用户名密码等类似的Credentials,而是重定向到CAS Server进行认证。目前,CAS Client支持(某些在完善中)非常多的客户端,包括Java、. Net、ISAPI、Php> Perl、uPortal、Acegi> Ruby、VBS cript 等客户端。CAS这种类型的单点登录技术需要第三方系统集成很多辅助包,针对不同语言开发的系统对应不同的客户端程序。这种基于客户端程序的集成方案存在如下缺陷1)不能很好的利用通用技术解决语言差异性;2)加入客户端程序对原系统的侵入较大;3)无法灵活的根据用户登录状态做出不同的反应。因此,需要一种新的技术方案,可以在现有任何语言编写的客户端上实现单点登录,同时减少系统间的耦合、降低集成成本,实现灵活的插拔。

发明内容
本发明所要解决的技术问题在于,提供一种新的技术方案,可以在现有任何语言编写的客户端上实现单点登录,同时减少系统间的耦合、降低集成成本,实现灵活的插拔。有鉴于此,本发明提供了一种单点登录处理系统,包括位于认证客户端的客户端处理模块和位于认证服务器端的服务器端处理模块,所述客户端处理模块获取用户通过浏览器发出登录业务系统的请求,并提供给所述服务器端处理模块,所述服务器端处理模块从所述浏览器中获取与所述用户相关的信息记录文本,并根据所述信息记录文本判断所述用户是否已登录,并通知所述客户端处理模块,所述信息记录文本包括所述用户的用户名称,所述客户端处理模块在所述用户已登录时,从所述服务器端处理模块获取所述用户名称,并根据所述用户名称获取所述用户完整的用户信息,通过所述用户信息登录所述业务系统。
在本技术方案中,所述信息记录文本即为本技术领域中所讲的cookies,所述服务器端处理模块直接从所述浏览器中获取相关的cookies信息,进而判断相关用户的登录情况,这就使得所述单点登录处理系统在判断用户登录情况时,不会依赖于某个主业务系统,而是将各个业务系统作为同等情况进行处理,这样就提高了单点登录操作实现的灵活程度,提闻了用户体验。在上述技术方案中,优选地,所述服务器端处理模块在所述用户已登录时,根据所述用户名称生成唯一识别码,并提供给所述客户 端处理模块,所述客户端处理模块根据所述唯一识别码,从所述服务器端处理模块获取所述用户名称。通过所述服务器端处理模块在所述用户已登录时,根据所述用户名称生成所述唯一识别码,该识别码成为所述客户端处理模块在每一次从所述服务器端处理模块获取所述用户名称时的通道,这样,就使得所述客户端处理模块能够准确快速地获取到相应地用户名称,进而保证每一次所述单点登录操作实现的可靠性。在上述技术方案中,优选地,所述客户端处理模块首先从所述业务系统的数据中获取所述用户信息,无法获取到所述用户信息时,再从所述服务器端处理模块获取所述用户信息。在本技术方案中,所述用户信息可能在用户登录过之后就存在于所述业务系统之中,若如此,所述客户端处理模块直接从所述业务系统中获取该信息,将比从记录有该信息的所述服务器端处理模块获取效率更高,有利于提高用户的操作体验。但是,若所述业务系统中并未记录所述用户信息,则所述客户端处理模块只能从所述服务器端处理模块来获取该信息,同时还可以对所述业务系统完成对所述用户信息的初始化生成操作。在上述技术方案中,优选地,所述客户端处理模块在所述用户未登录或无法获取所述唯一识别码时,接收所述用户输入的所述用户信息,并通过所述用户信息实现登录。也就是说,在本技术方案中,当所述认证服务器无法正常工作时,所述单点登录处理系统也可以独立运行直接提示用户重新进行登录操作,进而减小了相关系统间的耦合,实现了灵活插拔。在上述技术方案中,优选地,所述服务器端处理模块生成动态java script文件,记录所述唯一识别码,所述客户端处理模块从所述java script文件中提取所述唯一识别码。在本技术方案中,可以利用所述java script文件来记录所述唯一识别码,基于java script脚本语言高度的通用性和灵活性,使得所述单点登录处理系统可以适应于以任何一种语言编写的客户端,大大增强了该系统的灵活性。相应地,本发明还提供了一种单点登录处理方法,包括步骤302,在认证客户端获取用户通过浏览器发出登录业务系统的请求,并提供给认证服务器端;步骤304,在所述认证服务器端,从所述浏览器中获取与所述用户相关的信息记录文本,并根据所述信息记录文本判断所述用户是否已登录,并通知所述认证客户端,所述信息记录文本包括所述用户的用户名称;步骤306,在所述认证客户端,在所述用户已登录时,从所述认证服务器端获取所述用户名称,并根据所述用户名称获取所述用户完整的用户信息,通过所述用户信息登录所述业务系统。在本技术方案中,所述信息记录文本即为本技术领域中所讲的cookies,在所述认证服务器端直接从所述浏览器中获取相关的cookies信息,进而判断相关用户的登录情况,这就使得应用所述单点登录处理方法在判断用户登录情况时,不会依赖于某个主业务系统,而是将各个业务系统作为同等情况进行处理,这样就提高了单点登录操作实现的灵活程度,提高了用户体验。在上述技术方案中,优选地,所述步骤304还包括在所述用户已登录时,根据所述用户名称生成唯一识别码,并提供给所述认证客户端;所述步骤306包括根据所述唯一识别码,从所述认证服务器端获取所述用户名称。通过在所述用户已登录时,根据所述用户名称生成所述唯一识别码,该识别码成为每一次从所述认证服务器端获取所述用户名称时的通道,这样,就能够准确快速地获取到相应地用户名称,进而保证每一次所述单点登录操作实现的可靠性。在上述技术方案中,优选地,所述步骤306包括首先从所述业务系统的数据中获取所述用户信息,无法获取到所述用户信息时,再从所述认证服务器端获取所述用户信息。在本技术方案中,所述用户信息可能在用户登录过之后就存在于所述业务系统之中,若如此,可以直接从所述业务系统中获取该信息,将比从记录有该信息的所述认证服务器端获取效率更高,有利于提高用户的操作体验。但是,若所述业务系统中并未记录所述用户信息,则只能从所述认证服务器端来获取该信息,同时还可以对所述业务系统完成对所述用户信息的初始化生成操作。在上述技术方案中,优选地,所述步骤306还包括在所述用户未登录或无法获取所述唯一识别码时,接收所述用户输入的所述用户信息,并通过所述用户信息实现登录。也就是说,在本技术方案中,当所述认证服务器无法正常工作时,应用所述单点登录处理方法 也可以通过直接提示用户重新进行登录来完成相关功能,进而减小了相关系统间的耦合,实现了灵活插拔。在上述技术方案中,优选地,所述步骤302还包括生成动态java script文件,记录所述唯一识别码;所述步骤304还包括从所述java script文件中提取所述唯一识别码。在本技术方案中,可以利用所述java script文件来记录所述唯一识别码,基于java script脚本语言高度的通用性和灵活性,使得所述单点登录处理方法可以适应于以任何一种语言编写的客户端,增大了该方法的适用范围。通过以上技术方案,可以在现有任何语言编写的客户端上实现单点登录,同时减少系统间的耦合、降低集成成本,实现灵活的插拔。


图I示出了相关技术中的CAS的结构简图;图2示出了根据本发明的实施例的单点登录处理系统的框图;图3示出了根据本发明的实施例的单点登录处理方法的流程图;图4示出了根据本发明的实施例的CAS Server端动态JS生成过程的示意图;图5示出了根据本发明的实施例的CAS Client端动态JS验证过程的示意图;图6示出了根据本发明的实施例的单点登录处理方法利用JS技术实现的流程图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式
对本发明进行进一步的详细描述。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。图2示出了根据本发明的实施例的单点登录处理系统的框图。如图2所示,根据本发明的实施例的单点登录处理系统200,包括位于认证客户端的客户端处理模块202和位于认证服务器端的服务器端处理模块204,所述客户端处理模块202获取用户通过浏览器发出登录业务系统的请求,并提供给所述服务器端处理模块204,所述服务器端处理模块204从所述浏览器中获取与所述用户相关的信息记录文本,并 根据所述信息记录文本判断所述用户是否已登录,并通知所述客户端处理模块202,所述信息记录文本包括所述用户的用户名称,所述客户端处理模块202在所述用户已登录时,从所述服务器端处理模块204获取所述用户名称,并根据所述用户名称获取所述用户完整的用户信息,通过所述用户信息登录所述业务系统。在本技术方案中,所述信息记录文本即为本技术领域中所讲的cookies,所述服务器端处理模块204直接从所述浏览器中获取相关的cookies信息,进而判断相关用户的登录情况,这就使得所述单点登录处理系统200在判断用户登录情况时,不会依赖于某个主业务系统,而是将各个业务系统作为同等情况进行处理,这样就提高了单点登录操作实现的灵活程度,提高了用户体验。在上述技术方案中,优选地,所述服务器端处理模块204在所述用户已登录时,根据所述用户名称生成唯一识别码,并提供给所述客户端处理模块202,所述客户端处理模块202根据所述唯一识别码,从所述服务器端处理模块204获取所述用户名称。通过所述服务器端处理模块204在所述用户已登录时,根据所述用户名称生成所述唯一识别码,该识别码成为所述客户端处理模块202在每一次从所述服务器端处理模块204获取所述用户名称时的通道,这样,就使得所述客户端处理模块202能够准确快速地获取到相应地用户名称,进而保证每一次所述单点登录操作实现的可靠性。在上述技术方案中,优选地,所述客户端处理模块202首先从所述业务系统的数据中获取所述用户信息,无法获取到所述用户信息时,再从所述服务器端处理模块204获取所述用户信息。在本技术方案中,所述用户信息可能在用户登录过之后就存在于所述业务系统之中,若如此,所述客户端处理模块202直接从所述业务系统中获取该信息,将比从记录有该信息的所述服务器端处理模块204获取效率更高,有利于提高用户的操作体验。但是,若所述业务系统中并未记录所述用户信息,则所述客户端处理模块202只能从所述服务器端处理模块204来获取该信息,同时还可以对所述业务系统完成对所述用户信息的初始化生成操作。在上述技术方案中,优选地,所述客户端处理模块202在所述用户未登录或无法获取所述唯一识别码时,接收所述用户输入的所述用户信息,并通过所述用户信息实现登录。也就是说,在本技术方案中,当所述认证服务器无法正常工作时,所述单点登录处理系统200也可以独立运行直接提示用户重新进行登录操作,进而减小了相关系统间的耦合,实现了灵活插拔。
在上述技术方案中,优选地,所述服务器端处理模块204生成动态java script文件,记录所述唯一识别码,所述客户端处理模块202从所述java script文件中提取所述唯一识别码。在本技术方案中,可以利用所述java script文件来记录所述唯一识别码,基于java script脚本语言高度的通用性和灵活性,使得所述单点登录处理系统200可以适应于以任何一种语言编写的客户端,大大增强了该系统的灵活性。图3示出了根据本发明的实施例的单点登录处理方法的流程图。如图3所示,根据本发明的实施例的单点登录处理方法,包括步骤302,在认证客户端获取用户通过浏览器发出登录业务系统的请求,并提供给认证服务器端;步骤304,在所述认证服务器端,从所述浏览器中获取与所述用户相关的信息记录文本,并根据所述信息记录文本判断所述用户是否已登录,并通知所述认证客户端,所述信息记录文本包括所述用户的用户名称;步骤306,在所述认证客户端,在所述用户已登录时,从所述认证服务 器端获取所述用户名称,并根据所述用户名称获取所述用户完整的用户信息,通过所述用户信息登录所述业务系统。在本技术方案中,所述信息记录文本即为本技术领域中所讲的cookies,在所述认证服务器端直接从所述浏览器中获取相关的cookies信息,进而判断相关用户的登录情况,这就使得应用所述单点登录处理方法在判断用户登录情况时,不会依赖于某个主业务系统,而是将各个业务系统作为同等情况进行处理,这样就提高了单点登录操作实现的灵活程度,提高了用户体验。在上述技术方案中,优选地,所述步骤304还包括在所述用户已登录时,根据所述用户名称生成唯一识别码,并提供给所述认证客户端;所述步骤306包括根据所述唯一识别码,从所述认证服务器端获取所述用户名称。通过在所述用户已登录时,根据所述用户名称生成所述唯一识别码,该识别码成为每一次从所述认证服务器端获取所述用户名称时的通道,这样,就能够准确快速地获取到相应地用户名称,进而保证每一次所述单点登录操作实现的可靠性。在上述技术方案中,优选地,所述步骤306包括首先从所述业务系统的数据中获取所述用户信息,无法获取到所述用户信息时,再从所述认证服务器端获取所述用户信息。在本技术方案中,所述用户信息可能在用户登录过之后就存在于所述业务系统之中,若如此,可以直接从所述业务系统中获取该信息,将比从记录有该信息的所述认证服务器端获取效率更高,有利于提高用户的操作体验。但是,若所述业务系统中并未记录所述用户信息,则只能从所述认证服务器端来获取该信息,同时还可以对所述业务系统完成对所述用户信息的初始化生成操作。在上述技术方案中,优选地,所述步骤306还包括在所述用户未登录或无法获取所述唯一识别码时,接收所述用户输入的所述用户信息,并通过所述用户信息实现登录。也就是说,在本技术方案中,当所述认证服务器无法正常工作时,应用所述单点登录处理方法也可以通过直接提示用户重新进行登录来完成相关功能,进而减小了相关系统间的耦合,实现了灵活插拔。在上述技术方案中,优选地,所述步骤302还包括生成动态java script文件,记录所述唯一识别码;所述步骤304还包括从所述java script文件中提取所述唯一识别码。在本技术方案中,可以利用所述java script文件来记录所述唯一识别码,基于java script脚本语言高度的通用性和灵活性,使得所述单点登录处理方法可以适应于以任何一种语言编写的客户端,增大了该方法的适用范围。图4示出了根据本发明的实施例的CAS Server端动态JS生成过程的示意图。如图4所示,根据本发明的实施例的CAS Server (即所述认证服务器)端动态JS生成过程如下
步骤402,所述认证服务器端获取到浏览器的请求。用户在CAS Server服务器新i曾接口,t匕如 http: //uop. yonyou. com/home/loginstat. isp random=34323453432,所述认证服务器端通过浏览器对该请求的访问,获取到浏览器中关于登录用户的cookies信息。步骤404,所述认证服务器端在内存中校验cookies值的正确性及时间有效性,具体而言,包括第三方系统域名合法性、第三方系统请求时间合法性、第三方系统密钥合法性
坐寸o步骤406,根据所述步骤404的校验结果,判断用户是否已登录过所述CASServer,并根据该结果生成反馈动态JS代码若用户未登录过,则反馈的JS代码内容为var_loginstat=false ;若用户已经登录过,贝U反馈的JS代码内容为var_lo ginstat=true ;var_i sExpired=false ;var_uuid=550E8400E29BllD4A716446655440000o图4仅为上述流程的示意图,其中的箭头仅用于示意,并非表示所述步骤的绝对顺序或者所述步骤中数据的流动方向。图5示出了根据本发明的实施例的CAS Client端动态JS验证过程的示意图。如图5所示,根据本发明的实施例的CAS Client端(即所述客户端)动态JS验证过程如下步骤502,用户登录所述CAS Server,并通过校验(比如密码校验、验证码校验等),判断用户是否登录成功若否,则返回登录失败的信息;若是,则改变浏览器的内存状态、生成相关的cookies,并返回登录完成的信息。步骤504,对于任意语言的CAS Client端程序,比如jsp程序端,通过在第三方系统首页增加下面代码〈script type="text/javascript"src=〃http://uop. yonyou. com/home/loRinstat. isp random=34323453432”>〈/script〉说明参数random是一个随机参数,防止出现浏览器请求缓存,对请求本身没有意义。引用在上述步骤406中生成的JS。当所述用户登录第三方业务系统时,根据该JS的反馈结果,在页面进行JS认证,由该动态JS内容决定所述第三方系统的转向策略,其逻辑如下〈script type= "text/javascript "> if (typeof(—loginstat) != "undefined") { if(_!oginstat){ if(!_isExpired) {
window.]ocation.href="/whereisgoing.do";
}
}else{
window, location.href = nhttp:/7www. 52 丨 test.com/login.html'1;
}
}e!se {
window.location.href = "http://yae. 521test.com/login.html";
}
</script>之后,CAS Client端通过过滤所述JS反馈的信息,获取其中所述用户登录生成的uuid(Universally Unique Identifier,即通用唯一标识码),并向所述 CAS Server 端发起对所述uuid的校验。步骤506,对于所述uuid的校验完成后,所述CAS Client端根据所述uuid进行用户校验,以获取相对应的所述用户名称。图6示出了根据本发明的实施例的单点登录处理方法利用JS技术实现的流程图。如图6所示,根据本发明的实施例的单点登录处理方法利用JS技术实现的流程如下步骤602,在各个业务系统中嵌入单点登录认证服务器的javascript。步骤604,通过分析获得的javascript文件,判断用户是否登录,如果没有登录,则提示用户进行登录,如果已登录,则可以获取当前用户本次登录的唯一识别码。步骤606,根据已登录用户的唯一标示作为参数,调用网页服务获取到当前登录用户的真正用户名称。步骤608,根据所述用户名称加载本业务系统中完整的用户信息,如果所述用户名称在本业务系统中不存在,则可以通过所述用户名称作为所述网页服务的参数从所述认证服务器获取完整的用户信息完成初始化操作。以上结合附图详细说明了本发明的技术方案。通过本技术方案的应用,可以在现有任何语言编写的客户端上实现单点登录,同时减少系统间的耦合、降低集成成本,实现灵 活的插拔。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种单点登录处理系统,其特征在于,包括位于认证客户端的客户端处理模块和位于认证服务器端的服务器端处理模块,所述客户端处理模块获取用户通过浏览器发出登录业务系统的请求,并提供给所述服务器端处理模块,所述服务器端处理模块从所述浏览器中获取与所述用户相关的信息记录文本,并根据所述信息记录文本判断所述用户是否已登录,并通知所述客户端处理模块,所述信息记录文本包括所述用户的用户名称,所述客户端处理模块在所述用户已登录时,从所述服务器端处理模块获取所述用户名称,并根据所述用户名称获取所述用户完整的用户信息,通过所述用户信息登录所述业务系统。
2.根据权利要求I所述的单点登录处理系统,其特征在于,所述服务器端处理模块在所述用户已登录时,根据所述用户名称生成唯一识别码,并提供给所述客户端处理模块,所述客户端处理模块根据所述唯一识别码,从所述服务器端处理模块获取所述用户名称。
3.根据权利要求I所述的单点登录处理系统,其特征在于,所述客户端处理模块首先从所述业务系统的数据中获取所述用户信息,无法获取到所述用户信息时,再从所述服务器端处理模块获取所述用户信息。
4.根据权利要求I所述的单点登录处理系统,其特征在于,所述客户端处理模块在所述用户未登录或无法获取所述唯一识别码时,接收所述用户输入的所述用户信息,并通过所述用户信息实现登录。
5.根据权利要求I至4中任一项所述的单点登录处理系统,其特征在于,所述服务器端处理模块生成动态java script文件,记录所述唯一识别码,所述客户端处理模块从所述java script文件中提取所述唯一标示码。
6.一种单点登录处理方法,其特征在于,包括 步骤302,在认证客户端获取用户通过浏览器发出登录业务系统的请求,并提供给认证服务器端; 步骤304,在所述认证服务器端,从所述浏览器中获取与所述用户相关的信息记录文本,并根据所述信息记录文本判断所述用户是否已登录,并通知所述认证客户端,所述信息记录文本包括所述用户的用户名称; 步骤306,在所述认证客户端,在所述用户已登录时,从所述认证服务器端获取所述用户名称,并根据所述用户名称获取所述用户完整的用户信息,通过所述用户信息登录所述业务系统。
7.根据权利要求6所述的单点登录处理方法,其特征在于,所述步骤304还包括在所述用户已登录时,根据所述用户名称生成唯一识别码,并提供给所述认证客户端; 所述步骤306包括根据所述唯一识别码,从所述认证服务器端获取所述用户名称。
8.根据权利要求6所述的单点登录处理方法,其特征在于,所述步骤306包括 首先从所述业务系统的数据中获取所述用户信息,无法获取到所述用户信息时,再从所述认证服务器端获取所述用户信息。
9.根据权利要求6所述的单点登录处理方法,其特征在于,所述步骤306还包括 在所述用户未登录或无法获取所述唯一识别码时,接收所述用户输入的所述用户信息,并通过所述用户信息实现登录。
10.根据权利要求6至9中任一项所述的单点登录处理方法,其特征在于,所述步骤302还包括生成动态java script文件,记录所述唯一识别码;所述步骤304还包括从 所述java script文件中提取所述唯一标示码。
全文摘要
本发明提供了一种单点登录处理系统,包括客户端处理模块和服务器端处理模块,所述客户端处理模块获取用户发出的登录请求,并提供给所述服务器端处理模块,所述服务器端处理模块从浏览器中获取相关的信息记录文本,并据此判断所述用户是否已登录,并通知所述客户端处理模块,若是,则所述客户端处理模块从所述服务器端处理模块获取所述用户名称,进而获取所述用户的完整用户信息以实现登录。相应地,本发明还提供了一种单点登录处理方法。通过本发明的技术方案,可以在现有任何语言编写的客户端上实现单点登录,同时减少系统间的耦合、降低集成成本,实现灵活的插拔。
文档编号H04L29/08GK102739678SQ20121022268
公开日2012年10月17日 申请日期2012年6月28日 优先权日2012年6月28日
发明者王国伟, 黄雄 申请人:用友软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1