基于Cookie的单点登录方法、系统及其应用服务器的制作方法

文档序号:7555338阅读:161来源:国知局
专利名称:基于Cookie的单点登录方法、系统及其应用服务器的制作方法
技术领域
本发明涉及网络通信技术,更为具体而言,涉及一种基于Cookie的单点登录方法、系统及其应用服务器。
背景技术
单点登录系统SSO (Single Sign-On)也称作统一的身份认证系统,指用户使用系统时只需进行一次身份认证,随后根据用户权限便可以访问在系统允许的范围内的所有网络资源,而不需要多次登录不同的子系统或者在使用处于不同的计算机环境中的所有网络资源时重复进行用户身份认证的过程。当前单点登录实现方案主要分为三种类型:一是基于Oauth协议(一种为用户资源的授权提供了一个安全的、开放而又简易的标准)的网络令牌的机制;二是基于WebService或简单Http协议(即超文本传输协议)实现的Passport机制;三是以OpenID框架(一种以用户为中心的数字身份识别框架)形成的通用账号登录机制。其中,基于Oauth协议主要应用在网站外部,比较知名的有脸书链接(Facebook Connect)和新浪微博链接等;Passport机制的应用主要是针对同一网站内不同架构不同平台,如Google Account账号基本上可以应用于所有Google的网站;至于OpenID此类需共享用户信息的方案,则在国外被广泛采纳。目前企业信息门户基于Web的系统大多可以完成单点登录这一目标,基于Web的电子商务平台需要统一身份认证和资源访问控制机制,而基于Cookie的单点登录系统是一种很好的解决方案,但是,本发明的发明人发现基于Cookie的单点登录方案存在以下几个技术问题:(I)重放攻击。重放攻击(Iteplay Attacks)又称重播攻击、回放攻击或新鲜性攻击(Freshness Attacks),是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。这种攻击会不断恶意或欺诈性地重复一个有效的数据传输,重放攻击可以由发起者,也可以由拦截并重发该数据的敌方进行。攻击者利用网络监听或者其他方式盗取认证凭据,之后再把它重新发给认证服务器。虽然加密可以有效防止会话劫持,但是不能防止重放攻击。(2)频繁访问数据库。在高负荷访问和大量并发请求的大型网站中,从系统安全和性能出发,需考虑避免频繁的访问和操作数据库。由于应用系统获得客户端Cookie的认证信息和用户请求的IP地址,都需要去数据库服务器进行验证,来判断客户端的认证信息是否真的有效,以及对应的用户是谁。如果黑客利用伪造Cookie的认证信息,对服务器进行频繁请求,在验证客户端Cookie的认证信息实效性和真实性时,将产生与请求量成正比的数据库访问性能消耗。(3)Cookie篡改。主要以获取模拟和隐私权泄密著称的技术,通过维护客户(或终端用户)身份的会话信息操纵来实现的。通过伪造Cookie,一个黑客可以模拟一个有效的客户,因此获取详细信息并执行代表病毒的行为。
(4)跨域单点登录。Cookie的存取只对同一域下的主机有效,分布式应用系统往往不能保证所有的主机都在同一域下。当用户登录加入SSO认证体系里的一台服务器时,例如服务器A,客户机浏览器可以将获得的登录用户票据记录到本地Cookie中,当此客户机转而访问服务器B的时候,为了实现单点登录,服务器B必须要获得标识用户登录状态的票据作为凭证来进行验证,而此票据存储于先前访问服务器A时留下的Cookie,此Cookie只对来自服务器A域里的访问有效,为获取访问其他域主机的Cookie,必需实现跨域共享Cookie。

