專利名稱:基于Cookie的單點(diǎn)登錄方法、系統(tǒng)及其應(yīng)用服務(wù)器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù),更為具體而言,涉及一種基于Cookie的單點(diǎn)登錄方法、系統(tǒng)及其應(yīng)用服務(wù)器。
背景技術(shù):
單點(diǎn)登錄系統(tǒng)SSO (Single Sign-On)也稱作統(tǒng)一的身份認(rèn)證系統(tǒng),指用戶使用系統(tǒng)時(shí)只需進(jìn)行一次身份認(rèn)證,隨后根據(jù)用戶權(quán)限便可以訪問在系統(tǒng)允許的范圍內(nèi)的所有網(wǎng)絡(luò)資源,而不需要多次登錄不同的子系統(tǒng)或者在使用處于不同的計(jì)算機(jī)環(huán)境中的所有網(wǎng)絡(luò)資源時(shí)重復(fù)進(jìn)行用戶身份認(rèn)證的過程。當(dāng)前單點(diǎn)登錄實(shí)現(xiàn)方案主要分為三種類型:一是基于Oauth協(xié)議(一種為用戶資源的授權(quán)提供了一個(gè)安全的、開放而又簡易的標(biāo)準(zhǔn))的網(wǎng)絡(luò)令牌的機(jī)制;二是基于WebService或簡單Http協(xié)議(即超文本傳輸協(xié)議)實(shí)現(xiàn)的Passport機(jī)制;三是以O(shè)penID框架(一種以用戶為中心的數(shù)字身份識(shí)別框架)形成的通用賬號(hào)登錄機(jī)制。其中,基于Oauth協(xié)議主要應(yīng)用在網(wǎng)站外部,比較知名的有臉書鏈接(Facebook Connect)和新浪微博鏈接等;Passport機(jī)制的應(yīng)用主要是針對(duì)同一網(wǎng)站內(nèi)不同架構(gòu)不同平臺(tái),如Google Account賬號(hào)基本上可以應(yīng)用于所有Google的網(wǎng)站;至于OpenID此類需共享用戶信息的方案,則在國外被廣泛采納。目前企業(yè)信息門戶基于Web的系統(tǒng)大多可以完成單點(diǎn)登錄這一目標(biāo),基于Web的電子商務(wù)平臺(tái)需要統(tǒng)一身份認(rèn)證和資源訪問控制機(jī)制,而基于Cookie的單點(diǎn)登錄系統(tǒng)是一種很好的解決方案,但是,本發(fā)明的發(fā)明人發(fā)現(xiàn)基于Cookie的單點(diǎn)登錄方案存在以下幾個(gè)技術(shù)問題:(I)重放攻擊。重放攻擊(Iteplay Attacks)又稱重播攻擊、回放攻擊或新鮮性攻擊(Freshness Attacks),是指攻擊者發(fā)送一個(gè)目的主機(jī)已接收過的包,來達(dá)到欺騙系統(tǒng)的目的,主要用于身份認(rèn)證過程,破壞認(rèn)證的正確性。這種攻擊會(huì)不斷惡意或欺詐性地重復(fù)一個(gè)有效的數(shù)據(jù)傳輸,重放攻擊可以由發(fā)起者,也可以由攔截并重發(fā)該數(shù)據(jù)的敵方進(jìn)行。攻擊者利用網(wǎng)絡(luò)監(jiān)聽或者其他方式盜取認(rèn)證憑據(jù),之后再把它重新發(fā)給認(rèn)證服務(wù)器。雖然加密可以有效防止會(huì)話劫持,但是不能防止重放攻擊。(2)頻繁訪問數(shù)據(jù)庫。在高負(fù)荷訪問和大量并發(fā)請(qǐng)求的大型網(wǎng)站中,從系統(tǒng)安全和性能出發(fā),需考慮避免頻繁的訪問和操作數(shù)據(jù)庫。由于應(yīng)用系統(tǒng)獲得客戶端Cookie的認(rèn)證信息和用戶請(qǐng)求的IP地址,都需要去數(shù)據(jù)庫服務(wù)器進(jìn)行驗(yàn)證,來判斷客戶端的認(rèn)證信息是否真的有效,以及對(duì)應(yīng)的用戶是誰。如果黑客利用偽造Cookie的認(rèn)證信息,對(duì)服務(wù)器進(jìn)行頻繁請(qǐng)求,在驗(yàn)證客戶端Cookie的認(rèn)證信息實(shí)效性和真實(shí)性時(shí),將產(chǎn)生與請(qǐng)求量成正比的數(shù)據(jù)庫訪問性能消耗。(3)Cookie篡改。主要以獲取模擬和隱私權(quán)泄密著稱的技術(shù),通過維護(hù)客戶(或終端用戶)身份的會(huì)話信息操縱來實(shí)現(xiàn)的。通過偽造Cookie,一個(gè)黑客可以模擬一個(gè)有效的客戶,因此獲取詳細(xì)信息并執(zhí)行代表病毒的行為。
(4)跨域單點(diǎn)登錄。Cookie的存取只對(duì)同一域下的主機(jī)有效,分布式應(yīng)用系統(tǒng)往往不能保證所有的主機(jī)都在同一域下。當(dāng)用戶登錄加入SSO認(rèn)證體系里的一臺(tái)服務(wù)器時(shí),例如服務(wù)器A,客戶機(jī)瀏覽器可以將獲得的登錄用戶票據(jù)記錄到本地Cookie中,當(dāng)此客戶機(jī)轉(zhuǎn)而訪問服務(wù)器B的時(shí)候,為了實(shí)現(xiàn)單點(diǎn)登錄,服務(wù)器B必須要獲得標(biāo)識(shí)用戶登錄狀態(tài)的票據(jù)作為憑證來進(jìn)行驗(yàn)證,而此票據(jù)存儲(chǔ)于先前訪問服務(wù)器A時(shí)留下的Cookie,此Cookie只對(duì)來自服務(wù)器A域里的訪問有效,為獲取訪問其他域主機(jī)的Cookie,必需實(shí)現(xiàn)跨域共享Cookie。
發(fā)明內(nèi)容
針對(duì)上述技術(shù)問題,本發(fā)明提供了一種基于Cookie的單點(diǎn)登錄方法,可以有效地防止重放攻擊、頻繁訪問數(shù)據(jù)庫、Cookie篡改,并實(shí)現(xiàn)跨域單點(diǎn)登錄。Cookie的本質(zhì)是一個(gè)文件,在用戶登陸Web服務(wù)器時(shí)創(chuàng)建的,并且將信息存儲(chǔ)在該文件中。作為存儲(chǔ)用戶的識(shí)別信息出現(xiàn)的Cookie機(jī)制,其作用是記錄用戶在該站點(diǎn)上曾經(jīng)訪問的頁面,甚至進(jìn)行簡單的設(shè)置,那么在用戶下一次訪問時(shí)就能夠提供個(gè)性化的頁面設(shè)置和信息。更重要的是Cookies也可以存儲(chǔ)個(gè)人的登陸信息和其他識(shí)別信息,在下次登錄時(shí)對(duì)用戶進(jìn)行識(shí)別。當(dāng)用戶通過瀏覽器向一個(gè)Web服務(wù)器發(fā)出請(qǐng)求時(shí),Web服務(wù)器上的代理程序會(huì)將它重定向到認(rèn)證授權(quán)服務(wù)器,認(rèn)證授權(quán)服務(wù)器會(huì)要求用戶提供登錄所需的用戶名和密碼等信息。當(dāng)認(rèn)證授權(quán)服務(wù)器接收信息并且通過認(rèn)證之后將發(fā)送一個(gè)身份確認(rèn)信息給用戶,而這個(gè)身份確認(rèn)的信息就是Cookie,Cookie將保存在用戶的瀏覽器中。如果用戶需要對(duì)其他的頁面進(jìn)行操作,其他的Web服務(wù)器首先從用戶的瀏覽器Cookie之中讀取之前所保存的用戶標(biāo)識(shí),對(duì)用戶進(jìn)行認(rèn)證。如果各個(gè)系統(tǒng)之間有互認(rèn)機(jī)制,那么用戶就可以利用自己的Cookie直接進(jìn)行該子系統(tǒng)的服務(wù)。并且上述的這些過程對(duì)用戶是透明的,使得用戶不用重復(fù)登錄各個(gè)頁面子系統(tǒng),從而完成了單點(diǎn)登錄。在本發(fā)明的一種實(shí)施方式中,提供一種基于Cookie的單點(diǎn)登錄方法,通過下述步驟解決上述的重放攻擊和頻繁訪問數(shù)據(jù)庫的技術(shù)問題,所述步驟包括:A、應(yīng)用服務(wù)器接收用戶通過客戶端瀏覽器發(fā)送的請(qǐng)求訪問和使用受保護(hù)的資源的請(qǐng)求消息;B、檢查客戶端瀏覽器上是否存在該用戶的已經(jīng)創(chuàng)建好的Cookie,如果不存在,則直接返回失敗結(jié)果并進(jìn)入步驟C,否則進(jìn)入步驟F ;其中,所述Cookie包含:認(rèn)證信息值、表示該Cookie的產(chǎn)生時(shí)間的時(shí)間戳、以及ID值;C、所述應(yīng)用服務(wù)器將所述客戶端瀏覽器重定向到登錄服務(wù)器進(jìn)行登錄操作;D、所述登錄服務(wù)器在用戶登錄成功后產(chǎn)生有效的Cookie,并將登錄信息記錄到數(shù)據(jù)庫中;E、所述登錄服務(wù)器將產(chǎn)生的有效的Cookie發(fā)送給所述客戶端瀏覽器,并將所述客戶端瀏覽器重定向到所述應(yīng)用服務(wù)器,轉(zhuǎn)到步驟B;F、對(duì)該用戶的Cookie進(jìn)行驗(yàn)證,并且在驗(yàn)證通過的條件下向該用戶提供所請(qǐng)求的資源;其中,在步驟F中對(duì)該用戶的Cookie進(jìn)行驗(yàn)證包括:
判斷該用戶的Cookie的認(rèn)證信息值與服務(wù)器登錄信息值是否匹配,驗(yàn)證該用戶的Cookie是否同時(shí)滿足下述條件:該Cookie的ID值唯一、該Cookie的時(shí)間戳未重復(fù)、當(dāng)前時(shí)間與該Cookie的時(shí)間戳的差值未超出該Cookie的有效時(shí)間段。根據(jù)本發(fā)明實(shí)施方式,通過在Cookie中加入時(shí)間戳域和ID域,基于時(shí)間戳和ID值對(duì)Cookie進(jìn)行驗(yàn)證,有效地防止了重放攻擊,并且當(dāng)不存在該用戶的已經(jīng)創(chuàng)建好的Cookie時(shí)直接返回失敗結(jié)果避免對(duì)數(shù)據(jù)庫進(jìn)行頻繁操作。在本發(fā)明的另一種實(shí)施方式中,通過在上述對(duì)用戶的Cookie進(jìn)行驗(yàn)證的步驟中加入下述步驟,進(jìn)一步有效地防止了對(duì)數(shù)據(jù)庫的頻繁訪問:當(dāng)用戶的Cookie的認(rèn)證信息值與服務(wù)器登錄信息值不匹配時(shí),判斷當(dāng)前時(shí)間與該用戶的Cookie的時(shí)間戳的差值是否超出該Cookie的有效時(shí)間段;當(dāng)當(dāng)前時(shí)間與該用戶的Cookie的時(shí)間戳的差值超出該Cookie的有效時(shí)間段時(shí),對(duì)該用戶的Cookie的認(rèn)證信息值進(jìn)行校驗(yàn)和更新數(shù)據(jù)庫的在線成員(OnlineMember)記錄,重新設(shè)置有效時(shí)間段,并基于更新時(shí)間生成時(shí)間戳,并用生成的時(shí)間戳替換該用戶的Cookie的先前的時(shí)間戳;當(dāng)當(dāng)前時(shí)間與該用戶的Cookie的時(shí)間戳的差值未超出該Cookie的有效時(shí)間段時(shí),不更新數(shù)據(jù)庫的OnlineMember記錄。在本發(fā)明的再一種實(shí)施方式中,根據(jù)票據(jù)(Ticket)和IP地址結(jié)合一起生成OnlineMember去校驗(yàn)所述用戶的Cookie的有效性,以防止Cookie被篡改。在本發(fā)明的又一種實(shí)施方式中,所述登錄服務(wù)器對(duì)產(chǎn)生的Cookie進(jìn)行數(shù)字簽名,所述應(yīng)用服務(wù)器使用Cookie時(shí)驗(yàn)證數(shù)字簽名的值是否合法,如果數(shù)字簽名的值不合法,則拒絕該Cookie,從而進(jìn)一步防止Cookie被篡改。在本發(fā)明的又一種實(shí)施方式中,所述應(yīng)用服務(wù)器在接收用戶通過客戶端瀏覽器發(fā)送的請(qǐng)求訪問和使用受保護(hù)的資源的請(qǐng)求消息時(shí)能夠從用戶的Cookie的認(rèn)證信息中讀取用戶訪問另一應(yīng)用服務(wù)器的Ticket信息,并根據(jù)Ticket和Cookie的認(rèn)證信息判斷和恢復(fù)部分用戶信息以實(shí)現(xiàn)用戶登錄信息的保存。從而實(shí)現(xiàn)跨域名共享Cookie操作。在本發(fā)明的又一種實(shí)施方式中,在步驟A之前,驗(yàn)證用于來源是否在站點(diǎn)列表內(nèi)、驗(yàn)證用戶的合法性;用戶通過驗(yàn)證后,使用公用密鑰加密Cookie后的值作為參數(shù)在用戶登錄之后跳轉(zhuǎn)回來源的應(yīng)用服務(wù)器;應(yīng)用服務(wù)器獲取到Cookie的值后調(diào)用單點(diǎn)登錄接口進(jìn)行解密、驗(yàn)證。從而實(shí)現(xiàn)跨域名共享Cookie操作。另外,本發(fā)明實(shí)施方式提供了一種能夠?qū)崿F(xiàn)基于Cookie的單點(diǎn)登錄的應(yīng)用服務(wù)器,所述應(yīng)用服務(wù)器包括實(shí)現(xiàn)上述方法步驟的單元,例如:接收單元,用于收用戶通過客戶端瀏覽器發(fā)送的請(qǐng)求訪問和使用受保護(hù)的資源的請(qǐng)求消息;檢查單元,用于檢查客戶端瀏覽器上是否存在該用戶的已經(jīng)創(chuàng)建好的Cookie,所述Cookie包含:認(rèn)證信息值、表示該Cookie的產(chǎn)生時(shí)間的時(shí)間戳、以及ID值;重定向單元,用于在所述檢查單元檢查出客戶端瀏覽器上不存在該用戶的已經(jīng)創(chuàng)建好的Cookie時(shí)將客戶端瀏覽器重定向到登錄服務(wù)器進(jìn)行登錄操作;驗(yàn)證單元,用于在所述檢查單元檢查出客戶端瀏覽器上存在該用戶的已經(jīng)創(chuàng)建好的Cookie時(shí)對(duì)該用戶的Cookie進(jìn)行驗(yàn)證;
其中,所述對(duì)該用戶的Cookie進(jìn)行驗(yàn)證包括:判斷該用戶的Cookie的認(rèn)證信息值與服務(wù)器登錄信息值是否匹配,驗(yàn)證該用戶的Cookie是否同時(shí)滿足下述條件:該Cookie的ID值唯一、該Cookie的時(shí)間戳未重復(fù)、當(dāng)前時(shí)間與該Cookie的時(shí)間戳的差值未超出該Cookie的有效時(shí)間段。此外,本發(fā)明實(shí)施方式還提供了一種能夠?qū)崿F(xiàn)基于Cookie的單點(diǎn)登錄的系統(tǒng),其包括客戶端瀏覽器、上述的應(yīng)用服務(wù)器和登錄服務(wù)器,其中,所述登錄服務(wù)器用于在用戶登錄成功后產(chǎn)生有效的Cookie,將登錄信息記錄到數(shù)據(jù)庫中,將產(chǎn)生的有效的Cookie發(fā)送給所述客戶端瀏覽器,并將所述客戶端瀏覽器重定向到所述應(yīng)用服務(wù)器。由上述可知,本發(fā)明提出了一種解決統(tǒng)一客戶體驗(yàn)的基于Cookie的單點(diǎn)登錄技術(shù)方案。該方案在發(fā)揮Cookie方案的現(xiàn)有優(yōu)勢的同時(shí),解決了因使用傳統(tǒng)的Cookie導(dǎo)致的一系列安全隱患問題,其優(yōu)點(diǎn)包括以下幾個(gè)方面:有效規(guī)避重放攻擊風(fēng)險(xiǎn);有效防范頻繁數(shù)據(jù)庫訪問,增強(qiáng)了性能和安全;有效避免Cookie消息篡改風(fēng)險(xiǎn);實(shí)現(xiàn)共享Cookie及跨域單點(diǎn)登錄。
圖1是根據(jù)本發(fā)明實(shí)施方式的一種基于Cookie的單點(diǎn)登錄方法的流程圖;圖2是根據(jù)本發(fā)明實(shí)施方式的一種能夠?qū)崿F(xiàn)基于Cookie的單點(diǎn)登錄的系統(tǒng)框圖;圖3是根據(jù)本發(fā)明實(shí)施方式的一種能夠?qū)崿F(xiàn)基于Cookie的單點(diǎn)登錄的應(yīng)用服務(wù)器的框圖。
具體實(shí)施例方式為了便于理解本發(fā)明技術(shù)方案的各個(gè)方面、特征以及優(yōu)點(diǎn),下面結(jié)合附圖對(duì)本發(fā)明進(jìn)行具體描述。應(yīng)當(dāng)理解,下述的各種實(shí)施方式只用于舉例說明,而非用于限制本發(fā)明的保護(hù)范圍。參考圖1,在本發(fā)明的一種實(shí)施方式中,提供了一種基于Cookie的單點(diǎn)登錄方法。所述方法包括以下步驟:S100、應(yīng)用服務(wù)器接收用戶通過客戶端瀏覽器發(fā)送的請(qǐng)求訪問和使用受保護(hù)的資源的請(qǐng)求消息。S200、檢查客戶端瀏覽器上是否存在該用戶的已經(jīng)創(chuàng)建好的Cookie,如果不存在,則直接返回失敗結(jié)果并進(jìn)入步驟S300,否則進(jìn)入步驟S600。其中,所述Cookie包含:認(rèn)證信息值、表示該Cookie的產(chǎn)生時(shí)間的時(shí)間戳、以及ID值。通常,當(dāng)用戶通過瀏覽器向一個(gè)Web服務(wù)器發(fā)出請(qǐng)求時(shí),Web服務(wù)器上的代理程序會(huì)將它重定向到認(rèn)證授權(quán)服務(wù)器,認(rèn)證授權(quán)服務(wù)器會(huì)要求用戶提供登錄所需的用戶名和密碼等信息。當(dāng)認(rèn)證授權(quán)服務(wù)器接收信息并且通過認(rèn)證之后將發(fā)送一個(gè)身份確認(rèn)信息給用戶,而這個(gè)身份確認(rèn)的信息就是Cookie, Cookie將保存在用戶的瀏覽器中。S300、所述應(yīng)用服務(wù)器將所述客戶端瀏覽器重定向到登錄服務(wù)器進(jìn)行登錄操作。S400、所述登錄服務(wù)器在用戶登錄成功后產(chǎn)生有效的Cookie,并將登錄信息記錄到數(shù)據(jù)庫中。
S500、所述登錄服務(wù)器將產(chǎn)生的有效的Cookie發(fā)送給所述客戶端瀏覽器,并將所述客戶端瀏覽器重定向到所述應(yīng)用服務(wù)器,轉(zhuǎn)到步驟S200。S600、對(duì)該用戶的Cookie進(jìn)行驗(yàn)證,并且在驗(yàn)證通過的條件下向該用戶提供所請(qǐng)求的資源。其中,在步驟S600中對(duì)該用戶的Cookie進(jìn)行驗(yàn)證包括:判斷該用戶的Cookie的認(rèn)證信息值與服務(wù)器登錄信息值是否匹配,驗(yàn)證該用戶的Cookie是否同時(shí)滿足下述條件:該Cookie的ID值唯一、該Cookie的時(shí)間戳未重復(fù)、當(dāng)前時(shí)間與該Cookie的時(shí)間戳的差值未超出該Cookie的有效時(shí)間段。在本發(fā)明的另一種實(shí)施方式中,對(duì)該用戶的Cookie進(jìn)行驗(yàn)證還包括進(jìn)行以下操作:當(dāng)用戶的Cookie的認(rèn)證信息值與服務(wù)器登錄信息值不匹配時(shí),判斷當(dāng)前時(shí)間與該用戶的Cookie的時(shí)間戳的差值是否超出該Cookie的有效時(shí)間段;當(dāng)當(dāng)前時(shí)間與該用戶的Cookie的時(shí)間戳的差值超出該Cookie的有效時(shí)間段時(shí),對(duì)該用戶的Cookie的認(rèn)證信息值進(jìn)行校驗(yàn)和更新數(shù)據(jù)庫的OnlineMember記錄,重新設(shè)置有效時(shí)間段,并基于更新時(shí)間生成時(shí)間戳,并用生成的時(shí)間戳替換該用戶的Cookie的先前的時(shí)間戳;當(dāng)當(dāng)前時(shí)間與該用戶的Cookie的時(shí)間戳的差值未超出該Cookie的有效時(shí)間段時(shí),不更新數(shù)據(jù)庫的OnlineMember記錄。其中,對(duì)所述用戶的Cookie的認(rèn)證信息值進(jìn)行校驗(yàn)包括:根據(jù)票據(jù)Ticket和IP地址結(jié)合一起生成OnlineMember去校驗(yàn)所述用戶的Cookie的有效性。在本發(fā)明的其他實(shí)施方式中,所述方法還包括:所述登錄服務(wù)器對(duì)產(chǎn)生的Cookie進(jìn)行數(shù)字簽名,所述應(yīng)用服務(wù)器使用Cookie時(shí)驗(yàn)證數(shù)字簽名的值是否合法,如果數(shù)字簽名的值不合法,則拒絕該Cookie。優(yōu)選地,采用非對(duì)稱MD5算法對(duì)用戶密碼進(jìn)行加密,并將得到的加密字符串存儲(chǔ)在密碼Password字段。具體而言,所述加密字符串是通過將用戶的實(shí)際密碼經(jīng)過一次MD5算法處理后加上隨機(jī)字符串再次進(jìn)行MD5算法處理而生成。本領(lǐng)技術(shù)人員應(yīng)當(dāng)理解,以上只是本發(fā)明數(shù)字簽名的一個(gè)例子,本發(fā)明的保護(hù)范圍當(dāng)然不局限于此,還可以采用本領(lǐng)域熟知的其他任何簽名算法。在本發(fā)明的又一實(shí)施方式中,所述方法還包括:所述應(yīng)用服務(wù)器在接收用戶通過客戶端瀏覽器發(fā)送的請(qǐng)求訪問和使用受保護(hù)的資源的請(qǐng)求消息時(shí)能夠從用戶的Cookie的認(rèn)證信息中讀取用戶訪問另一應(yīng)用服務(wù)器的Ticket信息,并根據(jù)Ticket和Cookie的認(rèn)證信息判斷和恢復(fù)部分用戶信息以實(shí)現(xiàn)用戶登錄信息的保存,從而實(shí)現(xiàn)跨域名共享Cookie操作。在本發(fā)明的其他實(shí)施方式中,所述方法還包括:在步驟S100之前,驗(yàn)證用于來源是否在站點(diǎn)列表內(nèi)、驗(yàn)證用戶的合法性;用戶通過驗(yàn)證后,使用公用密鑰加密Cookie后的值作為參數(shù)在用戶登錄之后跳轉(zhuǎn)回來源的應(yīng)用服務(wù)器;應(yīng)用服務(wù)器獲取到Cookie的值后調(diào)用單點(diǎn)登錄接口進(jìn)行解密、驗(yàn)證,從而實(shí)現(xiàn)跨域名共享Cookie操作。參考圖2,本發(fā)明實(shí)施方式還提供了一種能夠?qū)崿F(xiàn)基于Cookie的單點(diǎn)登錄的系統(tǒng)。所述系統(tǒng)包括客戶端瀏覽器100、應(yīng)用服務(wù)器200和登錄服務(wù)器300,其中,登錄服務(wù)器300用于在用戶登錄成功后產(chǎn)生有效的Cookie,將登錄信息記錄到數(shù)據(jù)庫中,將產(chǎn)生的有效的Cookie發(fā)送給所述客戶端瀏覽器100,并將所述客戶端瀏覽器100重定向到所述應(yīng)用服務(wù)器200。在本發(fā)明的一種實(shí)施方式中,如圖3所示,所述應(yīng)用服務(wù)器200包括:接收單元201,用于收用戶通過客戶端瀏覽器100發(fā)送的請(qǐng)求訪問和使用受保護(hù)的資源的請(qǐng)求消息;檢查單元202,用于檢查客戶端瀏覽器100上是否存在該用戶的已經(jīng)創(chuàng)建好的Cookie,所述Cookie包含:認(rèn)證信息值、表示該Cookie的產(chǎn)生時(shí)間的時(shí)間戳、以及ID值;重定向單元203,用于在所述檢查單元202檢查出客戶端瀏覽器100上不存在該用戶的已經(jīng)創(chuàng)建好的Cookie時(shí)將客戶端瀏覽器100重定向到登錄服務(wù)器300進(jìn)行如上所述的登錄操作; 驗(yàn)證單元204,用于在所述檢查單元202檢查出客戶端瀏覽器上存在該用戶的已經(jīng)創(chuàng)建好的Cookie時(shí)對(duì)該用戶的Cookie進(jìn)行驗(yàn)證;其中,所述對(duì)該用戶的Cookie進(jìn)行驗(yàn)證包括:判斷該用戶的Cookie的認(rèn)證信息值與服務(wù)器登錄信息值是否匹配,驗(yàn)證該用戶的Cookie是否同時(shí)滿足下述條件:該Cookie的ID值唯一、該Cookie的時(shí)間戳未重復(fù)、當(dāng)前時(shí)間與該Cookie的時(shí)間戳的差值未超出該Cookie的有效時(shí)間段。在本發(fā)明的另一實(shí)施方式中,所述驗(yàn)證單元還用于執(zhí)行如下操作:當(dāng)用戶的Cookie的認(rèn)證信息值與服務(wù)器登錄信息值不匹配時(shí),判斷當(dāng)前時(shí)間與該用戶的Cookie的時(shí)間戳的差值是否超出該Cookie的有效時(shí)間段;當(dāng)當(dāng)前時(shí)間與該用戶的Cookie的時(shí)間戳的差值超出該Cookie的有效時(shí)間段時(shí),對(duì)該用戶的Cookie的認(rèn)證信息值進(jìn)行校驗(yàn)和更新數(shù)據(jù)庫的在線成員OnlineMember記錄,重新設(shè)置有效時(shí)間段,并基于更新時(shí)間生成時(shí)間戳,并用生成的時(shí)間戳替換該用戶的Cookie的先前的時(shí)間戳;當(dāng)當(dāng)前時(shí)間與該用戶的Cookie的時(shí)間戳的差值未超出該Cookie的有效時(shí)間段時(shí),不更新數(shù)據(jù)庫的OnlineMember記錄。優(yōu)選地,對(duì)所述用戶的Cookie的認(rèn)證信息值進(jìn)行校驗(yàn)包括:根據(jù)票據(jù)Ticket和IP地址結(jié)合一起生成OnlineMember去校驗(yàn)所述用戶的Cookie的有效性。在本發(fā)明的其他實(shí)施方式中,所述應(yīng)用服務(wù)器200還包括:數(shù)字簽名驗(yàn)證單元205,用于驗(yàn)證所述登錄服務(wù)器對(duì)Cookie進(jìn)行數(shù)字簽名的值是否合法并且在不合法的情形下拒絕該Cookie。例如,采用非對(duì)稱MD5算法對(duì)用戶密碼進(jìn)行加密,并將得到的加密字符串存儲(chǔ)在密碼Password字段,具體地,所述加密字符串是通過將用戶的實(shí)際密碼經(jīng)過一次MD5算法處理后加上隨機(jī)字符串再次進(jìn)行MD5算法處理而生成。在本發(fā)明的另外的實(shí)施方式中,所述應(yīng)用服務(wù)器200還包括:信息恢復(fù)單元206,用于在接收用戶通過客戶端瀏覽器100發(fā)送的請(qǐng)求訪問和使用受保護(hù)的資源的請(qǐng)求消息時(shí)能夠從用戶的Cookie的認(rèn)證信息中讀取用戶訪問另一應(yīng)用服務(wù)器的Ticket信息,并根據(jù)Ticket和Cookie的認(rèn)證信息判斷和恢復(fù)部分用戶信息以實(shí)現(xiàn)用戶登錄信息的保存。在本發(fā)明的再一個(gè)實(shí)施方式中,所述應(yīng)用服務(wù)器200還包括跨域共享單元207,所述跨域共享單元207用于實(shí)現(xiàn)以下操作:驗(yàn)證用于來源是否在站點(diǎn)列表內(nèi)、驗(yàn)證用戶的合法性;用戶通過驗(yàn)證后,使用公用密鑰加密Cookie后的值作為參數(shù)在用戶登錄之后跳轉(zhuǎn)回來源的應(yīng)用服務(wù)器200;應(yīng)用服務(wù)器200獲取到Cookie的值后調(diào)用單點(diǎn)登錄接口進(jìn)行解密、驗(yàn)證。此外,由于Cookie是以純文本方式在瀏覽器保存用戶的信息,那么在客戶端和服務(wù)器端之間進(jìn)行傳輸則顯然不能進(jìn)行簡單的文本信息的發(fā)送,如果信息被截取將引起嚴(yán)重的后果。在本發(fā)明的其他實(shí)施方式中,使用SSL (Secure Socket Layer,安全套接層)的傳輸協(xié)議能保證Cookie在傳輸過程的安全性。根據(jù)上述可知,本發(fā)明實(shí)施方式對(duì)每個(gè)Cookie加上唯一的ID域和時(shí)間戳以此來抵御重放攻擊。并且對(duì)數(shù)據(jù)庫訪問的不同情景進(jìn)行條件限制以此來防止可能發(fā)生的頻繁的數(shù)據(jù)庫訪問。此外,對(duì)Cookie關(guān)鍵域進(jìn)行數(shù)據(jù)加密及在數(shù)字簽名中引入IP域以此來防止Cookie消息篡改。通過統(tǒng)一維護(hù)可信任站點(diǎn)列表,Web服務(wù)器讀取客戶端Cookie的認(rèn)證信息和Ticket進(jìn)行校驗(yàn),通過判斷和恢復(fù)用戶的信息完成用戶登錄信息的保存,實(shí)現(xiàn)跨域名共享Cookie操作。為了便于理解本發(fā)明的技術(shù)方案的特征和優(yōu)點(diǎn),下面以中國建設(shè)銀行的善融商務(wù)電子商務(wù)平臺(tái)系統(tǒng)為例進(jìn)行說明,善融商務(wù)電子商務(wù)平臺(tái)系統(tǒng)采用F5負(fù)載均衡,啟用多組互相獨(dú)立的Web/App服務(wù)器處理客戶端請(qǐng)求。用戶可請(qǐng)求多臺(tái)服務(wù)器,這多臺(tái)服務(wù)器可以是buy.ccb.com中負(fù)載均衡的多臺(tái)app服務(wù)器,也可以是來自建設(shè)銀行互聯(lián)網(wǎng)站的不同子系統(tǒng),例如mall.ccb.com和ehome.ccb.com。如果沒有統(tǒng)一的策略,開發(fā)人員就要為每個(gè)網(wǎng)絡(luò)應(yīng)用重復(fù)實(shí)現(xiàn)定制的安全機(jī)制。這會(huì)導(dǎo)致各種可伸縮性和維護(hù)問題。而單點(diǎn)登錄解決方案旨在為安全性和身份驗(yàn)證提供統(tǒng)一的框架,以減輕用戶、管理員和開發(fā)人員的負(fù)擔(dān)。因此,善融商務(wù)電子商務(wù)平臺(tái)系統(tǒng)采用本發(fā)明技術(shù)方案的一種實(shí)施方式如下:Web應(yīng)用中每一個(gè)需要安全保護(hù)的URL在訪問以前,都需要進(jìn)行安全檢查,如果發(fā)現(xiàn)沒有登錄(沒有發(fā)現(xiàn)認(rèn)證之后所帶的Session (即登錄信息)信息和保存于客戶端Cookie的認(rèn)證信息),就重新定向到登錄窗口進(jìn)行登錄。登錄成功后,系統(tǒng)會(huì)自動(dòng)設(shè)置對(duì)應(yīng)的客戶端Cookie認(rèn)證信息和Session信息,并且將登錄信息記錄到數(shù)據(jù)庫中。當(dāng)再訪問這個(gè)URL的時(shí)候,系統(tǒng)仍然需要進(jìn)行安全檢查,但是這次系統(tǒng)同時(shí)發(fā)現(xiàn)相應(yīng)的客戶端Cookie認(rèn)證信息或者Session?;谟行ookie認(rèn)證信息和Session信息就可以直接進(jìn)行訪問。如果不存在相應(yīng)的Session信息,則檢查客戶端Cookie的認(rèn)證信息是否有效(因?yàn)橛锌赡芸蛻舳薈ookie的認(rèn)證信息已經(jīng)過期了,或者因?yàn)閿嚯姸股矸菡J(rèn)證服務(wù)重啟使得客戶端Cookie的認(rèn)證信息無效)。應(yīng)用系統(tǒng)獲得客戶端Cookie的認(rèn)證信息和用戶請(qǐng)求的IP地址,去數(shù)據(jù)庫服務(wù)器進(jìn)行驗(yàn)證,來判斷客戶端的認(rèn)證信息是否真的有效,以及對(duì)應(yīng)的用戶是誰。如果客戶端Cookie的認(rèn)證信息校驗(yàn)成功,就允許用戶訪問當(dāng)前請(qǐng)求的資源。(I)抵御重放攻擊
本實(shí)施方式采用Session + Cookie的方式,首先判斷是否存在客戶端Cookie的認(rèn)證信息,如果存在且與服務(wù)器Session值同時(shí)有效,就不需要進(jìn)行數(shù)據(jù)庫的操作。如果不存在匹配的Session值,則對(duì)保存于客戶端Cookie的認(rèn)證信息值進(jìn)行校驗(yàn)和更新數(shù)據(jù)庫OnlineMember對(duì)象,并設(shè)置一個(gè)有效時(shí)間段(本方案設(shè)置為120秒),每次更新數(shù)據(jù)庫的OnlineMember記錄的時(shí)候,記錄最后更新時(shí)間,并基于該時(shí)間生成時(shí)間戳,寫入對(duì)應(yīng)的客戶端Cookie的認(rèn)證信息的時(shí)間戳域中。當(dāng)最后更新時(shí)間到現(xiàn)在小于超時(shí)時(shí)間(即當(dāng)前時(shí)間與時(shí)間戳的差值未超出有效時(shí)間段)的時(shí)候,不更新數(shù)據(jù)庫的OnlineMember記錄。同時(shí)加入Cookie認(rèn)證信息的還有ID值,服務(wù)端判斷Cookie認(rèn)證信息時(shí)將驗(yàn)證時(shí)間戳是否重復(fù)和超時(shí)(即當(dāng)前時(shí)間與時(shí)間戳的差值超出有效時(shí)間段)以及ID是否唯一。由于重放的時(shí)間戳將相對(duì)遠(yuǎn)離當(dāng)前時(shí)間戳,如果ID不同或者ID相同但時(shí)間戳重復(fù)或超時(shí)則判斷其為無效Cookie,以此避免了重放攻擊。( 2 )防止頻繁請(qǐng)求數(shù)據(jù)庫本實(shí)施方式在校驗(yàn)用戶是否已登錄時(shí),首先檢查是否存在保存于客戶端的Cookie的認(rèn)證信息,如不存在,則不訪問數(shù)據(jù)庫,直接返回失敗結(jié)果;如存在則再與服務(wù)器Session值進(jìn)行比對(duì),若失敗或判斷為超過有效空閑時(shí)間,才訪問數(shù)據(jù)庫進(jìn)行進(jìn)一步校驗(yàn)。一方面,系統(tǒng)對(duì)于單機(jī)的頻繁請(qǐng)求攻擊,則通過軟件驗(yàn)證碼和硬件防火強(qiáng)來基本防御。另一方面,對(duì)于大規(guī)模攻擊帶來的海量請(qǐng)求,則通過臨時(shí)關(guān)閉保存于客戶端Cookie的認(rèn)證信息校驗(yàn)功能,關(guān)閉數(shù)據(jù)庫性能消耗。(3)防止Cookie消息篡改為防止Cookie被其他人隨意查看和分析甚至偽造Cookie的認(rèn)證信息,本實(shí)施方式對(duì)Cookie中的特定信息進(jìn)行加密處理。首先為了防止別人偽造Ticket (票據(jù)),在進(jìn)行Cookie的認(rèn)證信息校驗(yàn)的時(shí)候,根據(jù)Ticket和IP結(jié)合一起生成OnlineMember字段進(jìn)行校驗(yàn),保證Cookie的認(rèn)證信息真的有效,以及當(dāng)前的Cookie的認(rèn)證信息對(duì)應(yīng)的用戶。對(duì)每個(gè)發(fā)布的Cookie均由發(fā)布者進(jìn)行數(shù)字簽名,各子系統(tǒng)在使用這些Cookie時(shí),首先驗(yàn)證數(shù)字簽名的值是否合法,如果數(shù)字簽名值為非法,那么拒絕該Cookie。用戶密碼則采用非對(duì)稱md5算法加密,Password字段存儲(chǔ)的是32位加密字符串。該加密字符串通過用戶實(shí)際密碼經(jīng)過一次md5之后加上salt值(隨機(jī)字符串)再次md5生成,S卩 Password=md5 (md5 (RealPassword).salt)。(4)跨域共享 Cookie為解決跨域共享Cookie問題,首先驗(yàn)證用戶來源是否在我們的站點(diǎn)列表內(nèi)(如果是則跳過此步),其次驗(yàn)證用戶合法性,用戶通過驗(yàn)證后,加密Cookie和公用密鑰后的值將會(huì)在用戶登錄之后作為參數(shù)一起跳轉(zhuǎn)回來來源的應(yīng)用系統(tǒng),應(yīng)用系統(tǒng)獲取到Cookie值后調(diào)用SSO接口進(jìn)行解密、驗(yàn)證等工作。當(dāng)瀏覽器訪問了頁面I (此時(shí)用戶進(jìn)行第一次登入操作)時(shí),Web服務(wù)器(即應(yīng)用服務(wù)器)設(shè)置了 Session信息和Cookie的認(rèn)證信息,并將Ticket (同第一次登入時(shí)的Sessionid)、Cookie信息和頁面I 一起返回給瀏覽器,瀏覽器接收到Ticket和Cookie的認(rèn)證信息之后,就會(huì)保存起來,在它訪問頁面2 (可能與頁面I不在同一臺(tái)服務(wù)器上)的時(shí)候會(huì)把這個(gè)Ticket和保存于Cookie的認(rèn)證信息也帶上,Web服務(wù)器接到請(qǐng)求時(shí)也能從Cookie的認(rèn)證信息中讀取Ticket等信息,根據(jù)Ticket和保存于Cookie的認(rèn)證信息判斷和恢復(fù)一些用戶的信息(如果此服務(wù)器未存在此客戶對(duì)應(yīng)的Session,則與數(shù)據(jù)庫中的用戶認(rèn)證信息進(jìn)行校驗(yàn),若校驗(yàn)成功則新建一個(gè)Session,其中保存用戶第一次登入系統(tǒng)時(shí)的Sessionid即Ticket)??梢岳脭?shù)據(jù)庫信息和保存于客戶端Cookie的認(rèn)證信息來完成用戶登錄信息(Session)的保存,之后將瀏覽器中的Cookie認(rèn)證信息和Ticket結(jié)合起來,完成跨域SSO的功能。以上從后臺(tái)處理(對(duì)用戶而言是透明的)描述了本發(fā)明的技術(shù)方案,下面從前端操作描述本發(fā)明的技術(shù)方案。作為非限制性實(shí)施例,登錄、注銷等功能均以API (應(yīng)用程序編程接口)形式呈現(xiàn),接受被授權(quán)的應(yīng)用系統(tǒng)(即應(yīng)用服務(wù)器上的系統(tǒng))的請(qǐng)求并且返回相應(yīng)的可擴(kuò)展標(biāo)記語言(XML)或者Json (—種輕量級(jí)的數(shù)據(jù)交換格式)結(jié)果。各個(gè)應(yīng)用系統(tǒng)均有自己的登陸和注冊(cè)頁面,適用于同步不得不使用自己用戶功能的已經(jīng)成型的應(yīng)用系統(tǒng)。在本發(fā)明實(shí)施方式中,前臺(tái)管理模塊的主要功能模塊如下:(I)登錄模塊實(shí)現(xiàn)用戶的登錄功能。請(qǐng)求用戶輸入用戶名和密碼,根據(jù)用戶名和密碼判斷用戶是否存在,如果不存在,提示錯(cuò)誤信息。如果存在,把登錄信息記錄到客戶端Cookie的認(rèn)證信息和服務(wù)器Session,并把校驗(yàn)成功信息寫入數(shù)據(jù)庫,跳轉(zhuǎn)到傳入的統(tǒng)一資源定位符(url)頁面。創(chuàng)建的客戶端Cookie及Session的認(rèn)證信息。(2)注冊(cè)模塊實(shí)現(xiàn)用戶的注冊(cè)功能。用戶進(jìn)入注冊(cè)頁面,輸入帳號(hào)、密碼、密碼確認(rèn)、驗(yàn)證碼等信息并提交。系統(tǒng)檢查輸入的帳號(hào)是否已經(jīng)存在,如果存在,提示錯(cuò)誤信息并返回登錄頁面。如果帳號(hào)不存在,將注冊(cè)信息寫入數(shù)據(jù)表中,并將用戶信息記錄寫入Session和創(chuàng)建對(duì)應(yīng)的Cookie的認(rèn)證信息,同時(shí)數(shù)據(jù)庫中記錄OnlineMember數(shù)據(jù)。(3)會(huì)話同步模塊實(shí)現(xiàn)會(huì)話信息在不同服務(wù)器之間的同步。應(yīng)用系統(tǒng)在接收到請(qǐng)求的時(shí)候,先去查找客戶端是否存在期望的Cookie的認(rèn)證信息。如果存在,且與服務(wù)器Session信息同時(shí)有效,則繼續(xù)往下執(zhí)行(根據(jù)Session信息中保存的最后更新時(shí)間,檢查是否需要更新數(shù)據(jù)庫的OnlineMember記錄)。如果不存在對(duì)應(yīng)的Session信息但是存在Cookie的認(rèn)證信息,則調(diào)用getOnlineMember (Ticket, ip)去校驗(yàn)這個(gè)Cookie的認(rèn)證信息的有效性。如果無效(不存在期望的OnlineMember或者已經(jīng)過期),刪除對(duì)應(yīng)的Cookie的認(rèn)證信息。如果沒有過期,就更新對(duì)應(yīng)的Cookie的認(rèn)證信息、倉Il建Session對(duì)象(并設(shè)置其Ticket值與保存于客戶端Cookie的認(rèn)證信息中的Ticket值一致)和更新數(shù)據(jù)庫的OnlineMember記錄。(4)注銷模塊實(shí)現(xiàn)用戶注銷的功能,根據(jù)Cookie的認(rèn)證信息中保存的Ticket,刪除數(shù)據(jù)庫中的OnlineMember記錄。同時(shí)刪除相應(yīng)的Cookie的認(rèn)證信息和本服務(wù)器Session信息。(5)找回密碼模塊用戶忘記密碼后,通過此項(xiàng)功能,發(fā)送加密后的url字符串到用戶郵件。用戶通過點(diǎn)擊該url,實(shí)現(xiàn)用戶密碼的修改。以上通過從后臺(tái)處理和前端操作兩個(gè)方面對(duì)本發(fā)明的技術(shù)方案進(jìn)行了詳細(xì)描述,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,上述的各個(gè)實(shí)施方式僅僅是示例性的,而非限制性的。本領(lǐng)域技術(shù)人員可以根據(jù)本發(fā)明權(quán)利要求書的教導(dǎo)對(duì)上述實(shí)施方式進(jìn)行修改、變換、等同替換,但是,按照這種方式修改、變換和等同替換的技術(shù)方案也落入本發(fā)明權(quán)利要求限定的保護(hù)范圍。并且,通過上述的描述可知,本發(fā)明的優(yōu)勢和有益效果如下:在Cookie中加入時(shí)間戳域和ID域以抵制重放攻擊;增加Cookie校驗(yàn)時(shí)訪問數(shù)據(jù)庫的條件以防止頻繁數(shù)據(jù)庫訪問;將Ticket和IP結(jié)合的數(shù)字簽名及使用md5算法加密以避免Cookie被篡改;利用可信站點(diǎn)列表及Session生成機(jī)制實(shí)現(xiàn)跨域共享Cookie。通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件結(jié)合硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以全部通過硬件來實(shí)施?;谶@樣的理解,本發(fā)明的技術(shù)方案對(duì)背景技術(shù)做出貢獻(xiàn)的全部或者部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
權(quán)利要求
1.一種基于Cookie的單點(diǎn)登錄方法,其特征在于,所述方法包括: A、應(yīng)用服務(wù)器接收用戶通過客戶端瀏覽器發(fā)送的請(qǐng)求訪問和使用受保護(hù)的資源的請(qǐng)求消息; B、檢查客戶端瀏覽器上是否存在該用戶的已經(jīng)創(chuàng)建好的Cookie,如果不存在,則直接返回失敗結(jié)果并進(jìn)入步驟C,否則進(jìn)入步驟F ; 其中,所述Cookie包含:認(rèn)證信息值、表示該Cookie的產(chǎn)生時(shí)間的時(shí)間戳、以及ID值; C、所述應(yīng)用服務(wù)器將所述客戶端瀏覽器重定向到登錄服務(wù)器進(jìn)行登錄操作; D、所述登錄服務(wù)器在用戶登錄成功后產(chǎn)生有效的Cookie,并將登錄信息記錄到數(shù)據(jù)庫中; E、所述登錄服務(wù)器將產(chǎn)生的有效的Cookie發(fā)送給所述客戶端瀏覽器,并將所述客戶端瀏覽器重定向到所述應(yīng)用服務(wù)器,轉(zhuǎn)到步驟B; F、對(duì)該用戶的Cookie進(jìn)行驗(yàn)證,并且在驗(yàn)證通過的條件下向該用戶提供所請(qǐng)求的資源; 其中,在步驟F中對(duì)該用戶的Cookie進(jìn)行驗(yàn)證包括: 判斷該用戶的Cookie 的認(rèn)證信息值與服務(wù)器登錄信息值是否匹配,驗(yàn)證該用戶的Cookie是否同時(shí)滿足下述條件:該Cookie的ID值唯一、該Cookie的時(shí)間戳未重復(fù)、當(dāng)前時(shí)間與該Cookie的時(shí)間戳的差值未超出該Cookie的有效時(shí)間段。
2.如權(quán)利要求1所述的單點(diǎn)登錄方法,其特征在于,在步驟F中對(duì)該用戶的Cookie進(jìn)行驗(yàn)證還包括: 當(dāng)用戶的Cookie的認(rèn)證信息值與服務(wù)器登錄信息值不匹配時(shí),判斷當(dāng)前時(shí)間與該用戶的Cookie的時(shí)間戳的差值是否超出該Cookie的有效時(shí)間段; 當(dāng)當(dāng)前時(shí)間與該用戶的Cookie的時(shí)間戳的差值超出該Cookie的有效時(shí)間段時(shí),對(duì)該用戶的Cookie的認(rèn)證信息值進(jìn)行校驗(yàn)和更新數(shù)據(jù)庫的在線成員OnlineMember記錄,重新設(shè)置有效時(shí)間段,并基于更新時(shí)間生成時(shí)間戳,并用生成的時(shí)間戳替換該用戶的Cookie的先前的時(shí)間戳; 當(dāng)當(dāng)前時(shí)間與該用戶的Cookie的時(shí)間戳的差值未超出該Cookie的有效時(shí)間段時(shí),不更新數(shù)據(jù)庫的OnlineMember記錄。
3.如權(quán)利要求2所述的單點(diǎn)登錄方法,其特征在于,對(duì)所述用戶的Cookie的認(rèn)證信息值進(jìn)行校驗(yàn)包括: 根據(jù)票據(jù)Ticket和IP地址結(jié)合一起生成OnlineMember去校驗(yàn)所述用戶的Cookie的有效性。
4.如權(quán)利要求3所述的單點(diǎn)登錄方法,其特征在于,所述方法還包括: 所述登錄服務(wù)器對(duì)產(chǎn)生的Cookie進(jìn)行數(shù)字簽名,所述應(yīng)用服務(wù)器使用Cookie時(shí)驗(yàn)證數(shù)字簽名的值是否合法,如果數(shù)字簽名的值不合法,則拒絕該Cookie。
5.如權(quán)利要求4所述的單點(diǎn)登錄方法,其特征在于,所述方法還包括采用非對(duì)稱MD5算法對(duì)用戶密碼進(jìn)行加密,并將得到的加密字符串存儲(chǔ)在密碼Password字段。
6.如權(quán)利要求5所述的單點(diǎn)登錄方法,其特征在于,所述加密字符串是通過將用戶的實(shí)際密碼經(jīng)過一次MD5算法處理后加上隨機(jī)字符串再次進(jìn)行MD5算法處理而生成。
7.如權(quán)利要求1所述的單點(diǎn)登錄方法,其特征在于,所述方法還包括:所述應(yīng)用服務(wù)器在接收用戶通過客戶端瀏覽器發(fā)送的請(qǐng)求訪問和使用受保護(hù)的資源的請(qǐng)求消息時(shí)能夠從用戶的Cookie的認(rèn)證信息中讀取用戶訪問另一應(yīng)用服務(wù)器的Ticket信息,并根據(jù)Ticket和Cookie的認(rèn)證信息判斷和恢復(fù)部分用戶信息以實(shí)現(xiàn)用戶登錄信息的保存。
8.如權(quán)利要求1所述的單點(diǎn)登錄方法,其特征在于,所述方法還包括: 在步驟A之前,驗(yàn)證用于來源是否在站點(diǎn)列表內(nèi)、驗(yàn)證用戶的合法性; 用戶通過驗(yàn)證后,使用公用密鑰加密Cookie后的值作為參數(shù)在用戶登錄之后跳轉(zhuǎn)回來源的應(yīng)用服務(wù)器; 應(yīng)用服務(wù)器獲取到Cookie的值后調(diào)用單點(diǎn)登錄接口進(jìn)行解密、驗(yàn)證。
9.一種能夠?qū)崿F(xiàn)基于Cookie的單點(diǎn)登錄的應(yīng)用服務(wù)器,其特征在于,所述應(yīng)用服務(wù)器包括: 接收單元,用于收用戶通過客戶端瀏覽器發(fā)送的請(qǐng)求訪問和使用受保護(hù)的資源的請(qǐng)求消息; 檢查單元,用于檢查客戶端瀏覽器上是否存在該用戶的已經(jīng)創(chuàng)建好的Cookie,所述Cookie包含:認(rèn)證信息值、表示該Cookie的產(chǎn)生時(shí)間的時(shí)間戳、以及ID值; 重定向單元,用于在所述檢查單元檢查出客戶端瀏覽器上不存在該用戶的已經(jīng)創(chuàng)建好的Cookie時(shí)將客戶端瀏覽器重定 向到登錄服務(wù)器進(jìn)行登錄操作; 驗(yàn)證單元,用于在所述檢查單元檢查出客戶端瀏覽器上存在該用戶的已經(jīng)創(chuàng)建好的Cookie時(shí)對(duì)該用戶的Cookie進(jìn)行驗(yàn)證; 其中,所述對(duì)該用戶的Cookie進(jìn)行驗(yàn)證包括: 判斷該用戶的Cookie的認(rèn)證信息值與服務(wù)器登錄信息值是否匹配,驗(yàn)證該用戶的Cookie是否同時(shí)滿足下述條件:該Cookie的ID值唯一、該Cookie的時(shí)間戳未重復(fù)、當(dāng)前時(shí)間與該Cookie的時(shí)間戳的差值未超出該Cookie的有效時(shí)間段。
10.如權(quán)利要求9所述的應(yīng)用服務(wù)器,其特征在于,所述驗(yàn)證單元還用于: 當(dāng)用戶的Cookie的認(rèn)證信息值與服務(wù)器登錄信息值不匹配時(shí),判斷當(dāng)前時(shí)間與該用戶的Cookie的時(shí)間戳的差值是否超出該Cookie的有效時(shí)間段; 當(dāng)當(dāng)前時(shí)間與該用戶的Cookie的時(shí)間戳的差值超出該Cookie的有效時(shí)間段時(shí),對(duì)該用戶的Cookie的認(rèn)證信息值進(jìn)行校驗(yàn)和更新數(shù)據(jù)庫的在線成員OnlineMember記錄,重新設(shè)置有效時(shí)間段,并基于更新時(shí)間生成時(shí)間戳,并用生成的時(shí)間戳替換該用戶的Cookie的先前的時(shí)間戳; 當(dāng)當(dāng)前時(shí)間與該用戶的Cookie的時(shí)間戳的差值未超出該Cookie的有效時(shí)間段時(shí),不更新數(shù)據(jù)庫的OnlineMember記錄。
11.如權(quán)利要求10所述的應(yīng)用服務(wù)器,其特征在于,對(duì)所述用戶的Cookie的認(rèn)證信息值進(jìn)行校驗(yàn)包括: 根據(jù)票據(jù)Ticket和IP地址結(jié)合一起生成OnlineMember去校驗(yàn)所述用戶的Cookie的有效性。
12.如權(quán)利要求9所述的應(yīng)用服務(wù)器,其特征在于,所述應(yīng)用服務(wù)器還包括: 數(shù)字簽名驗(yàn)證單元,用于驗(yàn)證所述登錄服務(wù)器對(duì)Cookie進(jìn)行數(shù)字簽名的值是否合法并且在不合法的情形下拒絕該Cookie。
13.如權(quán)利要求9所述的應(yīng)用服務(wù)器,其特征在于,所述應(yīng)用服務(wù)器還包括: 信息恢復(fù)單元,用于在接收用戶通過客戶端瀏覽器發(fā)送的請(qǐng)求訪問和使用受保護(hù)的資源的請(qǐng)求消息時(shí)能夠從用戶的Cookie的認(rèn)證信息中讀取用戶訪問另一應(yīng)用服務(wù)器的Ticket信息,并根據(jù)Ticket和Cookie的認(rèn)證信息判斷和恢復(fù)部分用戶信息以實(shí)現(xiàn)用戶登錄信息的保存。
14.如權(quán)利要求9所述的應(yīng)用服務(wù)器,其特征在于,所述應(yīng)用服務(wù)器還包括跨域共享單元,所述跨域共享單元用于實(shí)現(xiàn)以下操作: 驗(yàn)證用于來源是否在站點(diǎn)列表內(nèi)、驗(yàn)證用戶的合法性; 用戶通過驗(yàn)證后,使用公用密鑰加密Cookie后的值作為參數(shù)在用戶登錄之后跳轉(zhuǎn)回來源的應(yīng)用服務(wù)器; 應(yīng)用服務(wù)器獲取到Cookie的值后調(diào)用單點(diǎn)登錄接口進(jìn)行解密、驗(yàn)證。
15.一種能夠?qū)崿F(xiàn)基于Cookie的單點(diǎn)登錄的系統(tǒng),其特征在于,所述系統(tǒng)包括客戶端瀏覽器、如權(quán)利要求9至14任意一項(xiàng)所述的應(yīng)用服務(wù)器和登錄服務(wù)器,其中,所述登錄服務(wù)器用于在用戶登錄成功后產(chǎn)生有效的Cookie,將登錄信息記錄到數(shù)據(jù)庫中,將產(chǎn)生的有效的Cookie發(fā)送給所述 客戶端瀏覽器,并將所述客戶端瀏覽器重定向到所述應(yīng)用服務(wù)器。
全文摘要
本發(fā)明公開了一種基于Cookie的單點(diǎn)登錄方法、系統(tǒng)及其應(yīng)用服務(wù)器,通過下述操作解決重放攻擊和頻繁訪問數(shù)據(jù)庫的技術(shù)問題A、應(yīng)用服務(wù)器接收客戶端瀏覽器發(fā)送的請(qǐng)求消息;B、檢查客戶端瀏覽器上是否存在用戶的Cookie,若不存在,則直接返回失敗結(jié)果并進(jìn)入步驟C,否則進(jìn)入步驟F;C、將客戶端瀏覽器重定向到登錄服務(wù)器進(jìn)行登錄操作;D、登錄服務(wù)器在用戶登錄成功后產(chǎn)生有效的Cookie;E、將產(chǎn)生的有效的Cookie發(fā)送給客戶端瀏覽器,并重定向到應(yīng)用服務(wù)器,轉(zhuǎn)到步驟B;F、對(duì)用戶的Cookie進(jìn)行驗(yàn)證,包括判斷用戶的Cookie的認(rèn)證信息值與服務(wù)器Session值是否匹配,Cookie的ID值是否唯一、Cookie的時(shí)間戳是否重復(fù)、是否超時(shí),并且在通過驗(yàn)證的條件下向該用戶提供所請(qǐng)求的資源。
文檔編號(hào)H04L29/06GK103179134SQ201310137258
公開日2013年6月26日 申請(qǐng)日期2013年4月19日 優(yōu)先權(quán)日2013年4月19日
發(fā)明者王進(jìn), 肖群, 周振, 黎民, 羅世容, 何小鋒, 郭友德, 蔣祁效, 陳紅淇 申請(qǐng)人:中國建設(shè)銀行股份有限公司