CN109688114B - 单点登录方法、认证服务器及应用服务器 - Google Patents

单点登录方法、认证服务器及应用服务器 Download PDF

Info

Publication number
CN109688114B
CN109688114B CN201811506359.0A CN201811506359A CN109688114B CN 109688114 B CN109688114 B CN 109688114B CN 201811506359 A CN201811506359 A CN 201811506359A CN 109688114 B CN109688114 B CN 109688114B
Authority
CN
China
Prior art keywords
token
application server
client browser
access request
request
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
Application number
CN201811506359.0A
Other languages
English (en)
Other versions
CN109688114A (zh
Inventor
杨斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Maipu Communication Technology Co Ltd
Original Assignee
Maipu Communication Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Maipu Communication Technology Co Ltd filed Critical Maipu Communication Technology Co Ltd
Priority to CN201811506359.0A priority Critical patent/CN109688114B/zh
Publication of CN109688114A publication Critical patent/CN109688114A/zh
Application granted granted Critical
Publication of CN109688114B publication Critical patent/CN109688114B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0807Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0815Network architectures or network communication protocols for network security for authentication of entities providing single-sign-on or federations

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明涉及网络通信技术领域,提供一种单点登录方法、认证服务器及应用服务器。单点登录方法应用于认证服务器,具体包括:接收客户端浏览器向认证地址发送的第二访问请求,第二访问请求是应用服务器在接收到客户端浏览器向资源地址发送的第一访问请求、以及确定用户未登录应用服务器后,控制客户端浏览器发送的;向客户端浏览器发送第二访问请求的响应,控制客户端浏览器检测认证服务器的访问域中是否保存有第一token,以及在为是时,控制客户端浏览器向资源地址发送第三访问请求,指示应用服务器将用户标记为已经在应用服务器上登录。该方法中的应用服务器则既可以采用cookie/session机制也可以采用token机制进行认证。

Description

单点登录方法、认证服务器及应用服务器
技术领域
本发明涉及网络通信技术领域,具体而言,涉及一种单点登录方法、认证服务器及应用服务器。
背景技术
随着信息技术和网络技术的发展,用户每天需要对许多不同的应用系统进行访问,每个系统都要求用户遵循一定的安全策略,比如要求输入用户账号和密码。随着用户访问系统数量增加,用户通常需要记住多个口令,以便实现对不同应用系统的访问。为了方便记忆,用户一般会简化口令或在多个系统中使用相同的口令,或者将口令记录下来,这些都大大降低了用户身份的安全性。为了解决这些问题,单点登录(Single Sign On,简称SSO)技术随之产生。单点登录的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
目前主流的应用系统采用两种不同的认证机制进行用户身份的认证,分别是cookie/session机制和token机制。然而,现有的单点登录系统中通常只能兼容采用cookie/session机制进行认证的应用系统,对于采用token机制进行认证的应用系统则不能兼容,这无疑大大限制了单点登录系统应用场景。
发明内容
有鉴于此,本发明实施例提供一种单点登录方法、认证服务器及应用服务器,实现在同一单点登录系统中,同时兼容采用cookie/session机制和token机制进行认证的应用系统。
为实现上述目的,本发明提供如下技术方案:
第一方面,本发明实施例提供一种单点登录方法,应用于单点登录系统中的认证服务器,单点登录系统认证服务器以及多个应用服务器,应用服务器为基于cookie/session机制或基于token机制进行认证的服务器,方法包括:
接收客户端浏览器向认证服务器的认证地址发送的第二访问请求,第二访问请求是应用服务器在接收到客户端浏览器向应用服务器的资源地址发送的第一访问请求、以及根据自身的认证机制确定用户未登录应用服务器后,控制客户端浏览器发送的,第二访问请求中携带有资源地址;
向客户端浏览器发送第二访问请求的响应,第二访问请求的响应用于控制客户端浏览器检测认证服务器的访问域中是否保存有第一token,其中,保存有第一token表示用户已经在单点登录系统中登录,以及在结果为是时,控制客户端浏览器向资源地址发送第三访问请求,第三访问请求中携带有从认证服务器的访问域中读取的第一token,第三访问请求用于指示应用服务器根据自身的认证机制以及第一token将用户标记为已经在应用服务器上登录。
上述方法在认证服务器的访问域中保存第一token,保存有第一token表示用户之前已经在单点登录系统中的某个应用服务器上登录。从而,在用户登录单点登录系统中的一个尚未登录过的应用服务器时,认证服务器只需要控制客户端浏览器检测认证服务器的访问域中是否保存有第一token,就可以确定是否应当允许用户直接登录到当前的应用服务器上。
在该方法中,认证服务器采用token机制,利用第一token确定用户是否已经登录单点登录系统,应用服务器则既可以采用cookie/session机制也可以采用token机制,根据自身的认证机制确定用户是否已经登录应用服务器,从而实现了在一个单点登录系统中兼容采用不同认证机制的应用系统。
在一些实施例中,第二访问请求的响应还用于控制客户端浏览器检测认证服务器的访问域中是否保存有第一token,并在结果为否时,控制客户端浏览器向认证服务器的登录页面发送第四访问请求,第四访问请求中携带有资源地址,方法还包括:
响应第四访问请求,向客户端浏览器返回登录页面;
接收客户端浏览器发送的用户登录请求,用户登录请求中携带有用户在登录页面上提交的登录信息以及资源地址;
响应用户登录请求,验证登录信息是否有效,在结果为是时,根据与登录信息对应的用户信息以及认证服务器的私钥生成第一token;
向客户端浏览器发送用户登录请求的响应,用户登录请求的响应用于控制客户端浏览器将第一token存储至认证服务器的访问域中,并向资源地址发送第三访问请求。
若用户是首次登录单点登录系统,则认证服务器的访问域中未保存有第一token,此时应当执行普通的登录流程,即让用户在登录页面上输入用户名和密码,若用户成功登录,则生成第一token并控制客户端浏览器将第一token存储至认证服务器的访问域中,以支持后续的单点登录行为。
在一些实施例中,在控制客户端浏览器向资源地址发送第三访问请求之后,方法还包括:
接收应用服务器发送的应用服务器的退出地址,并控制客户端浏览器将退出地址存储至认证服务器的访问域中;
接收客户端浏览器向认证服务器的注销地址发送的第二退出请求,第二退出请求是应用服务器在接收到客户端浏览器向退出地址发送的第一退出请求、以及确定第一退出请求中未携带退出标识后,控制客户端浏览器发送的;
响应第二退出请求,向客户端浏览器发送第二退出请求的响应,第二退出请求的响应用于控制客户端浏览器向认证服务器的访问域中保存的每个退出地址发送第三退出请求,第三退出请求中携带有退出标识;
控制客户端浏览器清除认证服务器的访问域中保存的第一token以及全部退出地址,并向认证服务器的登录页面发送第五访问请求;
响应第五访问请求,向客户端浏览器返回登录页面。
在这些实施例中,将各个应用服务器的退出地址存储至认证服务器的访问域中,从而用户在某个应用服务器上请求退出时,认证服务器可以直接控制客户端浏览器向保存的每个退出地址发送第三退出请求,以使各个应用服务器根据自身的认证机制独立地注销用户,进而使得用户退出整个单点登录系统。
由于各应用服务器根据自身的认证机制独立地注销用户,因此对于采用cookie/session机制或token机制的应用服务器都能够正确注销,不会出现注销后用户还可以登录的情况。
在一些实施例中,在控制客户端浏览器向资源地址发送第三访问请求之后,方法还包括:
接收应用服务器发送的第一令牌验证请求,第一令牌验证请求中携带有第一token以及应用服务器的退出地址;
响应第一令牌验证请求,验证第一token是否有效,并在结果为是时,控制客户端浏览器将退出地址存储至认证服务器的访问域中,并向应用服务器发送第一令牌验证请求的响应,第一令牌验证请求的响应用于指示第一token有效;
接收客户端浏览器向认证服务器的注销地址发送的第二退出请求,第二退出请求是应用服务器在接收到客户端浏览器向退出地址发送的第一退出请求、以及确定第一退出请求中未携带退出标识后,控制客户端浏览器发送的,第二退出请求中携带有从应用服务器的访问域中读取的第一token,第一token是应用服务器在接收到第一令牌验证请求的响应后,控制客户端浏览器存储至应用服务器的访问域中的;
响应第二退出请求,验证第一token是否有效,在结果为是时,向客户端浏览器发送第二退出请求的响应,第二退出请求的响应用于控制客户端浏览器向认证服务器的访问域中保存的每个退出地址发送第三退出请求,第三退出请求中携带有退出标识以及从认证服务器的访问域中读取的第一token,以及控制客户端浏览器清除认证服务器的访问域中保存的第一token以及全部退出地址,并向认证服务器的登录页面发送第五访问请求;
接收应用服务器发送的第二令牌验证请求,第二令牌验证请求中携带有第一token;
响应第二令牌验证请求,验证第一token是否有效,并在结果为是时,向应用服务器发送第二令牌验证请求的响应,第二令牌验证请求的响应用于指示第一token有效;
响应第五访问请求,向客户端浏览器返回登录页面。
在这些实施例中,增加了对第一token的验证步骤,可以避免在跨域伪造请求的问题。
第二方面,本发明实施例提供一种单点登录方法,应用于单点登录系统中的应用服务器,单点登录系统包括认证服务器以及多个应用服务器,应用服务器为基于cookie/session机制或token机制进行认证的服务器,方法包括:
接收客户端浏览器向应用服务器的资源地址发送的第一访问请求;
响应第一访问请求,根据应用服务器自身的认证机制确定用户是否已经登录应用服务器,在结果为否时,控制客户端浏览器发送向认证服务器的认证地址发送第二访问请求,第二访问请求中携带有资源地址;
接收客户端浏览器向资源地址发送的第三访问请求,第三访问请求是认证服务器在接收到第二访问请求、以及确定客户端浏览器的认证服务器的访问域中已保存有第一token后,控制客户端浏览器发送的,其中,保存有第一token表示用户已经在单点登录系统中登录,第三访问请求中携带有从认证服务器的访问域中读取的第一token;
响应第三访问请求,根据应用服务器自身的认证机制以及第一token将用户标记为已经在应用服务器上登录,在标记过程中控制客户端浏览器将生成的登录标识存储至应用服务器的访问域中;
将资源地址对应的受保护资源发送至客户端浏览器。
在一些实施例中,在接收客户端浏览器向资源地址发送的第三访问请求之后,方法还包括:
响应第三访问请求,向认证服务器发送应用服务器的退出地址;
接收客户端浏览器向退出地址发送的第一退出请求,其中,退出地址是认证服务器控制客户端浏览器存储至认证服务器的访问域中的;
响应第一退出请求,在确定第一退出请求中未携带退出标识后,向客户端浏览器发送第一退出请求的响应,第一退出请求的响应用于控制客户端浏览器向认证服务器的注销地址发送第二退出请求;
接收客户端浏览器向退出地址发送的第三退出请求;
响应第三退出请求,在确定第三退出请求中携带有退出标识后,根据应用服务器自身的认证机制将用户标记为已经在应用服务器上注销。
在一些实施例中,在接收客户端浏览器向资源地址发送的第三访问请求之后,方法还包括:
响应第三访问请求,向认证服务器发送第一令牌验证请求,第一令牌验证请求中携带有第一token以及应用服务器的退出地址;
接收认证服务器发送的第一令牌验证请求的响应,第一令牌验证请的求响应用于指示第一token有效;
控制客户端浏览器将第一token存储至应用服务器的访问域中;
接收客户端浏览器向退出地址发送的第一退出请求,其中,退出地址是认证服务器控制客户端浏览器存储至认证服务器的访问域中的;
响应第一退出请求,在确定第一退出请求中未携带退出标识后,向客户端浏览器发送第一退出请求的响应,第一退出请求的响应用于控制客户端浏览器向认证服务器的注销地址发送第二退出请求,第二退出请求中携带有从应用服务器的访问域中读取的第一token;
接收客户端浏览器向退出地址发送的第三退出请求,第三退出请求中携带有退出标识以及从所述认证服务器的访问域中读取的第一token;
响应第三退出请求,在确定第三退出请求中携带有退出标识后,向认证服务器发送第二令牌验证请求,第二令牌验证请求中携带有第一token;
接收认证服务器发送的第二令牌验证请求的响应,第二令牌验证请的求响应用于指示第一token有效;
根据应用服务器自身的认证机制将用户标记为已经在应用服务器上注销,并控制客户端浏览器清除应用服务器的访问域中保存的第一token。
在一些实施例中,在控制客户端浏览器将第一token存储至应用服务器的访问域中之后,方法还包括:
接收客户端浏览器向资源地址发送的第六访问请求;
向客户端浏览器发送第六访问请求的响应,第六访问请求的响应用于控制客户端浏览器向认证服务器发送第三令牌验证请求,第三令牌验证请求中携带有第一token,其中,第一token是从应用服务器的访问域中读取的;
接收认证服务器发送的第三令牌验证请求的响应,第三令牌验证请的求响应用于指示第一token有效。
在用户请求资源时,若应用服务器的访问域中已保存有第一token,可以将其发送到认证服务器进行验证,若未过期则继续执行请求资源的流程,若过期可以由认证服务器发起注销流程。
在一些实施例中,应用服务器为基于cookie/session机制进行认证的服务器,响应第一访问请求,根据应用服务器自身的认证机制确定用户是否已经登录应用服务器,在结果为否时,控制客户端浏览器向认证服务器的认证地址发送第二访问请求,包括:
响应第一访问请求,检测应用服务器中是否保存有用户对应的session,其中,保存有session表示用户已经在应用服务器上登录;
在结果为否时,向客户端浏览器发送第一访问请求的响应,第一访问请求的响应用于控制客户端浏览器向认证地址发送第二访问请求;
响应第三访问请求,根据应用服务器自身的认证机制以及第一token将用户标记为已经在应用服务器上登录,在标记过程中控制客户端浏览器将生成的登录标识存储至应用服务器的访问域中,包括:
响应第三访问请求,根据第一token生成session并将session存储至应用服务器,以及生成与session对应的cookie,并控制客户端浏览器将cookie存储至应用服务器的访问域中;
根据应用服务器自身的认证机制将用户标记为已经在应用服务器上注销,包括:
清除应用服务器上保存的session。
在一些实施例中,方法还包括:
接收客户端浏览器向应用服务器的资源地址发送的第七访问请求,第七访问请求中携带有从应用服务器的访问域中保存的cookie中读取的sessionid:
响应第七访问请求,根据sessionid获取用户对应的session并检测session是否有效;
在结果为否时,向客户端浏览器发送第七访问请求的响应,第七访问请求的响应用于控制客户端浏览器向认证地址发送第八访问请求,第八访问请求中携带有资源地址;
接收客户端浏览器向资源地址发送的第九访问请求,第九访问请求是认证服务器在接收到第八访问请求、以及确定客户端浏览器的认证服务器的访问域中已保存有第一token后,控制客户端浏览器发送的,其中,保存有第一token表示用户已经在单点登录系统中登录,第九访问请求中携带有从认证服务器的访问域中读取的第一token;
响应第九访问请求,根据第一token生成新的session并将新的session存储至应用服务器,以及生成与新的session对应的新的cookie,并控制客户端浏览器将新的cookie存储至应用服务器的访问域中;
将资源地址对应的受保护资源发送至客户端浏览器。
当用户在请求基于cookie/session机制的应用服务器上的资源时,若session已经过期,但用户在其他应用服务器上的登录尚未过期,此时可以通过生成新的session的方式为用户续期,允许其继续访问资源。
若在一些实施例中,应用服务器为基于token机制进行认证的服务器,响应第一访问请求,根据应用服务器自身的认证机制确定用户是否已经登录应用服务器,在结果为否时,控制客户端浏览器向认证服务器的认证地址发送第二访问请求,包括:
向客户端浏览器发送第一访问请求的响应,第一访问请求的响应用于控制客户端浏览器检测应用服务器的访问域中是否保存有用户对应的第二token,其中,保存有第二token表示用户已经在应用服务器上登录,以及在结果为否时,控制客户端浏览器向认证地址发送第二访问请求;
响应第三访问请求,根据应用服务器自身的认证机制以及第一token将用户标记为已经在应用服务器上登录,在标记过程中控制客户端浏览器将生成的登录标识存储至应用服务器的访问域中,包括:
响应第三访问请求,根据第一token以及应用服务器的私钥生成第二token,并控制客户端浏览器将第二token存储至应用服务器的访问域中;
根据应用服务器自身的认证机制将用户标记为已经在应用服务器上注销,包括:
控制客户端浏览器清除应用服务器的访问域中保存的第二token。
在一些实施例中,方法还包括:
接收客户端浏览器向应用服务器的资源地址发送的第七访问请求,第七访问请求中携带有从应用服务器的访问域中读取的第二token;
响应第七访问请求,检测第二token是否有效;
在结果为否时,向客户端浏览器发送第七访问请求的响应,第七访问请求的响应用于控制客户端浏览器向认证地址发送第八访问请求,第八访问请求中携带有资源地址;
接收客户端浏览器向资源地址发送的第九访问请求,第九访问请求是认证服务器在接收到第八访问请求、以及确定客户端浏览器的认证服务器的访问域中已保存有第一token后,控制客户端浏览器发送的,其中,保存有第一token表示用户已经在单点登录系统中登录,第九访问请求中携带有从认证服务器的访问域中读取的第一token;
响应第九访问请求,根据第一token以及应用服务器的私钥生成新的第二token,并控制客户端浏览器将新的第二token存储至应用服务器的访问域中;
将资源地址对应的受保护资源发送至客户端浏览器。
当用户在请求基于token机制的应用服务器上的资源时,若第二token已经过期,但用户在其他应用服务器上的登录尚未过期,此时可以通过生成新的第二token的方式为用户续期,允许其继续访问资源。
第三方面,本发明实施例提供一种单点登录方法,应用于可访问单点登录系统的客户端浏览器,单点登录系统包括认证服务器以及多个应用服务器,应用服务器为基于cookie/session机制或token机制进行认证的服务器,方法包括:
向应用服务器的资源地址发送第一访问请求;
向认证服务器的认证地址发送第二访问请求,第二访问请求是应用服务器在接收到第一访问请求、以及根据自身的认证机制确定用户未登录应用服务器后,控制客户端浏览器发送的,第二访问请求中携带有资源地址;
接收认证服务器发送的对第二访问请求的响应,根据第二访问请求的响应检测认证服务器的访问域中是否保存有第一token,其中,保存有第一token表示用户已经在单点登录系统中登录;
在结果为是时,向资源地址发送第三访问请求,第三访问请求中携带有从认证服务器的访问域中读取的第一token,第三访问请求用于指示应用服务器根据自身的认证机制以及第一token将用户标记为已经在应用服务器上登录;
接收应用服务器发送的用户的登录标识,并将登录标识存储至应用服务器的访问域中,登录标识是应用服务器在接收到第三访问请求后,在将用户标记为已经在应用服务器上登录时生成的;
接收应用服务器发送的资源地址对应的受保护资源。
在一些实施例中,在接收认证服务器发送的对第二访问请求的响应,根据第二访问请求的响应检测认证服务器的访问域中是否保存有第一token之后,方法还包括:
在结果为否时,向认证服务器的登录页面发送第四访问请求,第四访问请求中携带有资源地址;
显示认证服务器响应第四访问请求后返回的登录页面;
响应用户的登录操作,向认证服务器发送用户登录请求,用户登录请求中携带有用户在登录页面上提交的登录信息以及资源地址;
接收认证服务器发送的用户登录请求的响应,根据用户登录请求的响应将第一token存储至认证服务器的访问域中,并向资源地址发送第三访问请求;
从应用服务器接收资源地址对应的受保护资源。
在一些实施例中,在向资源地址发送第三访问请求之后,方法还包括:
接收认证服务器发送的应用服务器的退出地址,并将退出地址存储至认证服务器的访问域中;
响应用户注销操作,向退出地址发送的第一退出请求;
接收应用服务器发送的第一退出请求的响应,根据第一退出请求的响应向认证服务器的注销地址发送的第二退出请求;
接收认证服务器发送的第二退出请求的响应,根据第二退出请求的响应向认证服务器的访问域中保存的每个退出地址发送第三退出请求,第三退出请求中携带有退出标识,以及清除认证服务器的访问域中保存的第一token以及全部退出地址,并向认证服务器的登录页面发送第五访问请求;
清除应用服务器的访问域中保存的且需要被清除的登录标识;
显示认证服务器响应第五访问请求后返回的登录页面。
在一些实施例中,在向资源地址发送第三访问请求之后,方法还包括:
接收认证服务器发送的应用服务器的退出地址,并将退出地址存储至认证服务器的访问域中;
接收应用服务器发送的第一token,并将第一token存储至应用服务器的访问域中;
响应用户注销操作,向退出地址发送的第一退出请求;
接收应用服务器发送的第一退出请求的响应,根据第一退出请求的响应向认证服务器的注销地址发送的第二退出请求,第二退出请求中携带有从应用服务器的访问域中读取的第一token;
接收认证服务器发送的第二退出请求的响应,根据第二退出请求的响应向认证服务器的访问域中保存的每个退出地址发送第三退出请求,第三退出请求中携带有退出标识以及从认证服务器的访问域中读取的第一token,以及清除认证服务器的访问域中保存的第一token以及全部退出地址,并向认证服务器的登录页面发送第五访问请求;
清除应用服务器的访问域中保存的且需要被清除的登录标识以及第一token;
显示认证服务器响应第五访问请求后返回的登录页面。
在一些实施例中,应用服务器为基于cookie/session机制进行认证的服务器,向认证服务器的认证地址发送第二访问请求,包括:
接收应用服务器发送的第一访问请求的响应,根据第一访问请求的响应向认证地址发送第二访问请求,第一访问请求的响应是应用服务器在确定应用服务器中未保存有用户对应的session后发送的,其中,保存有session表示用户已经在应用服务器上登录;
接收应用服务器发送的用户的登录标识,并将登录标识存储至应用服务器的访问域中,包括;
接收应用服务器发送的与session对应的cookie,并将cookie存储至应用服务器的访问域中。
在一些实施例中,应用服务器为基于token机制进行认证的服务器,向认证服务器的认证地址发送第二访问请求,包括:
接收应用服务器发送的第一访问请求的响应,根据第一访问请求的响应检测应用服务器的访问域中是否保存有用户对应的第二token,以及在结果为否时,控制客户端浏览器向认证地址发送第二访问请求,其中,保存有第二token表示用户已经在应用服务器上登录;
接收应用服务器发送的用户的登录标识,并将登录标识存储至应用服务器的访问域中,包括;
接收应用服务器发送的与第二token,并将第二token存储至应用服务器的访问域中;
清除应用服务器的访问域中保存的且需要被清除的登录标识以及第一token,包括:
清除应用服务器的访问域中保存的第二token以及第一token。
第四方面,本发明实施例提供一种认证服务器,应用于单点登录系统,单点登录系统包括认证服务器以及多个应用服务器,应用服务器为基于cookie/session机制或基于token机制进行认证的服务器,认证服务器包括:
第二访问请求接收模块,用于接收客户端浏览器向认证服务器的认证地址发送的第二访问请求,第二访问请求是应用服务器在接收到客户端浏览器向应用服务器的资源地址发送的第一访问请求、以及根据自身的认证机制确定用户未登录应用服务器后,控制客户端浏览器发送的,第二访问请求中携带有资源地址;
第二访问请求响应模块,用于向客户端浏览器发送第二访问请求的响应,第二访问请求的响应用于控制客户端浏览器检测认证服务器的访问域中是否保存有第一token,其中,保存有第一token表示用户已经在单点登录系统中登录,以及在结果为是时,控制客户端浏览器向资源地址发送第三访问请求,第三访问请求中携带有从认证服务器的访问域中读取的第一token,第三访问请求用于指示应用服务器根据自身的认证机制以及第一token将用户标记为已经在应用服务器上登录。
第五方面,本发明实施例提供一种应用服务器,应用于单点登录系统,单点登录系统包括认证服务器以及多个应用服务器,应用服务器为基于cookie/session机制或token机制进行认证的服务器,应用服务器包括:
第一访问请求接收模块,用于接收客户端浏览器向应用服务器的资源地址发送的第一访问请求;
第二访问请求发送模块,用于响应第一访问请求,根据应用服务器自身的认证机制确定用户是否已经登录应用服务器,在结果为否时,控制客户端浏览器发送向认证服务器的认证地址发送第二访问请求,第二访问请求中携带有资源地址;
第三访问请求接收模块,用于接收客户端浏览器向资源地址发送的第三访问请求,第三访问请求是认证服务器在接收到第二访问请求、以及确定客户端浏览器的认证服务器的访问域中已保存有第一token后,控制客户端浏览器发送的,其中,保存有第一token表示用户已经在单点登录系统中登录,第三访问请求中携带有从认证服务器的访问域中读取的第一token;
第三访问请求响应模块,用于响应第三访问请求,根据应用服务器自身的认证机制以及第一token将用户标记为已经在应用服务器上登录,在标记过程中控制客户端浏览器将生成的登录标识存储至应用服务器的访问域中;
资源发送模块,用于将资源地址对应的受保护资源发送至客户端浏览器。
第六方面,本发明实施例提供一种客户端浏览器,客户端浏览器可访问单点登录系统,单点登录系统包括认证服务器以及多个应用服务器,应用服务器为基于cookie/session机制或token机制进行认证的服务器,客户端浏览器包括:
第一访问请求发送模块,用于向应用服务器的资源地址发送第一访问请求;
第一访问请求响应接收模块,用于接收应用服务器发送的第一访问请求的响应,根据第一访问请求的响应向认证服务器的认证地址发送第二访问请求,第二访问请求中携带有资源地址;
第二访问请求响应接收模块,用于接收认证服务器发送的对第二访问请求的响应,根据第二访问请求的响应检测认证服务器的访问域中是否保存有第一token,其中,保存有第一token表示用户已经在单点登录系统中登录;
第三访问请求发送模块,用于在结果为是时,向资源地址发送第三访问请求,第三访问请求中携带有从认证服务器的访问域中读取的第一token,第三访问请求用于指示应用服务器根据自身的认证机制以及第一token将用户标记为已经在应用服务器上登录;
登录标识处理模块,用于接收应用服务器发送的用户的登录标识,并将登录标识存储至应用服务器的访问域中,登录标识是应用服务器在接收到第三访问请求后,在将用户标记为已经在应用服务器上登录时生成的;
资源接收模块,用于接收应用服务器发送的资源地址对应的受保护资源。
第七方面,本发明实施例提供一种计算机存储介质,计算机存储介质中存储有计算机程序指令,计算机程序指令被计算机的处理器读取并运行时,执行本发明实施例提供的方法的步骤。
第八方面,本发明实施例提供一种电子设备,包括处理器以及计算机存储介质,计算机存储介质中存储有计算机程序指令,计算机程序指令被处理器读取并运行时,执行本发明实施例提供的方法的步骤。
为使本发明的上述目的、技术方案和有益效果能更明显易懂,下文特举实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1至图4示出本发明实施例提供的单点登录方法的交互图;
图5示出了本发明实施例提供的认证服务器的功能模块图;
图6示出了本发明实施例提供的应用服务器的功能模块图;
图7示出了本发明实施例提供的客户端浏览器的功能模块图。
具体实施方式
目前主流的应用系统采用两种不同的认证机制进行用户身份的认证,分别是cookie/session机制和token机制。单点登录系统通常包括相互之间可以进行数据交互的客户端浏览器、认证服务器以及多个应用系统。
发明人经长期研究实践发现,在现有的单点登录系统中,认证服务器基于cookie/session机制实现,应用系统也是基于cookie/session机制实现,对于采用token机制进行认证的应用系统则不能兼容。进一步的,用户从现有的单点登录系统中退出时,由认证服务器向各个应用系统发送通知消息,由各个应用系统的服务器负责清除用户对应的session,如果应用系统是基于cookie/session机制的系统,尚可正常注销,如果应用系统是基于token机制的系统,收到这样消息并不会导致客户端浏览器上的token被清除(因为该消息仅指示清除session),即注销以后该token仍然可能是有效的,该用户仍然可以继续访问基于token机制的应用系统而无需登录,即如果在现有的单点登录系统中直接加入基于token机制的应用系统将导致严重的安全问题。
现有技术中存在的上述缺陷,是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本发明实施例针对上述问题所提出的解决方案,都应该是发明人在本发明过程中对本发明做出的贡献。
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
同时,在本发明的描述中,术语“第一”、“第二”等仅用于将一个实体或者操作与另一个实体或操作区分开来,而不能理解为指示或暗示相对重要性,也不能理解为要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明实施例提供的单点登录系统包括认证服务器以及多个应用服务器,而用户可以通过浏览器登录到单点登录系统,访问应用服务器上的受保护资源。其中,客户端浏览器安装于终端设备上,终端设备可以是台式机、笔记本电脑、平板电脑、手机、智能穿戴设备等。每个应用服务器对应一个应用系统,应用服务器可以为基于cookie/session机制或基于token机制进行认证的服务器,对于单独的应用服务器如何在用户访问该服务器时,利用cookie/session机制或token机制进行用户身份的认证,属于现有技术,这里不作详细介绍,本发明实施例中主要阐述和单点登录相关的内容。可以理解的,本发明实施例中提到的服务器,可以是单台服务器,也可以是几台不同功能的服务器的组合,还可以是服务器集群。
图1示出本发明实施例提供的一种单点登录方法的交互图,图1描述用户非首次登录单点登录系统时的情形。参照图1,该方法包括:
步骤S100:客户端浏览器向应用服务器的资源地址发送第一访问请求。
资源地址对应应用服务器上的受保护资源,该资源需要用户登录后应用服务器后才能返回给用户。在本发明实施例中提到的各种地址,都可以是URL地址,后文不再特别说明。
步骤S101:应用服务器根据应用服务器自身的认证机制确定用户未登录应用服务器。
步骤S102:客户端浏览器向认证服务器的认证地址发送第二访问请求,第二访问请求中携带有资源地址。
对于session/cookie机制的应用服务器,步骤S101以及步骤S102可以实现为:
步骤a1:应用服务器检测应用服务器中是否保存有用户对应的session,其中,保存有session表示用户已经在应用服务器上登录,未保存有session表示用户尚未在应用服务器上登录。
步骤a2:在步骤b1中的检测结果为否时,应用服务器向客户端浏览器发送第一访问请求的响应,第一访问请求的响应中可以包含可执行代码,例如javascript脚本,客户端浏览器接收到第一访问请求的响应后执行该代码实现预定义的行为,即向认证服务器的认证地址发送第二访问请求,从而,也可以说客户端浏览器在应用服务器的控制下发送了第二访问请求。第二访问请求中携带有资源地址,以便后续步骤中客户端浏览器跳转回该资源地址时使用。
对于token机制的应用服务器,步骤S101以及步骤S102可以实现为:
步骤b1:应用服务器向客户端浏览器发送第一访问请求的响应。
步骤b2:客户端浏览器根据第一访问请求的响应,检测应用服务器的访问域中是否保存有用户对应的第二token,其中,保存有第二token表示用户已经在应用服务器上登录,未保存有session表示用户尚未在应用服务器上登录。与步骤a2类似的,第一访问请求的响应中可以包含可执行代码,通过这些代码控制客户端浏览器的行为,后文中不再重复阐述如何通过响应控制客户端浏览器的行为。
步骤b3:在步骤b2中的检测结果为否时,客户端浏览器向认证地址发送第二访问请求,第二访问请求中携带有资源地址,携带资源地址的作用在步骤a2中已经阐述。
其中,认证地址是认证服务器的一个特殊地址,认证服务器接收到针对认证地址的第二访问请求后,开始执行授权用户登录的流程。
步骤S103:认证服务器向客户端浏览器发送第二访问请求的响应。
第二访问请求的响应可以控制客户端浏览器执行步骤S104。
步骤S104:客户端浏览器确定认证服务器的访问域中保存有第一token。
其中,保存有第一token表示用户已经在单点登录系统中的其他应用服务器上登录,未保存有第一token表示用户尚未在单点登录系统中登录,当前应用服务器是用户本次登录该单点登录系统时首先登录的应用服务器。关于实现第一token的保存,在后文中会具体阐述。
客户端浏览器的存储空间(例如WebStorage,Html5支持的特性)分为多个访问域,不同的访问域对应不同的域名,出于安全性考虑,各访问域之间通常不能跨域访问数据。认证服务器和各个应用服务器在客户端浏览器上都有自己的访问域,例如,客户端浏览器正在访问认证服务器时,将只能操作认证服务器的访问域中的数据,不能操作应用服务器的访问域中的数据。当然,在某些实现方式中,认证服务器和应用服务器也有可能部署在同一域名下,此时它们将使用同一个访问域。后文在阐述时仍以各服务器的访问域不同的情况为例进行阐述。
步骤S105:客户端浏览器向资源地址发送第三访问请求,第三访问请求中携带有从认证服务器的访问域中读取的第一token。
第三访问请求通过携带的第一token与第一访问请求相区别,用于告知应用服务器用户已经登录单点登录系统。
步骤S106:应用服务器根据自身的认证机制以及第一token将用户标记为已经在应用服务器上登录,在标记过程中控制客户端浏览器将生成的登录标识存储至应用服务器的访问域中。
对于session/cookie机制的应用服务器,步骤S106可以实现为:
步骤c1:应用服务器根据第一token生成用户对应的session,并将该session存储至应用服务器。
第一token用于标识用户是否在单点登录系统中登录,因此第一token中包含有用户的身份信息,即第一token与用户是对应的,而session用于标识用户是否在当前的应用服务器上登录,即session也是与用户对应的,因此可以根据第一token生成session。
步骤c2:应用服务器生成与该session对应的cookie并将cookie发送至客户端浏览器。
该cookie即步骤S106中所说的登录标识,cookie中包含有session的sessionid。
步骤c3:客户端浏览器将cookie存储至应用服务器的访问域中。
后续客户端浏览器再次访问该应用服务器时,只需要在访问请求中携带从cookie中读取的sessionid,应用服务器即可以根据sessionid获取到用户对应的session进而完成认证并返回用户请求的资源,这一过程就是普通的基于cookie/session机制的应用服务器的认证过程,不再涉及认证服务器,这里不再详细阐述。
对于token机制的应用服务器,步骤S106可以实现为:
步骤d1:应用服务器根据第一token以及应用服务器的私钥生成第二token,并将第二token发送至客户端浏览器。
第一token用于标识用户是否在单点登录系统中登录,因此第一token中包含有用户的身份信息,即第一token与用户是对应的,而第二token用于标识用户是否在当前的应用服务器上登录,即第二token也是与用户对应的,因此可以根据第一token生成第二token。其中,应用服务器的私钥用于根据第一token计算一个签名,该签名保存在第二token中,便于在后续步骤中验证第二token的有效性。该第二token即步骤S106中所说的登录标识。
步骤d2:客户端浏览器将第二token存储至应用服务器的访问域中。
后续客户端浏览器再次访问该应用服务器时,只需要在访问请求中携带第二token,应用服务器即可以通过验证第二token的有效性完成认证并返回用户请求的资源,这一过程就是普通的基于token机制的应用服务器的认证过程,不再涉及认证服务器,这里不再详细阐述。
步骤S107:应用服务器将资源地址对应的受保护资源发送至客户端浏览器。
在前述步骤中,已经确认了用户登录了单点登录系统,同时将用户在当前的应用服务器上也标记为已经登录。因此可以向客户端浏览器返回受保护资源。
综上所述,本发明实施例提供的单点方法在认证服务器的访问域中保存第一token,保存有第一token表示用户之前已经在单点登录系统中的某个应用服务器上登录。从而,在用户登录单点登录系统中的一个尚未登录过的应用服务器时,认证服务器只需要控制客户端浏览器检测认证服务器的访问域中是否保存有第一token,就可以确定是否应当允许用户直接登录到当前的应用服务器上,从而实现了单点登录功能。
在该方法中,认证服务器采用token机制,利用第一token确定用户是否已经登录单点登录系统,应用服务器则既可以采用cookie/session机制也可以采用token机制,根据自身的认证机制确定用户是否已经登录应用服务器以及标记已经登录的用户,从而实现了在一个单点登录系统中兼容采用不同认证机制的应用服务器,显著扩大了单点登录机制的灵活性和适用范围。
图2示出本发明实施例提供的一种单点登录方法的交互图,图2描述用户首次登录单点登录系统时的情形。参照图2,该方法包括:
步骤S200:客户端浏览器向应用服务器的资源地址发送第一访问请求。
步骤S201:应用服务器1根据应用服务器自身的认证机制确定用户未登录应用服务器。
步骤S202:客户端浏览器向认证服务器的认证地址发送第二访问请求,第二访问请求中携带有资源地址。
步骤S203:认证服务器向客户端浏览器发送第二访问请求的响应。
步骤S200至步骤S203和步骤S100至步骤S103相同,不再具体阐述。
步骤S204:客户端浏览器确定认证服务器的访问域中未保存有第一token。
其中,保存有第一token表示用户已经在单点登录系统中的其他应用服务器上登录,未保存有第一token表示用户尚未在单点登录系统中登录,当前应用服务器是用户本次登录该单点登录系统时首先登录的应用服务器。
步骤S205:客户端浏览器向认证服务器的登录页面发送第四访问请求,第四访问请求中携带有资源地址。
登录页面的地址可以在第二访问请求的响应中携带,即通过第二访问请求的响应控制客户端浏览器执行步骤S204与步骤S205。第四访问请求中携带有资源地址,以便后续步骤中客户端浏览器跳转回该资源地址时使用。
步骤S206:认证服务器向客户端浏览器返回登录页面。
客户端浏览器将登录页面显示给用户,用户可以在登录页面上输入登录信息并提交,例如,输入用户名、密码等内容。
步骤S207:客户端浏览器响应用户的登录操作,向认证服务器发送用户登录请求,用户登录请求中携带有用户在登录页面上提交的登录信息以及资源地址。
用户的登录操作可以是用户提交登录信息的操作,例如,在页面上点击登录按钮等行为。用户登录请求中携带有资源地址,以便后续步骤中客户端浏览器跳转回该资源地址时使用。
步骤S208:认证服务器确定登录信息有效。
例如,用户的注册信息保存在认证服务器的数据库中,认证服务器查询该数据库就可以确定用户提交的登录信息是否有效。若有效,执行后续步骤,若无效,可以向客户端浏览器返回错误提示。
步骤S209:认证服务器根据与登录信息对应的用户信息以及认证服务器的私钥生成第一token。
第一token中包含用户的身份信息,身份信息可以是用户信息的一部分,能够唯一标识用户的身份,例如用户id。第一token中还包含利用认证服务器的私钥以及用户信息计算的一个签名,该签名在后续步骤中验证第一token的有效性时使用。可以理解的,在生成签名时,还可以包含更多的信息项,例如还可以利用认证服务器的私钥、用户信息、随机数以及客户端的IP地址生成签名,采用更多信息项以后,可以增加第一token的破解难度,提高单点登录系统的安全性。
在一些实现方式中,第一token中还可以包含第一token的有效期,该有效期可以在服务器颁发令牌时根据认证服务器的配置生成,在验证第一token的有效性还可以根据此有效期验证第一token是否过期。关于第一token过期的情况,在后文中说明。
步骤S210:认证服务器向客户端浏览器发送用户登录请求的响应。
步骤S211:客户端浏览器将第一token存储至认证服务器的访问域中。
前文已经提到,将第一token保存至认证服务器的访问域,表示用户已经在单点登录系统中登录。
步骤S212:客户端浏览器向资源地址发送第三访问请求,第三访问请求中携带有从认证服务器的访问域中读取的第一token。
步骤S213:应用服务器根据自身的认证机制以及第一token将用户标记为已经在应用服务器上登录,在标记过程中控制客户端浏览器将生成的登录标识存储至应用服务器的访问域中。
步骤S214:应用服务器将资源地址对应的受保护资源发送至客户端浏览器。
步骤S212至步骤S214与步骤S105至步骤S107相同,不再具体阐述。
若用户首先通过图2的步骤访问了单点登录系统中的一个应用服务器上的资源,第一token将生成并被存储至客户端浏览器的认证服务器的访问域中,用户再通过图1的步骤试图访问单点登录系统中的另一个应用服务器上的资源时,由于检测到第一token已经被保存,可以直接登录成功并获得受保护资源,无需再次到登录页面登录。并且,并不限定图1和图2中的应用服务器本身采用何种认证机制,二者的认证机制可以相同也可以不同。
图3示出本发明实施例提供的一种单点登录方法的交互图,图3描述用户退出单点登录系统时的情形。图3中的步骤可以在步骤S105或步骤S212之后执行。参照图3,该方法包括:
步骤S300:应用服务器向认证服务器发送应用服务器的退出地址。
步骤S300可以是应用服务器响应第三访问请求所做出的行为。退出地址是指每个应用服务器在退出时客户端浏览器所要请求访问的地址。该地址在应用服务器上是预先配置好的。
步骤S301:认证服务器将退出地址发送至客户端浏览器。
步骤S302:客户端浏览器将退出地址保存至认证服务器的访问域中。
将退出地址保存至认证服务器的访问域中,从而认证服务器可以操作这些退出地址,实现用户在各个应用服务器上的注销。具体见后续步骤。
步骤S303:客户端浏览器响应用户注销操作,向退出地址发送的第一退出请求。
用户注销操作可以是用户在某个资源页面上做出的操作,例如,点击页面上的注销按钮。作为注销操作的响应,第一退出请求将被生成。
步骤S304:应用服务器确定第一退出请求中未携带退出标识。
退出标识的作用在于区分第一退出请求和第三退出请求(见步骤S310),若不采用退出标识,在步骤S304和步骤S310之间将可能产生一个死循环。
步骤S305:应用服务器向客户端浏览器发送第一退出请求的响应。
第一退出请求的响应用于重定向客户端浏览器,即控制客户端浏览器执行步骤S306。
步骤S306:客户端浏览器向认证服务器的注销地址发送的第二退出请求。
注销地址是认证服务器的一个特殊地址,认证服务器在接收到针对该地址的第二退出请求后,将进入注销流程,同时不再授权当前用户在单点登录系统中的其他应用服务器上的登录,避免和注销流程发生矛盾。
步骤S307:认证服务器向客户端浏览器发送第二退出请求的响应。
第二退出请求的响应用于控制客户端浏览器执行步骤S30、S309以及S312。
步骤S308:客户端浏览器向认证服务器的访问域中保存的每个退出地址发送第三退出请求,第三退出请求中携带有退出标识。
对于单点登系统而言,在其中一个应用服务器中注销,意味这在整个单点登录系统中注销,或者说在每个登录过的应用服务器中都要注销,因此步骤S308中并需要向认证服务器的访问域中保存的每个退出地址发送第三退出请求,其中包括当前的应用服务器。退出标识将在步骤S310中使用,用于区分第一退出请求和第三退出请求。
步骤S309:客户端浏览器清除认证服务器的访问域中保存的第一token以及全部退出地址。
认证服务器的访问域中保存的第一token是用户登录单点登录系统的标识,既然用户已经注销,可以将其清除掉。
在一些实现方式中,向各应用服务器的退出地址发送完第三退出请求后,就可以将这些退出地址清除掉,在另一些实现方式中,也可以等应用服务器给出某些注销反馈后再将其清除掉。
步骤S310:应用服务器确定第三退出请求中携带有退出标识。
利用退出标识,应用服务器可以确定当前的退出请求为第三退出请求,即由认证服务器控制发起的退出请求。
步骤S311:应用服务器根据应用服务器自身的认证机制将用户标记为已经在应用服务器上注销。
对于cookie/session机制的应用服务器,步骤S311可以实现为:
应用服务器清除应用服务器上保存的用户对应的session,一旦session被清除,客户端浏览器上的cookie自然也就失效了,因此cookie可以不进行清理。
对于token机制的应用服务器,步骤S311可以实现为:
应用服务器向客户端浏览器发送第三退出请求的响应,第三退出请求的响应用于控制客户端浏览器清除应用服务器的访问域中保存的第二token。第二token被清理掉后,不会出现现有单点登录系统在注销时,凭借尚未失效的token继续登录的问题。
步骤S312:客户端浏览器向认证服务器的登录页面发送第五访问请求。
步骤S312可以和步骤S310并行执行,即步骤S312可以作为第二退出请求的响应的一部分。
步骤S313:认证服务器向客户端浏览器返回登录页面。
注销后客户端浏览器重定向到登录页面。
在上面的步骤中,由于将各个应用服务器的退出地址存储至认证服务器的访问域中,从用户在某个应用服务器上请求退出时,认证服务器可以直接控制客户端浏览器向保存的每个退出地址发送第三退出请求,以使各个应用服务器根据自身的认证机制独立地注销用户,进而使得用户退出整个单点登录系统。同时,每个应用服务器根据自身的认证机制独立地注销用户,由于单个应用服务器,无论是基于cookie/session机制还是token机制,其注销流程都是成熟的现有技术,交由各个应用服务器自行处理用户的注销能够确保用户正常注销,杜绝安全隐患。
图4示出本发明实施例提供的一种单点登录方法的交互图,图4描述用户退出单点登录系统时的情形,但与图3不同,更多地考虑了跨域请求的问题。图4中的步骤可以在步骤S105或步骤S212之后执行。参照图4,该方法包括:
步骤S400:应用服务器向认证服务器发送第一令牌验证请求,第一令牌验证请求中携带有第一token以及应用服务器的退出地址
步骤S401:认证服务器确定第一token有效。
步骤S402:认证服务器将退出地址发送至客户端浏览器。
步骤S403:客户端浏览器将退出地址保存至认证服务器的访问域中。
步骤S404:认证服务器向应用服务器发送第一令牌验证请求的响应,第一令牌验证请求的响应用于指示第一token有效。
步骤S400至步骤S404实现的功能和步骤S300至步骤S302基本相同,但多出了将第一token发送到认证服务器上进行验证的步骤,其目的是为了防止跨域伪造请求攻击,因为第三访问请求涉及从认证服务器到应用服务器的跨域问题。在一些实现方式中,应用服务器和认证服务器部署在同一个域中,则可以无需考虑跨域伪造请求的问题,此时直接采用图3示出的方法。
其中,第一令牌验证请求的响应中还可以携带第一token。
在步骤S401中若认证服务器确定第一token无效,可以直接控制浏览器跳转到登录页面。
步骤S405:应用服务器向客户端浏览器发送第一token;
步骤S406:客户端浏览器将第一token保存至应用服务器的访问域中。
第一token被保存至应用服务器的访问域中,在步骤S410中会使用,另外可以用于检验第一token是否过期,在后文中会进一步阐述。
步骤S407:客户端浏览器响应用户注销操作,向退出地址发送的第一退出请求。
步骤S408:应用服务器确定第一退出请求中未携带退出标识。
步骤S409:应用服务器向客户端浏览器发送第一退出请求的响应。
步骤S410:客户端浏览器向认证服务器的注销地址发送的第二退出请求,第二退出请求中携带有从应用服务器的访问域中读取的第一token。
步骤S411:认证服务器确定第一token有效。
步骤S412:认证服务器向客户端浏览器发送第二退出请求的响应。
步骤S407至步骤S412的功能和步骤S303至步骤S307基本相同,区别主要是增加了步骤S11,在认证服务器上验证从应用服务器的访问域中读取的第一token的有效性,因为第二退出请求也涉及从应用服务器到认证服务器的跨域问题,可能存在跨域伪造请求的问题。
步骤S413:客户端浏览器向认证服务器的访问域中保存的每个退出地址发送第三退出请求,第三退出请求中携带有退出标识以及从认证服务器的访问域中读取的第一token。
步骤S414:客户端浏览器清除认证服务器的访问域中保存的第一token以及全部退出地址。
步骤S415:应用服务器确定第三退出请求中携带有退出标识。
步骤S416:应用服务器向认证服务器发送第二令牌验证请求,第二令牌验证请求中携带有第一token。
步骤S417:认证服务器确定第一token有效。
步骤S418:认证服务器向应用服务器发送第一令牌验证请求的响应,第一令牌验证请求的响应用于指示第一token有效。
步骤S419:应用服务器根据应用服务器自身的认证机制将用户标记为已经在应用服务器上注销。
步骤S420:客户端浏览器向认证服务器的登录页面发送第五访问请求。
步骤S421:认证服务器向客户端浏览器返回登录页面。
步骤S413至步骤S421的功能和步骤S318至步骤S313基本相同,但多出了将第一token发送到认证服务器上进行验证的步骤(S416至S418),在认证服务器上验证从认证服务器的访问域中读取的第一token(携带于第三退出请求中)的有效性,因为第三退出请求也涉及从认证服务器到应用服务器的跨域问题。
在请求涉及跨域访问时,将第一token作为验证请求真实性的标识,有利于避免跨域请求伪造的为题,改善单点登录系统的安全性。
进一步的,在步骤S406之后,本发明实施例提供的单点登录方法还可以包括:
步骤e1:客户端浏览器向应用服务器的资源地址发送第六访问请求;
步骤e2:应用系统服务器向客户端浏览器发送第六访问请求的响应;
步骤e3:客户端浏览器根据第六访问请求的响应向认证服务器发送第三令牌验证请求,第三令牌验证请求中携带有第一token,其中,第一token是从应用服务器的访问域中读取的;
步骤e4:认证服务器响应第三令牌验证请求,验证第一token是否有效,并在结果为是时,并向应用服务器发送第三令牌验证请求的响应,第三令牌验证请求的响应用于指示第一token有效;
步骤e5:接收认证服务器发送的第三令牌验证请求的响应。
在用户请求资源时,若应用服务器的访问域中已保存有第一token,可以将其发送到认证服务器验证其是否有效,验证的内容包括第一token是否过期,若有效则继续执行请求资源的流程。每次验证时若成功还可以为第一token续期,即延长其有效期,延期后的第一token可以通过第三令牌验证请求的响应发送至应用服务器。若第一token无效,可以由认证服务器发起注销流程,例如可以参照步骤S412之后的注销流程执行。
用户在应用服务器上的登录通常是具有有效期的,例如30分钟,30分钟内用户在该应用服务器上无操作,例如,打开应用服务器提供的某个页面后,30分钟内未点击,将导致用户在该应用服务器上的登录过期,再次访问该应用服务器时需要重新登录,若30分钟内有操作,将从操作的时间点开始续期30分钟。然而,在单点登录系统中,除非用户在所有已登录的应用服务器上都过期(第一token过期),否则即使在其中某个应用服务器上的登录过期,再次访问该应用服务器时,应用服务器仍然会自动为该用户续期。下面分不同的认证机制阐述续期行为的方法。
对于cookie/session机制的应用服务器,方法包括如下步骤,假设用户之前已经登录过该应用服务器,且目前登录过期:
步骤f1:客户端浏览器向应用服务器的资源地址发送第七访问请求,第七访问请求中携带有从应用服务器的访问域中保存的cookie中读取的sessionid。
步骤f2:应用服务器根据sessionid获取用户对应的session并确定该session已经失效。
步骤f3:应用服务器向客户端浏览器发送第七访问请求的响应。
步骤f4:客户端浏览器根据第七访问请求的响应,向认证服务器的认证地址发送第八访问请求,第八访问请求中携带有资源地址。
步骤f5:认证服务器向客户端浏览器发送第八访问请求的响应。
步骤f6:客户端浏览器确定认证服务器的访问域中保存有第一token,其中,保存有第一token表示用户已经在单点登录系统中的其他应用服务器上登录且第一token未过期;
步骤f7:客户端浏览器向资源地址发送第九访问请求,第九访问请求中携带有从认证服务器的访问域中读取的第一token。
步骤f8:应用服务器根据第一token生成新的session并将新的session存储至应用服务器。
步骤f9:应用服务器生成与新的session对应的新的cookie并将新的cookie发送至客户端浏览器。
步骤f10:客户端浏览器将新的cookie存储至应用服务器的访问域中。
步骤f11:应用服务器将资源地址对应的受保护资源发送至客户端浏览器。
只要认证服务器的访问域中仍然保存有第一token,表明用户仍登录单点登录系统(若第一token过期将导致注销),因此可以为用户续期,session和cookie都得到更新后,用户续期成功。以上步骤除步骤f1、f2之外均与步骤S100至步骤S107类似,不再详细阐述,作为区别之处的步骤f1以及f2主要是验证session过期的部分。可以理解的,除了过期之外,其他原因导致的session失效也可以参照上述步骤处理。
对于token机制的应用服务器,方法包括如下步骤,假设用户之前已经登录过该应用服务器,且目前登录过期:
步骤g1:客户端浏览器向应用服务器的资源地址发送第七访问请求,第七访问请求中携带有从应用服务器的访问域中读取的第二token。
步骤g2:应用服务器根据确定该第二token已经失效。
步骤g3:应用服务器向客户端浏览器发送第七访问请求的响应。
步骤g4:客户端浏览器根据第七访问请求的响应,向认证服务器的认证地址发送第八访问请求,第八访问请求中携带有资源地址。
步骤g5:认证服务器向客户端浏览器发送第八访问请求的响应。
步骤g6:客户端浏览器确定认证服务器的访问域中保存有第一token,其中,保存有第一token表示用户已经在单点登录系统中的其他应用服务器上登录且第一token未过期;
步骤g7:客户端浏览器向资源地址发送第九访问请求,第九访问请求中携带有从认证服务器的访问域中读取的第一token。
步骤g8:应用服务器根据第一token生成新的第二token并将新的第二token发送至客户端浏览器。
步骤g9:客户端浏览器将新的第二token存储至应用服务器的访问域中。
步骤g10:应用服务器将资源地址对应的受保护资源发送至客户端浏览器。
只要认证服务器的访问域中仍然保存有第一token,表明用户仍登录单点登录系统(若第一token过期将导致注销),因此可以为用户续期,第二token得到更新后,用户续期成功。以上步骤除步骤g1、g2之外均与步骤S100至步骤S107类似,不再详细阐述,作为区别之处的步骤g1以及g2主要是验证第二token过期的部分。可以理解的,除了过期之外,其他原因导致的第二token失效也可以参照上述步骤处理。
本发明实施例还提供一种认证服务器500,如图5所示。参照图5,认证服务器500应用于单点登录系统,单点登录系统包括认证服务器500以及多个应用服务器,应用服务器为基于cookie/session机制或基于token机制进行认证的服务器,认证服务器500包括:
第二访问请求接收模块510,用于接收客户端浏览器向认证服务器的认证地址发送的第二访问请求,第二访问请求是应用服务器在接收到客户端浏览器向应用服务器的资源地址发送的第一访问请求、以及根据自身的认证机制确定用户未登录应用服务器后,控制客户端浏览器发送的,第二访问请求中携带有资源地址;
第二访问请求响应模块520,用于向客户端浏览器发送第二访问请求的响应,第二访问请求的响应用于控制客户端浏览器检测认证服务器的访问域中是否保存有第一token,其中,保存有第一token表示用户已经在单点登录系统中登录,以及在结果为是时,控制客户端浏览器向资源地址发送第三访问请求,第三访问请求中携带有从认证服务器的访问域中读取的第一token,第三访问请求用于指示应用服务器根据自身的认证机制以及第一token将用户标记为已经在应用服务器上登录。
本发明实施例提供的认证服务器500,其实现原理及产生的技术效果在前述方法实施例中已经阐述,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中的相应内容。
本发明实施例还提供一种应用服务器600,如图6所示。参照图6,应用服务器600应用于单点登录系统,单点登录系统包括认证服务器以及多个应用服务器600,应用服务器600为基于cookie/session机制或token机制进行认证的服务器,应用服务器600包括:
第一访问请求接收模块610,用于接收客户端浏览器向应用服务器的资源地址发送的第一访问请求;
第二访问请求发送模块620,用于响应第一访问请求,根据应用服务器自身的认证机制确定用户是否已经登录应用服务器,在结果为否时,控制客户端浏览器发送向认证服务器的认证地址发送第二访问请求,第二访问请求中携带有资源地址;
第三访问请求接收模块630,用于接收客户端浏览器向资源地址发送的第三访问请求,第三访问请求是认证服务器在接收到第二访问请求、以及确定客户端浏览器的认证服务器的访问域中已保存有第一token后,控制客户端浏览器发送的,其中,保存有第一token表示用户已经在单点登录系统中登录,第三访问请求中携带有从认证服务器的访问域中读取的第一token;
第三访问请求响应模块640,用于响应第三访问请求,根据应用服务器自身的认证机制以及第一token将用户标记为已经在应用服务器上登录,在标记过程中控制客户端浏览器将生成的登录标识存储至应用服务器的访问域中;
资源发送模块650,用于将资源地址对应的受保护资源发送至客户端浏览器。
本发明实施例提供的应用服务器600,其实现原理及产生的技术效果在前述方法实施例中已经阐述,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中的相应内容。
本发明实施例还提供一种客户端浏览器700,如图7所示。参照图7,客户端浏览器700可访问单点登录系统,单点登录系统包括认证服务器以及多个应用服务器,应用服务器为基于cookie/session机制或token机制进行认证的服务器,客户端浏览器700包括:
第一访问请求发送模块710,用于向应用服务器的资源地址发送第一访问请求;
第二访问请求发送模块720,用于向认证服务器的认证地址发送第二访问请求,第二访问请求是应用服务器在接收到第一访问请求、以及根据自身的认证机制确定用户未登录应用服务器后,控制客户端浏览器发送的,第二访问请求中携带有资源地址;
第二访问请求响应接收模块730,用于接收认证服务器发送的对第二访问请求的响应,根据第二访问请求的响应检测认证服务器的访问域中是否保存有第一token,其中,保存有第一token表示用户已经在单点登录系统中登录;
第三访问请求发送模块740,用于在结果为是时,向资源地址发送第三访问请求,第三访问请求中携带有从认证服务器的访问域中读取的第一token,第三访问请求用于指示应用服务器根据自身的认证机制以及第一token将用户标记为已经在应用服务器上登录;
登录标识处理模块750,用于接收应用服务器发送的用户的登录标识,并将登录标识存储至应用服务器的访问域中,登录标识是应用服务器在接收到第三访问请求后,在将用户标记为已经在应用服务器上登录时生成的;
资源接收模块760,用于接收应用服务器发送的资源地址对应的受保护资源。
本发明实施例提供的客户端浏览器700,其实现原理及产生的技术效果在前述方法实施例中已经阐述,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中的相应内容。
本发明实施例还提供一种计算机存储介质,计算机存储介质中存储有计算机程序指令,计算机程序指令被计算机的处理器读取并运行时,执行本发明实施例提供的方法的步骤。
本发明实施例还提供一种电子设备,包括处理器以及计算机存储介质,计算机存储介质中存储有计算机程序指令,计算机程序指令被处理器读取并运行时,执行本发明实施例提供的方法的步骤。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其他的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得计算机设备执行本发明各个实施例所述方法的全部或部分步骤。前述的计算机设备包括:个人计算机、服务器、移动设备、智能穿戴设备、网络设备、虚拟设备等各种具有执行程序代码能力的设备,前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟、磁带或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (14)

1.一种单点登录方法,其特征在于,应用于单点登录系统中的认证服务器,所述单点登录系统包括认证服务器以及多个应用服务器,所述应用服务器为基于cookie/session机制或基于token机制进行认证的服务器,所述方法包括:
接收客户端浏览器向所述认证服务器的认证地址发送的第二访问请求,所述第二访问请求是所述应用服务器在接收到所述客户端浏览器向所述应用服务器的资源地址发送的第一访问请求、以及根据自身的认证机制确定用户未登录所述应用服务器后,控制所述客户端浏览器发送的,所述第二访问请求中携带有所述资源地址;
向所述客户端浏览器发送所述第二访问请求的响应,所述第二访问请求的响应用于控制所述客户端浏览器检测所述认证服务器的访问域中是否保存有第一token,其中,保存有所述第一token表示所述用户已经在所述单点登录系统中登录,以及在结果为是时,控制所述客户端浏览器向所述资源地址发送第三访问请求,所述第三访问请求中携带有从所述认证服务器的访问域中读取的所述第一token,所述第三访问请求用于指示所述应用服务器根据自身的认证机制以及所述第一token将所述用户标记为已经在所述应用服务器上登录。
2.根据权利要求1所述的单点登录方法,其特征在于,所述第二访问请求的响应还用于控制所述客户端浏览器检测所述认证服务器的访问域中是否保存有所述第一token,并在结果为否时,控制所述客户端浏览器向所述认证服务器的登录页面发送第四访问请求,所述第四访问请求中携带有所述资源地址,所述方法还包括:
响应所述第四访问请求,向所述客户端浏览器返回所述登录页面;
接收所述客户端浏览器发送的用户登录请求,所述用户登录请求中携带有所述用户在所述登录页面上提交的登录信息以及所述资源地址;
响应所述用户登录请求,验证所述登录信息是否有效,在结果为是时,根据与所述登录信息对应的用户信息以及所述认证服务器的私钥生成所述第一token;
向所述客户端浏览器发送所述用户登录请求的响应,所述用户登录请求的响应用于控制所述客户端浏览器将所述第一token存储至所述认证服务器的访问域中,并向所述资源地址发送所述第三访问请求。
3.根据权利要求1或2所述单点登录方法,其特征在于,在控制所述客户端浏览器向所述资源地址发送所述第三访问请求之后,所述方法还包括:
接收所述应用服务器发送的所述应用服务器的退出地址,并控制所述客户端浏览器将所述退出地址存储至所述认证服务器的访问域中;
接收所述客户端浏览器向所述认证服务器的注销地址发送的第二退出请求,所述第二退出请求是所述应用服务器在接收到所述客户端浏览器向所述退出地址发送的第一退出请求、以及确定所述第一退出请求中未携带退出标识后,控制所述客户端浏览器发送的;
响应所述第二退出请求,向所述客户端浏览器发送所述第二退出请求的响应,所述第二退出请求的响应用于控制所述客户端浏览器向所述认证服务器的访问域中保存的每个退出地址发送第三退出请求,所述第三退出请求中携带有所述退出标识,以及控制所述客户端浏览器清除所述认证服务器的访问域中保存的所述第一token以及全部退出地址,并向所述认证服务器的登录页面发送第五访问请求;
响应所述第五访问请求,向所述客户端浏览器返回所述登录页面。
4.根据权利要求1或2所述的单点登录方法,其特征在于,在控制所述客户端浏览器向所述资源地址发送所述第三访问请求之后,所述方法还包括:
接收所述应用服务器发送的第一令牌验证请求,所述第一令牌验证请求中携带有所述第一token以及所述应用服务器的退出地址;
响应所述第一令牌验证请求,验证所述第一token是否有效,并在结果为是时,控制所述客户端浏览器将所述退出地址存储至所述认证服务器的访问域中,并向所述应用服务器发送所述第一令牌验证请求的响应,所述第一令牌验证请求的响应用于指示所述第一token有效;
接收所述客户端浏览器向所述认证服务器的注销地址发送的第二退出请求,所述第二退出请求是所述应用服务器在接收到所述客户端浏览器向所述退出地址发送的第一退出请求、以及确定所述第一退出请求中未携带退出标识后,控制所述客户端浏览器发送的,所述第二退出请求中携带有从所述应用服务器的访问域中读取的所述第一token,所述第一token是所述应用服务器在接收到所述第一令牌验证请求的响应后,控制所述客户端浏览器存储至所述应用服务器的访问域中的;
响应所述第二退出请求,验证所述第一token是否有效,在结果为是时,向所述客户端浏览器发送所述第二退出请求的响应,所述第二退出请求的响应用于控制所述客户端浏览器向所述认证服务器的访问域中保存的每个退出地址发送第三退出请求,所述第三退出请求中携带有所述退出标识以及从所述认证服务器的访问域中读取的所述第一token,以及控制所述客户端浏览器清除所述认证服务器的访问域中保存的所述第一token以及全部退出地址,并向所述认证服务器的登录页面发送第五访问请求;
接收所述应用服务器发送的第二令牌验证请求,所述第二令牌验证请求中携带有所述第一token;
响应所述第二令牌验证请求,验证所述第一token是否有效,并在结果为是时,向所述应用服务器发送所述第二令牌验证请求的响应,所述第二令牌验证请求的响应用于指示所述第一token有效;
响应所述第五访问请求,向所述客户端浏览器返回所述登录页面。
5.一种单点登录方法,其特征在于,应用于单点登录系统中的应用服务器,所述单点登录系统包括认证服务器以及多个应用服务器,所述应用服务器为基于cookie/session机制或token机制进行认证的服务器,所述方法包括:
接收客户端浏览器向所述应用服务器的资源地址发送的第一访问请求;
响应所述第一访问请求,根据所述应用服务器自身的认证机制确定用户是否已经登录所述应用服务器,在结果为否时,控制所述客户端浏览器发送向所述认证服务器的认证地址发送第二访问请求,所述第二访问请求中携带有所述资源地址;
接收所述客户端浏览器向所述资源地址发送的第三访问请求,所述第三访问请求是所述认证服务器在接收到所述第二访问请求、以及确定所述客户端浏览器的所述认证服务器的访问域中已保存有第一token后,控制所述客户端浏览器发送的,其中,保存有所述第一token表示所述用户已经在所述单点登录系统中登录,所述第三访问请求中携带有从所述认证服务器的访问域中读取的所述第一token;
响应所述第三访问请求,根据所述应用服务器自身的认证机制以及所述第一token将所述用户标记为已经在所述应用服务器上登录,在标记过程中控制所述客户端浏览器将生成的登录标识存储至所述应用服务器的访问域中;
将所述资源地址对应的受保护资源发送至所述客户端浏览器。
6.根据权利要求5所述的单点登录方法,其特征在于,在所述接收所述客户端浏览器向所述资源地址发送的第三访问请求之后,所述方法还包括:
响应所述第三访问请求,向所述认证服务器发送所述应用服务器的退出地址;
接收所述客户端浏览器向所述退出地址发送的第一退出请求,其中,所述退出地址是所述认证服务器控制所述客户端浏览器存储至所述认证服务器的访问域中的;
响应所述第一退出请求,在确定所述第一退出请求中未携带退出标识后,向所述客户端浏览器发送所述第一退出请求的响应,所述第一退出请求的响应用于控制所述客户端浏览器向所述认证服务器的注销地址发送第二退出请求;
接收所述客户端浏览器向所述退出地址发送的第三退出请求;
响应所述第三退出请求,在确定所述第三退出请求中携带有所述退出标识后,根据所述应用服务器自身的认证机制将所述用户标记为已经在所述应用服务器上注销。
7.根据权利要求5所述的单点登录方法,其特征在于,在所述接收所述客户端浏览器向所述资源地址发送的第三访问请求之后,所述方法还包括:
响应所述第三访问请求,向所述认证服务器发送第一令牌验证请求,所述第一令牌验证请求中携带有所述第一token以及所述应用服务器的退出地址;
接收所述认证服务器发送的所述第一令牌验证请求的响应,所述第一令牌验证请的求响应用于指示所述第一token有效;
控制所述客户端浏览器将所述第一token存储至所述应用服务器的访问域中;
接收所述客户端浏览器向所述退出地址发送的第一退出请求,其中,所述退出地址是所述认证服务器控制所述客户端浏览器存储至所述认证服务器的访问域中的;
响应所述第一退出请求,在确定所述第一退出请求中未携带退出标识后,向所述客户端浏览器发送所述第一退出请求的响应,所述第一退出请求的响应用于控制所述客户端浏览器向所述认证服务器的注销地址发送第二退出请求,所述第二退出请求中携带有从所述应用服务器的访问域中读取的所述第一token;
接收所述客户端浏览器向所述退出地址发送的第三退出请求,所述第三退出请求中携带有所述退出标识以及从所述认证服务器的访问域中读取的所述第一token;
响应所述第三退出请求,在确定所述第三退出请求中携带有所述退出标识后,向所述认证服务器发送第二令牌验证请求,所述第二令牌验证请求中携带有所述第一token;
接收所述认证服务器发送的所述第二令牌验证请求的响应,所述第二令牌验证请的求响应用于指示所述第一token有效;
根据所述应用服务器自身的认证机制将所述用户标记为已经在所述应用服务器上注销,并控制所述客户端浏览器清除所述应用服务器的访问域中保存的所述第一token。
8.根据权利要求7所述的单点登录方法,其特征在于,在所述控制所述客户端浏览器将所述第一token存储至所述应用服务器的访问域中之后,所述方法还包括:
接收所述客户端浏览器向所述资源地址发送的第六访问请求;
向所述客户端浏览器发送所述第六访问请求的响应,所述第六访问请求的响应用于控制所述客户端浏览器向所述认证服务器发送第三令牌验证请求,所述第三令牌验证请求中携带有所述第一token,其中,所述第一token是从所述应用服务器的访问域中读取的;
接收所述认证服务器发送的所述第三令牌验证请求的响应,所述第三令牌验证请的求响应用于指示所述第一token有效。
9.根据权利要求6-8中任一项所述的单点登录方法,其特征在于,所述应用服务器为基于cookie/session机制进行认证的服务器,所述响应所述第一访问请求,根据所述应用服务器自身的认证机制确定用户是否已经登录所述应用服务器,在结果为否时,控制所述客户端浏览器向所述认证服务器的认证地址发送第二访问请求,包括:
响应所述第一访问请求,检测所述应用服务器中是否保存有所述用户对应的session,其中,保存有所述session表示所述用户已经在所述应用服务器上登录;
在结果为否时,向所述客户端浏览器发送所述第一访问请求的响应,所述第一访问请求的响应用于控制所述客户端浏览器向所述认证地址发送所述第二访问请求;
所述响应所述第三访问请求,根据所述应用服务器自身的认证机制以及所述第一token将所述用户标记为已经在所述应用服务器上登录,在标记过程中控制所述客户端浏览器将生成的登录标识存储至所述应用服务器的访问域中,包括:
响应所述第三访问请求,根据所述第一token生成所述session并将所述session存储至所述应用服务器,以及生成与所述session对应的cookie,并控制所述客户端浏览器将所述cookie存储至所述应用服务器的访问域中;
所述根据所述应用服务器自身的认证机制将所述用户标记为已经在所述应用服务器上注销,包括:
清除所述应用服务器上保存的所述session。
10.根据权利要求9所述的单点登录方法,其特征在于,所述方法还包括:
接收所述客户端浏览器向所述应用服务器的资源地址发送的第七访问请求,所述第七访问请求中携带有从所述应用服务器的访问域中保存的所述cookie中读取的sessionid:
响应所述第七访问请求,根据所述sessionid获取用户对应的session并检测所述session是否有效;
在结果为否时,向所述客户端浏览器发送所述第七访问请求的响应,所述第七访问请求的响应用于控制所述客户端浏览器向所述认证地址发送第八访问请求,所述第八访问请求中携带有所述资源地址;
接收所述客户端浏览器向所述资源地址发送的第九访问请求,所述第九访问请求是所述认证服务器在接收到所述第八访问请求、以及确定所述客户端浏览器的所述认证服务器的访问域中已保存有所述第一token后,控制所述客户端浏览器发送的,其中,保存有所述第一token表示所述用户已经在所述单点登录系统中登录,所述第九访问请求中携带有从所述认证服务器的访问域中读取的所述第一token;
响应所述第九访问请求,根据所述第一token生成新的session并将所述新的session存储至所述应用服务器,以及生成与所述新的session对应的新的cookie,并控制所述客户端浏览器将所述新的cookie存储至所述应用服务器的访问域中;
将所述资源地址对应的所述受保护资源发送至所述客户端浏览器。
11.根据权利要求6-8中任一项所述的单点登录方法,其特征在于,所述应用服务器为基于token机制进行认证的服务器,所述响应所述第一访问请求,根据所述应用服务器自身的认证机制确定用户是否已经登录所述应用服务器,在结果为否时,控制所述客户端浏览器向所述认证服务器的认证地址发送第二访问请求,包括:
向所述客户端浏览器发送所述第一访问请求的响应,所述第一访问请求的响应用于控制所述客户端浏览器检测所述应用服务器的访问域中是否保存有所述用户对应的第二token,其中,保存有所述第二token表示所述用户已经在所述应用服务器上登录,以及在结果为否时,控制所述客户端浏览器向所述认证地址发送所述第二访问请求;
所述响应所述第三访问请求,根据所述应用服务器自身的认证机制以及所述第一token将所述用户标记为已经在所述应用服务器上登录,在标记过程中控制所述客户端浏览器将生成的登录标识存储至所述应用服务器的访问域中,包括:
响应所述第三访问请求,根据所述第一token以及所述应用服务器的私钥生成所述第二token,并控制所述客户端浏览器将所述第二token存储至所述应用服务器的访问域中;
所述根据所述应用服务器自身的认证机制将所述用户标记为已经在所述应用服务器上注销,包括:
控制所述客户端浏览器清除所述应用服务器的访问域中保存的所述第二token。
12.根据权利要求11所述的单点登录方法,其特征在于,所述方法还包括:
接收所述客户端浏览器向所述应用服务器的资源地址发送的第七访问请求,所述第七访问请求中携带有从所述应用服务器的访问域中读取的所述第二token;
响应所述第七访问请求,检测所述第二token是否有效;
在结果为否时,向所述客户端浏览器发送所述第七访问请求的响应,所述第七访问请求的响应用于控制所述客户端浏览器向所述认证地址发送第八访问请求,所述第八访问请求中携带有所述资源地址;
接收所述客户端浏览器向所述资源地址发送的第九访问请求,所述第九访问请求是所述认证服务器在接收到所述第八访问请求、以及确定所述客户端浏览器的所述认证服务器的访问域中已保存有所述第一token后,控制所述客户端浏览器发送的,其中,保存有所述第一token表示所述用户已经在所述单点登录系统中登录,所述第九访问请求中携带有从所述认证服务器的访问域中读取的所述第一token;
响应所述第九访问请求,根据所述第一token以及所述应用服务器的私钥生成新的第二token,并控制所述客户端浏览器将所述新的第二token存储至所述应用服务器的访问域中;
将所述资源地址对应的所述受保护资源发送至所述客户端浏览器。
13.一种认证服务器,其特征在于,应用于单点登录系统,所述单点登录系统包括所述认证服务器以及多个应用服务器,所述应用服务器为基于cookie/session机制或基于token机制进行认证的服务器,所述认证服务器包括:
第二访问请求接收模块,用于接收客户端浏览器向所述认证服务器的认证地址发送的第二访问请求,所述第二访问请求是所述应用服务器在接收到所述客户端浏览器向所述应用服务器的资源地址发送的第一访问请求、以及根据自身的认证机制确定用户未登录所述应用服务器后,控制所述客户端浏览器发送的,所述第二访问请求中携带有所述资源地址;
第二访问请求响应模块,用于向所述客户端浏览器发送所述第二访问请求的响应,所述第二访问请求的响应用于控制所述客户端浏览器检测所述认证服务器的访问域中是否保存有第一token,其中,保存有所述第一token表示所述用户已经在所述单点登录系统中登录,以及在结果为是时,控制所述客户端浏览器向所述资源地址发送第三访问请求,所述第三访问请求中携带有从所述认证服务器的访问域中读取的所述第一token,所述第三访问请求用于指示所述应用服务器根据自身的认证机制以及所述第一token将所述用户标记为已经在所述应用服务器上登录。
14.一种应用服务器,其特征在于,应用于单点登录系统,所述单点登录系统包括认证服务器以及多个应用服务器,所述应用服务器为基于cookie/session机制或token机制进行认证的服务器,所述应用服务器包括:
第一访问请求接收模块,用于接收客户端浏览器向所述应用服务器的资源地址发送的第一访问请求;
第二访问请求发送模块,用于响应所述第一访问请求,根据所述应用服务器自身的认证机制确定用户是否已经登录所述应用服务器,在结果为否时,控制所述客户端浏览器发送向所述认证服务器的认证地址发送第二访问请求,所述第二访问请求中携带有所述资源地址;
第三访问请求接收模块,用于接收所述客户端浏览器向所述资源地址发送的第三访问请求,所述第三访问请求是所述认证服务器在接收到所述第二访问请求、以及确定所述客户端浏览器的所述认证服务器的访问域中已保存有第一token后,控制所述客户端浏览器发送的,其中,保存有所述第一token表示所述用户已经在所述单点登录系统中登录,所述第三访问请求中携带有从所述认证服务器的访问域中读取的所述第一token;
第三访问请求响应模块,用于响应所述第三访问请求,根据所述应用服务器自身的认证机制以及所述第一token将所述用户标记为已经在所述应用服务器上登录,在标记过程中控制所述客户端浏览器将生成的登录标识存储至所述应用服务器的访问域中;
资源发送模块,用于将所述资源地址对应的受保护资源发送至所述客户端浏览器。
CN201811506359.0A 2018-12-10 2018-12-10 单点登录方法、认证服务器及应用服务器 Active CN109688114B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811506359.0A CN109688114B (zh) 2018-12-10 2018-12-10 单点登录方法、认证服务器及应用服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811506359.0A CN109688114B (zh) 2018-12-10 2018-12-10 单点登录方法、认证服务器及应用服务器

Publications (2)

Publication Number Publication Date
CN109688114A CN109688114A (zh) 2019-04-26
CN109688114B true CN109688114B (zh) 2021-07-06

Family

ID=66187255

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811506359.0A Active CN109688114B (zh) 2018-12-10 2018-12-10 单点登录方法、认证服务器及应用服务器

Country Status (1)

Country Link
CN (1) CN109688114B (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110062005A (zh) * 2019-04-30 2019-07-26 郝向伟 用户终端、服务器、验证系统及方法
CN110149336A (zh) * 2019-05-24 2019-08-20 深圳绿米联创科技有限公司 单点登录方法、装置以及信息系统
CN110300154B (zh) * 2019-05-30 2020-06-09 上海派拉软件股份有限公司 基于插件实现多浏览器session共享方法
CN110365680B (zh) * 2019-07-16 2022-04-15 中国联合网络通信集团有限公司 基于单点登录的批量登出方法及装置
CN110381084A (zh) * 2019-08-07 2019-10-25 北京三快在线科技有限公司 单点登录系统和方法,存储介质及电子设备
CN110493229B (zh) * 2019-08-21 2022-02-01 北京奇艺世纪科技有限公司 业务请求处理方法、装置及系统
CN110572388B (zh) * 2019-09-05 2022-01-04 北京宝兰德软件股份有限公司 对接统一认证服务器的方法及统一认证适配器
CN110826048B (zh) * 2019-09-26 2022-04-05 北京健康之家科技有限公司 资源请求处理方法、装置及设备
CN110753045A (zh) * 2019-10-14 2020-02-04 紫光云(南京)数字技术有限公司 不同域之间单点登录的方法
CN111209349B (zh) * 2019-12-26 2023-07-04 曙光信息产业(北京)有限公司 一种更新会话时间的方法和装置
CN111404921B (zh) * 2020-03-12 2022-05-17 广州市百果园信息技术有限公司 网页应用访问方法、装置、设备、系统及存储介质
CN111970282B (zh) * 2020-08-19 2022-09-30 中国工商银行股份有限公司 系统中异构模块的认证方法及装置
CN112836204A (zh) * 2021-02-03 2021-05-25 中国人民财产保险股份有限公司 一种令牌更新方法和装置
CN113132402B (zh) * 2021-04-27 2022-08-30 奇安信科技集团股份有限公司 单点登录方法和系统
CN113472735B (zh) * 2021-05-13 2023-06-13 新华三大数据技术有限公司 一种大数据服务单点登录方法、装置及存储介质
CN113438229B (zh) * 2021-06-23 2023-04-07 未鲲(上海)科技服务有限公司 一种认证方法、认证装置及认证设备
CN113259394B (zh) * 2021-07-05 2021-09-28 北京小鸟科技股份有限公司 基于路由计算的跨域用户认证方法、系统、设备
CN114257430A (zh) * 2021-12-13 2022-03-29 以萨技术股份有限公司 一种单点登录系统
CN114430340A (zh) * 2021-12-24 2022-05-03 天翼云科技有限公司 一种跨域单点登录方法、装置及设备

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102624737A (zh) * 2012-03-27 2012-08-01 武汉理工大学 单点登录系统中针对Form身份鉴别的单点登录集成方法
CN102984169A (zh) * 2012-12-11 2013-03-20 中广核工程有限公司 单点登录方法、设备及系统
CN104301316A (zh) * 2014-10-13 2015-01-21 中国电子科技集团公司第二十八研究所 一种单点登录系统及其实现方法
CN106790272A (zh) * 2017-02-16 2017-05-31 济南浪潮高新科技投资发展有限公司 一种单点登录的系统及方法、一种应用服务器
CN106878260A (zh) * 2016-12-14 2017-06-20 新华三技术有限公司 单点登录实现方法及装置
US9769159B2 (en) * 2012-12-14 2017-09-19 Microsoft Technology Licensing, Llc Cookie optimization
CN107819570A (zh) * 2016-09-10 2018-03-20 长沙有干货网络技术有限公司 一种基于可变Cookie的跨域单点登录方法
CN107948214A (zh) * 2018-01-17 2018-04-20 北京网信云服信息科技有限公司 一种共享登录方法及装置
CN107948167A (zh) * 2017-11-29 2018-04-20 浙江数链科技有限公司 一种单点登录的方法和装置
CN108650209A (zh) * 2018-03-06 2018-10-12 北京信安世纪科技股份有限公司 一种单点登录的方法、系统、装置及认证方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8839395B2 (en) * 2011-05-13 2014-09-16 Cch Incorporated Single sign-on between applications

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102624737A (zh) * 2012-03-27 2012-08-01 武汉理工大学 单点登录系统中针对Form身份鉴别的单点登录集成方法
CN102984169A (zh) * 2012-12-11 2013-03-20 中广核工程有限公司 单点登录方法、设备及系统
US9769159B2 (en) * 2012-12-14 2017-09-19 Microsoft Technology Licensing, Llc Cookie optimization
CN104301316A (zh) * 2014-10-13 2015-01-21 中国电子科技集团公司第二十八研究所 一种单点登录系统及其实现方法
CN107819570A (zh) * 2016-09-10 2018-03-20 长沙有干货网络技术有限公司 一种基于可变Cookie的跨域单点登录方法
CN106878260A (zh) * 2016-12-14 2017-06-20 新华三技术有限公司 单点登录实现方法及装置
CN106790272A (zh) * 2017-02-16 2017-05-31 济南浪潮高新科技投资发展有限公司 一种单点登录的系统及方法、一种应用服务器
CN107948167A (zh) * 2017-11-29 2018-04-20 浙江数链科技有限公司 一种单点登录的方法和装置
CN107948214A (zh) * 2018-01-17 2018-04-20 北京网信云服信息科技有限公司 一种共享登录方法及装置
CN108650209A (zh) * 2018-03-06 2018-10-12 北京信安世纪科技股份有限公司 一种单点登录的方法、系统、装置及认证方法

Also Published As

Publication number Publication date
CN109688114A (zh) 2019-04-26

Similar Documents

Publication Publication Date Title
CN109688114B (zh) 单点登录方法、认证服务器及应用服务器
US11716324B2 (en) Systems and methods for location-based authentication
CN110463161B (zh) 用于访问受保护资源的口令状态机
US9098689B2 (en) Efficiently throttling user authentication
US10630676B2 (en) Protecting against malicious discovery of account existence
CN110768967B (zh) 业务授权方法、装置、设备、系统及存储介质
US20070226783A1 (en) User-administered single sign-on with automatic password management for web server authentication
US20070101440A1 (en) Auditing correlated events using a secure web single sign-on login
US10362019B2 (en) Managing security credentials
JP5571854B2 (ja) ユーザアカウント回復
KR20150105395A (ko) 보안 챌린지 지원 패스워드 프록시
US10110578B1 (en) Source-inclusive credential verification
US8650405B1 (en) Authentication using dynamic, client information based PIN
WO2007015253A2 (en) Two-factor authentication employing a user's ip address
US20180176206A1 (en) Dynamic Data Protection System
CN110324344B (zh) 账号信息认证的方法及装置
US11444936B2 (en) Managing security credentials
CN112738100A (zh) 数据访问的鉴权方法、装置、鉴权设备和鉴权系统
US20180176197A1 (en) Dynamic Data Protection System
JP6473879B1 (ja) クライアントサーバシステム
JP2012033042A (ja) シングルサインオンシステム及びシングルサインオン方法
CN110869928A (zh) 认证系统和方法
KR20140043628A (ko) 보안 로그인 처리 방법
AU2010361584B2 (en) User account recovery
KR20150141784A (ko) 행태 질의 인증 시스템 및 그 방법

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