发明内容
针对上述技术问题,本发明提供了一种基于Cookie的单点登录方法,可以有效地防止重放攻击、频繁访问数据库、Cookie篡改,并实现跨域单点登录。Cookie的本质是一个文件,在用户登陆Web服务器时创建的,并且将信息存储在该文件中。作为存储用户的识别信息出现的Cookie机制,其作用是记录用户在该站点上曾经访问的页面,甚至进行简单的设置,那么在用户下一次访问时就能够提供个性化的页面设置和信息。更重要的是Cookies也可以存储个人的登陆信息和其他识别信息,在下次登录时对用户进行识别。当用户通过浏览器向一个Web服务器发出请求时,Web服务器上的代理程序会将它重定向到认证授权服务器,认证授权服务器会要求用户提供登录所需的用户名和密码等信息。当认证授权服务器接收信息并且通过认证之后将发送一个身份确认信息给用户,而这个身份确认的信息就是Cookie,Cookie将保存在用户的浏览器中。如果用户需要对其他的页面进行操作,其他的Web服务器首先从用户的浏览器Cookie之中读取之前所保存的用户标识,对用户进行认证。如果各个系统之间有互认机制,那么用户就可以利用自己的Cookie直接进行该子系统的服务。并且上述的这些过程对用户是透明的,使得用户不用重复登录各个页面子系统,从而完成了单点登录。在本发明的一种实施方式中,提供一种基于Cookie的单点登录方法,通过下述步骤解决上述的重放攻击和频繁访问数据库的技术问题,所述步骤包括:A、应用服务器接收用户通过客户端浏览器发送的请求访问和使用受保护的资源的请求消息;B、检查客户端浏览器上是否存在该用户的已经创建好的Cookie,如果不存在,则直接返回失败结果并进入步骤C,否则进入步骤F ;其中,所述Cookie包含:认证信息值、表示该Cookie的产生时间的时间戳、以及ID值;C、所述应用服务器将所述客户端浏览器重定向到登录服务器进行登录操作;D、所述登录服务器在用户登录成功后产生有效的Cookie,并将登录信息记录到数据库中;E、所述登录服务器将产生的有效的Cookie发送给所述客户端浏览器,并将所述客户端浏览器重定向到所述应用服务器,转到步骤B;F、对该用户的Cookie进行验证,并且在验证通过的条件下向该用户提供所请求的资源;其中,在步骤F中对该用户的Cookie进行验证包括:
判断该用户的Cookie的认证信息值与服务器登录信息值是否匹配,验证该用户的Cookie是否同时满足下述条件:该Cookie的ID值唯一、该Cookie的时间戳未重复、当前时间与该Cookie的时间戳的差值未超出该Cookie的有效时间段。根据本发明实施方式,通过在Cookie中加入时间戳域和ID域,基于时间戳和ID值对Cookie进行验证,有效地防止了重放攻击,并且当不存在该用户的已经创建好的Cookie时直接返回失败结果避免对数据库进行频繁操作。在本发明的另一种实施方式中,通过在上述对用户的Cookie进行验证的步骤中加入下述步骤,进一步有效地防止了对数据库的频繁访问:当用户的Cookie的认证信息值与服务器登录信息值不匹配时,判断当前时间与该用户的Cookie的时间戳的差值是否超出该Cookie的有效时间段;当当前时间与该用户的Cookie的时间戳的差值超出该Cookie的有效时间段时,对该用户的Cookie的认证信息值进行校验和更新数据库的在线成员(OnlineMember)记录,重新设置有效时间段,并基于更新时间生成时间戳,并用生成的时间戳替换该用户的Cookie的先前的时间戳;当当前时间与该用户的Cookie的时间戳的差值未超出该Cookie的有效时间段时,不更新数据库的OnlineMember记录。在本发明的再一种实施方式中,根据票据(Ticket)和IP地址结合一起生成OnlineMember去校验所述用户的Cookie的有效性,以防止Cookie被篡改。在本发明的又一种实施方式中,所述登录服务器对产生的Cookie进行数字签名,所述应用服务器使用Cookie时验证数字签名的值是否合法,如果数字签名的值不合法,则拒绝该Cookie,从而进一步防止Cookie被篡改。在本发明的又一种实施方式中,所述应用服务器在接收用户通过客户端浏览器发送的请求访问和使用受保护的资源的请求消息时能够从用户的Cookie的认证信息中读取用户访问另一应用服务器的Ticket信息,并根据Ticket和Cookie的认证信息判断和恢复部分用户信息以实现用户登录信息的保存。从而实现跨域名共享Cookie操作。在本发明的又一种实施方式中,在步骤A之前,验证用于来源是否在站点列表内、验证用户的合法性;用户通过验证后,使用公用密钥加密Cookie后的值作为参数在用户登录之后跳转回来源的应用服务器;应用服务器获取到Cookie的值后调用单点登录接口进行解密、验证。从而实现跨域名共享Cookie操作。另外,本发明实施方式提供了一种能够实现基于Cookie的单点登录的应用服务器,所述应用服务器包括实现上述方法步骤的单元,例如:接收单元,用于收用户通过客户端浏览器发送的请求访问和使用受保护的资源的请求消息;检查单元,用于检查客户端浏览器上是否存在该用户的已经创建好的Cookie,所述Cookie包含:认证信息值、表示该Cookie的产生时间的时间戳、以及ID值;重定向单元,用于在所述检查单元检查出客户端浏览器上不存在该用户的已经创建好的Cookie时将客户端浏览器重定向到登录服务器进行登录操作;验证单元,用于在所述检查单元检查出客户端浏览器上存在该用户的已经创建好的Cookie时对该用户的Cookie进行验证;
其中,所述对该用户的Cookie进行验证包括:判断该用户的Cookie的认证信息值与服务器登录信息值是否匹配,验证该用户的Cookie是否同时满足下述条件:该Cookie的ID值唯一、该Cookie的时间戳未重复、当前时间与该Cookie的时间戳的差值未超出该Cookie的有效时间段。此外,本发明实施方式还提供了一种能够实现基于Cookie的单点登录的系统,其包括客户端浏览器、上述的应用服务器和登录服务器,其中,所述登录服务器用于在用户登录成功后产生有效的Cookie,将登录信息记录到数据库中,将产生的有效的Cookie发送给所述客户端浏览器,并将所述客户端浏览器重定向到所述应用服务器。由上述可知,本发明提出了一种解决统一客户体验的基于Cookie的单点登录技术方案。该方案在发挥Cookie方案的现有优势的同时,解决了因使用传统的Cookie导致的一系列安全隐患问题,其优点包括以下几个方面:有效规避重放攻击风险;有效防范频繁数据库访问,增强了性能和安全;有效避免Cookie消息篡改风险;实现共享Cookie及跨域单点登录。


图1是根据本发明实施方式的一种基于Cookie的单点登录方法的流程图;图2是根据本发明实施方式的一种能够实现基于Cookie的单点登录的系统框图;图3是根据本发明实施方式的一种能够实现基于Cookie的单点登录的应用服务器的框图。
具体实施例方式为了便于理解本发明技术方案的各个方面、特征以及优点,下面结合附图对本发明进行具体描述。应当理解,下述的各种实施方式只用于举例说明,而非用于限制本发明的保护范围。参考图1,在本发明的一种实施方式中,提供了一种基于Cookie的单点登录方法。所述方法包括以下步骤:S100、应用服务器接收用户通过客户端浏览器发送的请求访问和使用受保护的资源的请求消息。S200、检查客户端浏览器上是否存在该用户的已经创建好的Cookie,如果不存在,则直接返回失败结果并进入步骤S300,否则进入步骤S600。其中,所述Cookie包含:认证信息值、表示该Cookie的产生时间的时间戳、以及ID值。通常,当用户通过浏览器向一个Web服务器发出请求时,Web服务器上的代理程序会将它重定向到认证授权服务器,认证授权服务器会要求用户提供登录所需的用户名和密码等信息。当认证授权服务器接收信息并且通过认证之后将发送一个身份确认信息给用户,而这个身份确认的信息就是Cookie, Cookie将保存在用户的浏览器中。S300、所述应用服务器将所述客户端浏览器重定向到登录服务器进行登录操作。S400、所述登录服务器在用户登录成功后产生有效的Cookie,并将登录信息记录到数据库中。
S500、所述登录服务器将产生的有效的Cookie发送给所述客户端浏览器,并将所述客户端浏览器重定向到所述应用服务器,转到步骤S200。S600、对该用户的Cookie进行验证,并且在验证通过的条件下向该用户提供所请求的资源。其中,在步骤S600中对该用户的Cookie进行验证包括:判断该用户的Cookie的认证信息值与服务器登录信息值是否匹配,验证该用户的Cookie是否同时满足下述条件:该Cookie的ID值唯一、该Cookie的时间戳未重复、当前时间与该Cookie的时间戳的差值未超出该Cookie的有效时间段。在本发明的另一种实施方式中,对该用户的Cookie进行验证还包括进行以下操作:当用户的Cookie的认证信息值与服务器登录信息值不匹配时,判断当前时间与该用户的Cookie的时间戳的差值是否超出该Cookie的有效时间段;当当前时间与该用户的Cookie的时间戳的差值超出该Cookie的有效时间段时,对该用户的Cookie的认证信息值进行校验和更新数据库的OnlineMember记录,重新设置有效时间段,并基于更新时间生成时间戳,并用生成的时间戳替换该用户的Cookie的先前的时间戳;当当前时间与该用户的Cookie的时间戳的差值未超出该Cookie的有效时间段时,不更新数据库的OnlineMember记录。其中,对所述用户的Cookie的认证信息值进行校验包括:根据票据Ticket和IP地址结合一起生成OnlineMember去校验所述用户的Cookie的有效性。在本发明的其他实施方式中,所述方法还包括:所述登录服务器对产生的Cookie进行数字签名,所述应用服务器使用Cookie时验证数字签名的值是否合法,如果数字签名的值不合法,则拒绝该Cookie。优选地,采用非对称MD5算法对用户密码进行加密,并将得到的加密字符串存储在密码Password字段。具体而言,所述加密字符串是通过将用户的实际密码经过一次MD5算法处理后加上随机字符串再次进行MD5算法处理而生成。本领技术人员应当理解,以上只是本发明数字签名的一个例子,本发明的保护范围当然不局限于此,还可以采用本领域熟知的其他任何签名算法。在本发明的又一实施方式中,所述方法还包括:所述应用服务器在接收用户通过客户端浏览器发送的请求访问和使用受保护的资源的请求消息时能够从用户的Cookie的认证信息中读取用户访问另一应用服务器的Ticket信息,并根据Ticket和Cookie的认证信息判断和恢复部分用户信息以实现用户登录信息的保存,从而实现跨域名共享Cookie操作。在本发明的其他实施方式中,所述方法还包括:在步骤S100之前,验证用于来源是否在站点列表内、验证用户的合法性;用户通过验证后,使用公用密钥加密Cookie后的值作为参数在用户登录之后跳转回来源的应用服务器;应用服务器获取到Cookie的值后调用单点登录接口进行解密、验证,从而实现跨域名共享Cookie操作。参考图2,本发明实施方式还提供了一种能够实现基于Cookie的单点登录的系统。所述系统包括客户端浏览器100、应用服务器200和登录服务器300,其中,登录服务器300用于在用户登录成功后产生有效的Cookie,将登录信息记录到数据库中,将产生的有效的Cookie发送给所述客户端浏览器100,并将所述客户端浏览器100重定向到所述应用服务器200。在本发明的一种实施方式中,如图3所示,所述应用服务器200包括:接收单元201,用于收用户通过客户端浏览器100发送的请求访问和使用受保护的资源的请求消息;检查单元202,用于检查客户端浏览器100上是否存在该用户的已经创建好的Cookie,所述Cookie包含:认证信息值、表示该Cookie的产生时间的时间戳、以及ID值;重定向单元203,用于在所述检查单元202检查出客户端浏览器100上不存在该用户的已经创建好的Cookie时将客户端浏览器100重定向到登录服务器300进行如上所述的登录操作; 验证单元204,用于在所述检查单元202检查出客户端浏览器上存在该用户的已经创建好的Cookie时对该用户的Cookie进行验证;其中,所述对该用户的Cookie进行验证包括:判断该用户的Cookie的认证信息值与服务器登录信息值是否匹配,验证该用户的Cookie是否同时满足下述条件:该Cookie的ID值唯一、该Cookie的时间戳未重复、当前时间与该Cookie的时间戳的差值未超出该Cookie的有效时间段。在本发明的另一实施方式中,所述验证单元还用于执行如下操作:当用户的Cookie的认证信息值与服务器登录信息值不匹配时,判断当前时间与该用户的Cookie的时间戳的差值是否超出该Cookie的有效时间段;当当前时间与该用户的Cookie的时间戳的差值超出该Cookie的有效时间段时,对该用户的Cookie的认证信息值进行校验和更新数据库的在线成员OnlineMember记录,重新设置有效时间段,并基于更新时间生成时间戳,并用生成的时间戳替换该用户的Cookie的先前的时间戳;当当前时间与该用户的Cookie的时间戳的差值未超出该Cookie的有效时间段时,不更新数据库的OnlineMember记录。优选地,对所述用户的Cookie的认证信息值进行校验包括:根据票据Ticket和IP地址结合一起生成OnlineMember去校验所述用户的Cookie的有效性。在本发明的其他实施方式中,所述应用服务器200还包括:数字签名验证单元205,用于验证所述登录服务器对Cookie进行数字签名的值是否合法并且在不合法的情形下拒绝该Cookie。例如,采用非对称MD5算法对用户密码进行加密,并将得到的加密字符串存储在密码Password字段,具体地,所述加密字符串是通过将用户的实际密码经过一次MD5算法处理后加上随机字符串再次进行MD5算法处理而生成。在本发明的另外的实施方式中,所述应用服务器200还包括:信息恢复单元206,用于在接收用户通过客户端浏览器100发送的请求访问和使用受保护的资源的请求消息时能够从用户的Cookie的认证信息中读取用户访问另一应用服务器的Ticket信息,并根据Ticket和Cookie的认证信息判断和恢复部分用户信息以实现用户登录信息的保存。在本发明的再一个实施方式中,所述应用服务器200还包括跨域共享单元207,所述跨域共享单元207用于实现以下操作:验证用于来源是否在站点列表内、验证用户的合法性;用户通过验证后,使用公用密钥加密Cookie后的值作为参数在用户登录之后跳转回来源的应用服务器200;应用服务器200获取到Cookie的值后调用单点登录接口进行解密、验证。此外,由于Cookie是以纯文本方式在浏览器保存用户的信息,那么在客户端和服务器端之间进行传输则显然不能进行简单的文本信息的发送,如果信息被截取将引起严重的后果。在本发明的其他实施方式中,使用SSL (Secure Socket Layer,安全套接层)的传输协议能保证Cookie在传输过程的安全性。根据上述可知,本发明实施方式对每个Cookie加上唯一的ID域和时间戳以此来抵御重放攻击。并且对数据库访问的不同情景进行条件限制以此来防止可能发生的频繁的数据库访问。此外,对Cookie关键域进行数据加密及在数字签名中引入IP域以此来防止Cookie消息篡改。通过统一维护可信任站点列表,Web服务器读取客户端Cookie的认证信息和Ticket进行校验,通过判断和恢复用户的信息完成用户登录信息的保存,实现跨域名共享Cookie操作。为了便于理解本发明的技术方案的特征和优点,下面以中国建设银行的善融商务电子商务平台系统为例进行说明,善融商务电子商务平台系统采用F5负载均衡,启用多组互相独立的Web/App服务器处理客户端请求。用户可请求多台服务器,这多台服务器可以是buy.ccb.com中负载均衡的多台app服务器,也可以是来自建设银行互联网站的不同子系统,例如mall.ccb.com和ehome.ccb.com。如果没有统一的策略,开发人员就要为每个网络应用重复实现定制的安全机制。这会导致各种可伸缩性和维护问题。而单点登录解决方案旨在为安全性和身份验证提供统一的框架,以减轻用户、管理员和开发人员的负担。因此,善融商务电子商务平台系统采用本发明技术方案的一种实施方式如下:Web应用中每一个需要安全保护的URL在访问以前,都需要进行安全检查,如果发现没有登录(没有发现认证之后所带的Session (即登录信息)信息和保存于客户端Cookie的认证信息),就重新定向到登录窗口进行登录。登录成功后,系统会自动设置对应的客户端Cookie认证信息和Session信息,并且将登录信息记录到数据库中。当再访问这个URL的时候,系统仍然需要进行安全检查,但是这次系统同时发现相应的客户端Cookie认证信息或者Session。基于有效Cookie认证信息和Session信息就可以直接进行访问。如果不存在相应的Session信息,则检查客户端Cookie的认证信息是否有效(因为有可能客户端Cookie的认证信息已经过期了,或者因为断电而使身份认证服务重启使得客户端Cookie的认证信息无效)。应用系统获得客户端Cookie的认证信息和用户请求的IP地址,去数据库服务器进行验证,来判断客户端的认证信息是否真的有效,以及对应的用户是谁。如果客户端Cookie的认证信息校验成功,就允许用户访问当前请求的资源。(I)抵御重放攻击
本实施方式采用Session + Cookie的方式,首先判断是否存在客户端Cookie的认证信息,如果存在且与服务器Session值同时有效,就不需要进行数据库的操作。如果不存在匹配的Session值,则对保存于客户端Cookie的认证信息值进行校验和更新数据库OnlineMember对象,并设置一个有效时间段(本方案设置为120秒),每次更新数据库的OnlineMember记录的时候,记录最后更新时间,并基于该时间生成时间戳,写入对应的客户端Cookie的认证信息的时间戳域中。当最后更新时间到现在小于超时时间(即当前时间与时间戳的差值未超出有效时间段)的时候,不更新数据库的OnlineMember记录。同时加入Cookie认证信息的还有ID值,服务端判断Cookie认证信息时将验证时间戳是否重复和超时(即当前时间与时间戳的差值超出有效时间段)以及ID是否唯一。由于重放的时间戳将相对远离当前时间戳,如果ID不同或者ID相同但时间戳重复或超时则判断其为无效Cookie,以此避免了重放攻击。( 2 )防止频繁请求数据库本实施方式在校验用户是否已登录时,首先检查是否存在保存于客户端的Cookie的认证信息,如不存在,则不访问数据库,直接返回失败结果;如存在则再与服务器Session值进行比对,若失败或判断为超过有效空闲时间,才访问数据库进行进一步校验。一方面,系统对于单机的频繁请求攻击,则通过软件验证码和硬件防火强来基本防御。另一方面,对于大规模攻击带来的海量请求,则通过临时关闭保存于客户端Cookie的认证信息校验功能,关闭数据库性能消耗。(3)防止Cookie消息篡改为防止Cookie被其他人随意查看和分析甚至伪造Cookie的认证信息,本实施方式对Cookie中的特定信息进行加密处理。首先为了防止别人伪造Ticket (票据),在进行Cookie的认证信息校验的时候,根据Ticket和IP结合一起生成OnlineMember字段进行校验,保证Cookie的认证信息真的有效,以及当前的Cookie的认证信息对应的用户。对每个发布的Cookie均由发布者进行数字签名,各子系统在使用这些Cookie时,首先验证数字签名的值是否合法,如果数字签名值为非法,那么拒绝该Cookie。用户密码则采用非对称md5算法加密,Password字段存储的是32位加密字符串。该加密字符串通过用户实际密码经过一次md5之后加上salt值(随机字符串)再次md5生成,S卩 Password=md5 (md5 (RealPassword).salt)。(4)跨域共享 Cookie为解决跨域共享Cookie问题,首先验证用户来源是否在我们的站点列表内(如果是则跳过此步),其次验证用户合法性,用户通过验证后,加密Cookie和公用密钥后的值将会在用户登录之后作为参数一起跳转回来来源的应用系统,应用系统获取到Cookie值后调用SSO接口进行解密、验证等工作。当浏览器访问了页面I (此时用户进行第一次登入操作)时,Web服务器(即应用服务器)设置了 Session信息和Cookie的认证信息,并将Ticket (同第一次登入时的Sessionid)、Cookie信息和页面I 一起返回给浏览器,浏览器接收到Ticket和Cookie的认证信息之后,就会保存起来,在它访问页面2 (可能与页面I不在同一台服务器上)的时候会把这个Ticket和保存于Cookie的认证信息也带上,Web服务器接到请求时也能从Cookie的认证信息中读取Ticket等信息,根据Ticket和保存于Cookie的认证信息判断和恢复一些用户的信息(如果此服务器未存在此客户对应的Session,则与数据库中的用户认证信息进行校验,若校验成功则新建一个Session,其中保存用户第一次登入系统时的Sessionid即Ticket)。可以利用数据库信息和保存于客户端Cookie的认证信息来完成用户登录信息(Session)的保存,之后将浏览器中的Cookie认证信息和Ticket结合起来,完成跨域SSO的功能。以上从后台处理(对用户而言是透明的)描述了本发明的技术方案,下面从前端操作描述本发明的技术方案。作为非限制性实施例,登录、注销等功能均以API (应用程序编程接口)形式呈现,接受被授权的应用系统(即应用服务器上的系统)的请求并且返回相应的可扩展标记语言(XML)或者Json (—种轻量级的数据交换格式)结果。各个应用系统均有自己的登陆和注册页面,适用于同步不得不使用自己用户功能的已经成型的应用系统。在本发明实施方式中,前台管理模块的主要功能模块如下:(I)登录模块实现用户的登录功能。请求用户输入用户名和密码,根据用户名和密码判断用户是否存在,如果不存在,提示错误信息。如果存在,把登录信息记录到客户端Cookie的认证信息和服务器Session,并把校验成功信息写入数据库,跳转到传入的统一资源定位符(url)页面。创建的客户端Cookie及Session的认证信息。(2)注册模块实现用户的注册功能。用户进入注册页面,输入帐号、密码、密码确认、验证码等信息并提交。系统检查输入的帐号是否已经存在,如果存在,提示错误信息并返回登录页面。如果帐号不存在,将注册信息写入数据表中,并将用户信息记录写入Session和创建对应的Cookie的认证信息,同时数据库中记录OnlineMember数据。(3)会话同步模块实现会话信息在不同服务器之间的同步。应用系统在接收到请求的时候,先去查找客户端是否存在期望的Cookie的认证信息。如果存在,且与服务器Session信息同时有效,则继续往下执行(根据Session信息中保存的最后更新时间,检查是否需要更新数据库的OnlineMember记录)。如果不存在对应的Session信息但是存在Cookie的认证信息,则调用getOnlineMember (Ticket, ip)去校验这个Cookie的认证信息的有效性。如果无效(不存在期望的OnlineMember或者已经过期),删除对应的Cookie的认证信息。如果没有过期,就更新对应的Cookie的认证信息、仓Il建Session对象(并设置其Ticket值与保存于客户端Cookie的认证信息中的Ticket值一致)和更新数据库的OnlineMember记录。(4)注销模块实现用户注销的功能,根据Cookie的认证信息中保存的Ticket,删除数据库中的OnlineMember记录。同时删除相应的Cookie的认证信息和本服务器Session信息。(5)找回密码模块用户忘记密码后,通过此项功能,发送加密后的url字符串到用户邮件。用户通过点击该url,实现用户密码的修改。以上通过从后台处理和前端操作两个方面对本发明的技术方案进行了详细描述,本领域技术人员应当理解,上述的各个实施方式仅仅是示例性的,而非限制性的。本领域技术人员可以根据本发明权利要求书的教导对上述实施方式进行修改、变换、等同替换,但是,按照这种方式修改、变换和等同替换的技术方案也落入本发明权利要求限定的保护范围。并且,通过上述的描述可知,本发明的优势和有益效果如下:在Cookie中加入时间戳域和ID域以抵制重放攻击;增加Cookie校验时访问数据库的条件以防止频繁数据库访问;将Ticket和IP结合的数字签名及使用md5算法加密以避免Cookie被篡改;利用可信站点列表及Session生成机制实现跨域共享Cookie。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件结合硬件平台的方式来实现,当然也可以全部通过硬件来实施。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
权利要求
1.一种基于Cookie的单点登录方法,其特征在于,所述方法包括: A、应用服务器接收用户通过客户端浏览器发送的请求访问和使用受保护的资源的请求消息; B、检查客户端浏览器上是否存在该用户的已经创建好的Cookie,如果不存在,则直接返回失败结果并进入步骤C,否则进入步骤F ; 其中,所述Cookie包含:认证信息值、表示该Cookie的产生时间的时间戳、以及ID值; C、所述应用服务器将所述客户端浏览器重定向到登录服务器进行登录操作; D、所述登录服务器在用户登录成功后产生有效的Cookie,并将登录信息记录到数据库中; E、所述登录服务器将产生的有效的Cookie发送给所述客户端浏览器,并将所述客户端浏览器重定向到所述应用服务器,转到步骤B; F、对该用户的Cookie进行验证,并且在验证通过的条件下向该用户提供所请求的资源; 其中,在步骤F中对该用户的Cookie进行验证包括: 判断该用户的Cookie 的认证信息值与服务器登录信息值是否匹配,验证该用户的Cookie是否同时满足下述条件:该Cookie的ID值唯一、该Cookie的时间戳未重复、当前时间与该Cookie的时间戳的差值未超出该Cookie的有效时间段。
2.如权利要求1所述的单点登录方法,其特征在于,在步骤F中对该用户的Cookie进行验证还包括: 当用户的Cookie的认证信息值与服务器登录信息值不匹配时,判断当前时间与该用户的Cookie的时间戳的差值是否超出该Cookie的有效时间段; 当当前时间与该用户的Cookie的时间戳的差值超出该Cookie的有效时间段时,对该用户的Cookie的认证信息值进行校验和更新数据库的在线成员OnlineMember记录,重新设置有效时间段,并基于更新时间生成时间戳,并用生成的时间戳替换该用户的Cookie的先前的时间戳; 当当前时间与该用户的Cookie的时间戳的差值未超出该Cookie的有效时间段时,不更新数据库的OnlineMember记录。
3.如权利要求2所述的单点登录方法,其特征在于,对所述用户的Cookie的认证信息值进行校验包括: 根据票据Ticket和IP地址结合一起生成OnlineMember去校验所述用户的Cookie的有效性。
4.如权利要求3所述的单点登录方法,其特征在于,所述方法还包括: 所述登录服务器对产生的Cookie进行数字签名,所述应用服务器使用Cookie时验证数字签名的值是否合法,如果数字签名的值不合法,则拒绝该Cookie。
5.如权利要求4所述的单点登录方法,其特征在于,所述方法还包括采用非对称MD5算法对用户密码进行加密,并将得到的加密字符串存储在密码Password字段。
6.如权利要求5所述的单点登录方法,其特征在于,所述加密字符串是通过将用户的实际密码经过一次MD5算法处理后加上随机字符串再次进行MD5算法处理而生成。
7.如权利要求1所述的单点登录方法,其特征在于,所述方法还包括:所述应用服务器在接收用户通过客户端浏览器发送的请求访问和使用受保护的资源的请求消息时能够从用户的Cookie的认证信息中读取用户访问另一应用服务器的Ticket信息,并根据Ticket和Cookie的认证信息判断和恢复部分用户信息以实现用户登录信息的保存。
8.如权利要求1所述的单点登录方法,其特征在于,所述方法还包括: 在步骤A之前,验证用于来源是否在站点列表内、验证用户的合法性; 用户通过验证后,使用公用密钥加密Cookie后的值作为参数在用户登录之后跳转回来源的应用服务器; 应用服务器获取到Cookie的值后调用单点登录接口进行解密、验证。
9.一种能够实现基于Cookie的单点登录的应用服务器,其特征在于,所述应用服务器包括: 接收单元,用于收用户通过客户端浏览器发送的请求访问和使用受保护的资源的请求消息; 检查单元,用于检查客户端浏览器上是否存在该用户的已经创建好的Cookie,所述Cookie包含:认证信息值、表示该Cookie的产生时间的时间戳、以及ID值; 重定向单元,用于在所述检查单元检查出客户端浏览器上不存在该用户的已经创建好的Cookie时将客户端浏览器重定 向到登录服务器进行登录操作; 验证单元,用于在所述检查单元检查出客户端浏览器上存在该用户的已经创建好的Cookie时对该用户的Cookie进行验证; 其中,所述对该用户的Cookie进行验证包括: 判断该用户的Cookie的认证信息值与服务器登录信息值是否匹配,验证该用户的Cookie是否同时满足下述条件:该Cookie的ID值唯一、该Cookie的时间戳未重复、当前时间与该Cookie的时间戳的差值未超出该Cookie的有效时间段。
10.如权利要求9所述的应用服务器,其特征在于,所述验证单元还用于: 当用户的Cookie的认证信息值与服务器登录信息值不匹配时,判断当前时间与该用户的Cookie的时间戳的差值是否超出该Cookie的有效时间段; 当当前时间与该用户的Cookie的时间戳的差值超出该Cookie的有效时间段时,对该用户的Cookie的认证信息值进行校验和更新数据库的在线成员OnlineMember记录,重新设置有效时间段,并基于更新时间生成时间戳,并用生成的时间戳替换该用户的Cookie的先前的时间戳; 当当前时间与该用户的Cookie的时间戳的差值未超出该Cookie的有效时间段时,不更新数据库的OnlineMember记录。
11.如权利要求10所述的应用服务器,其特征在于,对所述用户的Cookie的认证信息值进行校验包括: 根据票据Ticket和IP地址结合一起生成OnlineMember去校验所述用户的Cookie的有效性。
12.如权利要求9所述的应用服务器,其特征在于,所述应用服务器还包括: 数字签名验证单元,用于验证所述登录服务器对Cookie进行数字签名的值是否合法并且在不合法的情形下拒绝该Cookie。
13.如权利要求9所述的应用服务器,其特征在于,所述应用服务器还包括: 信息恢复单元,用于在接收用户通过客户端浏览器发送的请求访问和使用受保护的资源的请求消息时能够从用户的Cookie的认证信息中读取用户访问另一应用服务器的Ticket信息,并根据Ticket和Cookie的认证信息判断和恢复部分用户信息以实现用户登录信息的保存。
14.如权利要求9所述的应用服务器,其特征在于,所述应用服务器还包括跨域共享单元,所述跨域共享单元用于实现以下操作: 验证用于来源是否在站点列表内、验证用户的合法性; 用户通过验证后,使用公用密钥加密Cookie后的值作为参数在用户登录之后跳转回来源的应用服务器; 应用服务器获取到Cookie的值后调用单点登录接口进行解密、验证。
15.一种能够实现基于Cookie的单点登录的系统,其特征在于,所述系统包括客户端浏览器、如权利要求9至14任意一项所述的应用服务器和登录服务器,其中,所述登录服务器用于在用户登录成功后产生有效的Cookie,将登录信息记录到数据库中,将产生的有效的Cookie发送给所述 客户端浏览器,并将所述客户端浏览器重定向到所述应用服务器。
全文摘要
本发明公开了一种基于Cookie的单点登录方法、系统及其应用服务器,通过下述操作解决重放攻击和频繁访问数据库的技术问题A、应用服务器接收客户端浏览器发送的请求消息;B、检查客户端浏览器上是否存在用户的Cookie,若不存在,则直接返回失败结果并进入步骤C,否则进入步骤F;C、将客户端浏览器重定向到登录服务器进行登录操作;D、登录服务器在用户登录成功后产生有效的Cookie;E、将产生的有效的Cookie发送给客户端浏览器,并重定向到应用服务器,转到步骤B;F、对用户的Cookie进行验证,包括判断用户的Cookie的认证信息值与服务器Session值是否匹配,Cookie的ID值是否唯一、Cookie的时间戳是否重复、是否超时,并且在通过验证的条件下向该用户提供所请求的资源。
文档编号H04L29/06GK103179134SQ201310137258
公开日2013年6月26日 申请日期2013年4月19日 优先权日2013年4月19日
发明者王进, 肖群, 周振, 黎民, 罗世容, 何小锋, 郭友德, 蒋祁效, 陈红淇 申请人:中国建设银行股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1