欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于Cookie的單點登錄方法、系統(tǒng)及其應(yīng)用服務(wù)器的制作方法

文檔序號:7555338閱讀:185來源:國知局
專利名稱:基于Cookie的單點登錄方法、系統(tǒng)及其應(yīng)用服務(wù)器的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù),更為具體而言,涉及一種基于Cookie的單點登錄方法、系統(tǒng)及其應(yīng)用服務(wù)器。
背景技術(shù)
單點登錄系統(tǒng)SSO (Single Sign-On)也稱作統(tǒng)一的身份認證系統(tǒng),指用戶使用系統(tǒng)時只需進行一次身份認證,隨后根據(jù)用戶權(quán)限便可以訪問在系統(tǒng)允許的范圍內(nèi)的所有網(wǎng)絡(luò)資源,而不需要多次登錄不同的子系統(tǒng)或者在使用處于不同的計算機環(huán)境中的所有網(wǎng)絡(luò)資源時重復(fù)進行用戶身份認證的過程。當前單點登錄實現(xiàn)方案主要分為三種類型:一是基于Oauth協(xié)議(一種為用戶資源的授權(quán)提供了一個安全的、開放而又簡易的標準)的網(wǎng)絡(luò)令牌的機制;二是基于WebService或簡單Http協(xié)議(即超文本傳輸協(xié)議)實現(xiàn)的Passport機制;三是以O(shè)penID框架(一種以用戶為中心的數(shù)字身份識別框架)形成的通用賬號登錄機制。其中,基于Oauth協(xié)議主要應(yīng)用在網(wǎng)站外部,比較知名的有臉書鏈接(Facebook Connect)和新浪微博鏈接等;Passport機制的應(yīng)用主要是針對同一網(wǎng)站內(nèi)不同架構(gòu)不同平臺,如Google Account賬號基本上可以應(yīng)用于所有Google的網(wǎng)站;至于OpenID此類需共享用戶信息的方案,則在國外被廣泛采納。目前企業(yè)信息門戶基于Web的系統(tǒng)大多可以完成單點登錄這一目標,基于Web的電子商務(wù)平臺需要統(tǒng)一身份認證和資源訪問控制機制,而基于Cookie的單點登錄系統(tǒng)是一種很好的解決方案,但是,本發(fā)明的發(fā)明人發(fā)現(xiàn)基于Cookie的單點登錄方案存在以下幾個技術(shù)問題:(I)重放攻擊。重放攻擊(Iteplay Attacks)又稱重播攻擊、回放攻擊或新鮮性攻擊(Freshness Attacks),是指攻擊者發(fā)送一個目的主機已接收過的包,來達到欺騙系統(tǒng)的目的,主要用于身份認證過程,破壞認證的正確性。這種攻擊會不斷惡意或欺詐性地重復(fù)一個有效的數(shù)據(jù)傳輸,重放攻擊可以由發(fā)起者,也可以由攔截并重發(fā)該數(shù)據(jù)的敵方進行。攻擊者利用網(wǎng)絡(luò)監(jiān)聽或者其他方式盜取認證憑據(jù),之后再把它重新發(fā)給認證服務(wù)器。雖然加密可以有效防止會話劫持,但是不能防止重放攻擊。(2)頻繁訪問數(shù)據(jù)庫。在高負荷訪問和大量并發(fā)請求的大型網(wǎng)站中,從系統(tǒng)安全和性能出發(fā),需考慮避免頻繁的訪問和操作數(shù)據(jù)庫。由于應(yīng)用系統(tǒng)獲得客戶端Cookie的認證信息和用戶請求的IP地址,都需要去數(shù)據(jù)庫服務(wù)器進行驗證,來判斷客戶端的認證信息是否真的有效,以及對應(yīng)的用戶是誰。如果黑客利用偽造Cookie的認證信息,對服務(wù)器進行頻繁請求,在驗證客戶端Cookie的認證信息實效性和真實性時,將產(chǎn)生與請求量成正比的數(shù)據(jù)庫訪問性能消耗。(3)Cookie篡改。主要以獲取模擬和隱私權(quán)泄密著稱的技術(shù),通過維護客戶(或終端用戶)身份的會話信息操縱來實現(xiàn)的。通過偽造Cookie,一個黑客可以模擬一個有效的客戶,因此獲取詳細信息并執(zhí)行代表病毒的行為。
(4)跨域單點登錄。Cookie的存取只對同一域下的主機有效,分布式應(yīng)用系統(tǒng)往往不能保證所有的主機都在同一域下。當用戶登錄加入SSO認證體系里的一臺服務(wù)器時,例如服務(wù)器A,客戶機瀏覽器可以將獲得的登錄用戶票據(jù)記錄到本地Cookie中,當此客戶機轉(zhuǎn)而訪問服務(wù)器B的時候,為了實現(xiàn)單點登錄,服務(wù)器B必須要獲得標識用戶登錄狀態(tài)的票據(jù)作為憑證來進行驗證,而此票據(jù)存儲于先前訪問服務(wù)器A時留下的Cookie,此Cookie只對來自服務(wù)器A域里的訪問有效,為獲取訪問其他域主機的Cookie,必需實現(xiàn)跨域共享Cookie。

發(fā)明內(nèi)容
針對上述技術(shù)問題,本發(fā)明提供了一種基于Cookie的單點登錄方法,可以有效地防止重放攻擊、頻繁訪問數(shù)據(jù)庫、Cookie篡改,并實現(xiàn)跨域單點登錄。Cookie的本質(zhì)是一個文件,在用戶登陸Web服務(wù)器時創(chuàng)建的,并且將信息存儲在該文件中。作為存儲用戶的識別信息出現(xiàn)的Cookie機制,其作用是記錄用戶在該站點上曾經(jīng)訪問的頁面,甚至進行簡單的設(shè)置,那么在用戶下一次訪問時就能夠提供個性化的頁面設(shè)置和信息。更重要的是Cookies也可以存儲個人的登陸信息和其他識別信息,在下次登錄時對用戶進行識別。當用戶通過瀏覽器向一個Web服務(wù)器發(fā)出請求時,Web服務(wù)器上的代理程序會將它重定向到認證授權(quán)服務(wù)器,認證授權(quán)服務(wù)器會要求用戶提供登錄所需的用戶名和密碼等信息。當認證授權(quán)服務(wù)器接收信息并且通過認證之后將發(fā)送一個身份確認信息給用戶,而這個身份確認的信息就是Cookie,Cookie將保存在用戶的瀏覽器中。如果用戶需要對其他的頁面進行操作,其他的Web服務(wù)器首先從用戶的瀏覽器Cookie之中讀取之前所保存的用戶標識,對用戶進行認證。如果各個系統(tǒng)之間有互認機制,那么用戶就可以利用自己的Cookie直接進行該子系統(tǒng)的服務(wù)。并且上述的這些過程對用戶是透明的,使得用戶不用重復(fù)登錄各個頁面子系統(tǒng),從而完成了單點登錄。在本發(fā)明的一種實施方式中,提供一種基于Cookie的單點登錄方法,通過下述步驟解決上述的重放攻擊和頻繁訪問數(shù)據(jù)庫的技術(shù)問題,所述步驟包括:A、應(yīng)用服務(wù)器接收用戶通過客戶端瀏覽器發(fā)送的請求訪問和使用受保護的資源的請求消息;B、檢查客戶端瀏覽器上是否存在該用戶的已經(jīng)創(chuàng)建好的Cookie,如果不存在,則直接返回失敗結(jié)果并進入步驟C,否則進入步驟F ;其中,所述Cookie包含:認證信息值、表示該Cookie的產(chǎn)生時間的時間戳、以及ID值;C、所述應(yīng)用服務(wù)器將所述客戶端瀏覽器重定向到登錄服務(wù)器進行登錄操作;D、所述登錄服務(wù)器在用戶登錄成功后產(chǎn)生有效的Cookie,并將登錄信息記錄到數(shù)據(jù)庫中;E、所述登錄服務(wù)器將產(chǎn)生的有效的Cookie發(fā)送給所述客戶端瀏覽器,并將所述客戶端瀏覽器重定向到所述應(yīng)用服務(wù)器,轉(zhuǎn)到步驟B;F、對該用戶的Cookie進行驗證,并且在驗證通過的條件下向該用戶提供所請求的資源;其中,在步驟F中對該用戶的Cookie進行驗證包括:
判斷該用戶的Cookie的認證信息值與服務(wù)器登錄信息值是否匹配,驗證該用戶的Cookie是否同時滿足下述條件:該Cookie的ID值唯一、該Cookie的時間戳未重復(fù)、當前時間與該Cookie的時間戳的差值未超出該Cookie的有效時間段。根據(jù)本發(fā)明實施方式,通過在Cookie中加入時間戳域和ID域,基于時間戳和ID值對Cookie進行驗證,有效地防止了重放攻擊,并且當不存在該用戶的已經(jīng)創(chuàng)建好的Cookie時直接返回失敗結(jié)果避免對數(shù)據(jù)庫進行頻繁操作。在本發(fā)明的另一種實施方式中,通過在上述對用戶的Cookie進行驗證的步驟中加入下述步驟,進一步有效地防止了對數(shù)據(jù)庫的頻繁訪問:當用戶的Cookie的認證信息值與服務(wù)器登錄信息值不匹配時,判斷當前時間與該用戶的Cookie的時間戳的差值是否超出該Cookie的有效時間段;當當前時間與該用戶的Cookie的時間戳的差值超出該Cookie的有效時間段時,對該用戶的Cookie的認證信息值進行校驗和更新數(shù)據(jù)庫的在線成員(OnlineMember)記錄,重新設(shè)置有效時間段,并基于更新時間生成時間戳,并用生成的時間戳替換該用戶的Cookie的先前的時間戳;當當前時間與該用戶的Cookie的時間戳的差值未超出該Cookie的有效時間段時,不更新數(shù)據(jù)庫的OnlineMember記錄。在本發(fā)明的再一種實施方式中,根據(jù)票據(jù)(Ticket)和IP地址結(jié)合一起生成OnlineMember去校驗所述用戶的Cookie的有效性,以防止Cookie被篡改。在本發(fā)明的又一種實施方式中,所述登錄服務(wù)器對產(chǎn)生的Cookie進行數(shù)字簽名,所述應(yīng)用服務(wù)器使用Cookie時驗證數(shù)字簽名的值是否合法,如果數(shù)字簽名的值不合法,則拒絕該Cookie,從而進一步防止Cookie被篡改。在本發(fā)明的又一種實施方式中,所述應(yīng)用服務(wù)器在接收用戶通過客戶端瀏覽器發(fā)送的請求訪問和使用受保護的資源的請求消息時能夠從用戶的Cookie的認證信息中讀取用戶訪問另一應(yīng)用服務(wù)器的Ticket信息,并根據(jù)Ticket和Cookie的認證信息判斷和恢復(fù)部分用戶信息以實現(xiàn)用戶登錄信息的保存。從而實現(xiàn)跨域名共享Cookie操作。在本發(fā)明的又一種實施方式中,在步驟A之前,驗證用于來源是否在站點列表內(nèi)、驗證用戶的合法性;用戶通過驗證后,使用公用密鑰加密Cookie后的值作為參數(shù)在用戶登錄之后跳轉(zhuǎn)回來源的應(yīng)用服務(wù)器;應(yīng)用服務(wù)器獲取到Cookie的值后調(diào)用單點登錄接口進行解密、驗證。從而實現(xiàn)跨域名共享Cookie操作。另外,本發(fā)明實施方式提供了一種能夠?qū)崿F(xiàn)基于Cookie的單點登錄的應(yīng)用服務(wù)器,所述應(yīng)用服務(wù)器包括實現(xiàn)上述方法步驟的單元,例如:接收單元,用于收用戶通過客戶端瀏覽器發(fā)送的請求訪問和使用受保護的資源的請求消息;檢查單元,用于檢查客戶端瀏覽器上是否存在該用戶的已經(jīng)創(chuàng)建好的Cookie,所述Cookie包含:認證信息值、表示該Cookie的產(chǎn)生時間的時間戳、以及ID值;重定向單元,用于在所述檢查單元檢查出客戶端瀏覽器上不存在該用戶的已經(jīng)創(chuàng)建好的Cookie時將客戶端瀏覽器重定向到登錄服務(wù)器進行登錄操作;驗證單元,用于在所述檢查單元檢查出客戶端瀏覽器上存在該用戶的已經(jīng)創(chuàng)建好的Cookie時對該用戶的Cookie進行驗證;
其中,所述對該用戶的Cookie進行驗證包括:判斷該用戶的Cookie的認證信息值與服務(wù)器登錄信息值是否匹配,驗證該用戶的Cookie是否同時滿足下述條件:該Cookie的ID值唯一、該Cookie的時間戳未重復(fù)、當前時間與該Cookie的時間戳的差值未超出該Cookie的有效時間段。此外,本發(fā)明實施方式還提供了一種能夠?qū)崿F(xiàn)基于Cookie的單點登錄的系統(tǒng),其包括客戶端瀏覽器、上述的應(yīng)用服務(wù)器和登錄服務(wù)器,其中,所述登錄服務(wù)器用于在用戶登錄成功后產(chǎn)生有效的Cookie,將登錄信息記錄到數(shù)據(jù)庫中,將產(chǎn)生的有效的Cookie發(fā)送給所述客戶端瀏覽器,并將所述客戶端瀏覽器重定向到所述應(yīng)用服務(wù)器。由上述可知,本發(fā)明提出了一種解決統(tǒng)一客戶體驗的基于Cookie的單點登錄技術(shù)方案。該方案在發(fā)揮Cookie方案的現(xiàn)有優(yōu)勢的同時,解決了因使用傳統(tǒng)的Cookie導(dǎo)致的一系列安全隱患問題,其優(yōu)點包括以下幾個方面:有效規(guī)避重放攻擊風(fēng)險;有效防范頻繁數(shù)據(jù)庫訪問,增強了性能和安全;有效避免Cookie消息篡改風(fēng)險;實現(xiàn)共享Cookie及跨域單點登錄。


圖1是根據(jù)本發(fā)明實施方式的一種基于Cookie的單點登錄方法的流程圖;圖2是根據(jù)本發(fā)明實施方式的一種能夠?qū)崿F(xiàn)基于Cookie的單點登錄的系統(tǒng)框圖;圖3是根據(jù)本發(fā)明實施方式的一種能夠?qū)崿F(xiàn)基于Cookie的單點登錄的應(yīng)用服務(wù)器的框圖。
具體實施例方式為了便于理解本發(fā)明技術(shù)方案的各個方面、特征以及優(yōu)點,下面結(jié)合附圖對本發(fā)明進行具體描述。應(yīng)當理解,下述的各種實施方式只用于舉例說明,而非用于限制本發(fā)明的保護范圍。參考圖1,在本發(fā)明的一種實施方式中,提供了一種基于Cookie的單點登錄方法。所述方法包括以下步驟:S100、應(yīng)用服務(wù)器接收用戶通過客戶端瀏覽器發(fā)送的請求訪問和使用受保護的資源的請求消息。S200、檢查客戶端瀏覽器上是否存在該用戶的已經(jīng)創(chuàng)建好的Cookie,如果不存在,則直接返回失敗結(jié)果并進入步驟S300,否則進入步驟S600。其中,所述Cookie包含:認證信息值、表示該Cookie的產(chǎn)生時間的時間戳、以及ID值。通常,當用戶通過瀏覽器向一個Web服務(wù)器發(fā)出請求時,Web服務(wù)器上的代理程序會將它重定向到認證授權(quán)服務(wù)器,認證授權(quán)服務(wù)器會要求用戶提供登錄所需的用戶名和密碼等信息。當認證授權(quán)服務(wù)器接收信息并且通過認證之后將發(fā)送一個身份確認信息給用戶,而這個身份確認的信息就是Cookie, Cookie將保存在用戶的瀏覽器中。S300、所述應(yīng)用服務(wù)器將所述客戶端瀏覽器重定向到登錄服務(wù)器進行登錄操作。S400、所述登錄服務(wù)器在用戶登錄成功后產(chǎn)生有效的Cookie,并將登錄信息記錄到數(shù)據(jù)庫中。
S500、所述登錄服務(wù)器將產(chǎn)生的有效的Cookie發(fā)送給所述客戶端瀏覽器,并將所述客戶端瀏覽器重定向到所述應(yīng)用服務(wù)器,轉(zhuǎn)到步驟S200。S600、對該用戶的Cookie進行驗證,并且在驗證通過的條件下向該用戶提供所請求的資源。其中,在步驟S600中對該用戶的Cookie進行驗證包括:判斷該用戶的Cookie的認證信息值與服務(wù)器登錄信息值是否匹配,驗證該用戶的Cookie是否同時滿足下述條件:該Cookie的ID值唯一、該Cookie的時間戳未重復(fù)、當前時間與該Cookie的時間戳的差值未超出該Cookie的有效時間段。在本發(fā)明的另一種實施方式中,對該用戶的Cookie進行驗證還包括進行以下操作:當用戶的Cookie的認證信息值與服務(wù)器登錄信息值不匹配時,判斷當前時間與該用戶的Cookie的時間戳的差值是否超出該Cookie的有效時間段;當當前時間與該用戶的Cookie的時間戳的差值超出該Cookie的有效時間段時,對該用戶的Cookie的認證信息值進行校驗和更新數(shù)據(jù)庫的OnlineMember記錄,重新設(shè)置有效時間段,并基于更新時間生成時間戳,并用生成的時間戳替換該用戶的Cookie的先前的時間戳;當當前時間與該用戶的Cookie的時間戳的差值未超出該Cookie的有效時間段時,不更新數(shù)據(jù)庫的OnlineMember記錄。其中,對所述用戶的Cookie的認證信息值進行校驗包括:根據(jù)票據(jù)Ticket和IP地址結(jié)合一起生成OnlineMember去校驗所述用戶的Cookie的有效性。在本發(fā)明的其他實施方式中,所述方法還包括:所述登錄服務(wù)器對產(chǎn)生的Cookie進行數(shù)字簽名,所述應(yīng)用服務(wù)器使用Cookie時驗證數(shù)字簽名的值是否合法,如果數(shù)字簽名的值不合法,則拒絕該Cookie。優(yōu)選地,采用非對稱MD5算法對用戶密碼進行加密,并將得到的加密字符串存儲在密碼Password字段。具體而言,所述加密字符串是通過將用戶的實際密碼經(jīng)過一次MD5算法處理后加上隨機字符串再次進行MD5算法處理而生成。本領(lǐng)技術(shù)人員應(yīng)當理解,以上只是本發(fā)明數(shù)字簽名的一個例子,本發(fā)明的保護范圍當然不局限于此,還可以采用本領(lǐng)域熟知的其他任何簽名算法。在本發(fā)明的又一實施方式中,所述方法還包括:所述應(yīng)用服務(wù)器在接收用戶通過客戶端瀏覽器發(fā)送的請求訪問和使用受保護的資源的請求消息時能夠從用戶的Cookie的認證信息中讀取用戶訪問另一應(yīng)用服務(wù)器的Ticket信息,并根據(jù)Ticket和Cookie的認證信息判斷和恢復(fù)部分用戶信息以實現(xiàn)用戶登錄信息的保存,從而實現(xiàn)跨域名共享Cookie操作。在本發(fā)明的其他實施方式中,所述方法還包括:在步驟S100之前,驗證用于來源是否在站點列表內(nèi)、驗證用戶的合法性;用戶通過驗證后,使用公用密鑰加密Cookie后的值作為參數(shù)在用戶登錄之后跳轉(zhuǎn)回來源的應(yīng)用服務(wù)器;應(yīng)用服務(wù)器獲取到Cookie的值后調(diào)用單點登錄接口進行解密、驗證,從而實現(xiàn)跨域名共享Cookie操作。參考圖2,本發(fā)明實施方式還提供了一種能夠?qū)崿F(xiàn)基于Cookie的單點登錄的系統(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ā)明的一種實施方式中,如圖3所示,所述應(yīng)用服務(wù)器200包括:接收單元201,用于收用戶通過客戶端瀏覽器100發(fā)送的請求訪問和使用受保護的資源的請求消息;檢查單元202,用于檢查客戶端瀏覽器100上是否存在該用戶的已經(jīng)創(chuàng)建好的Cookie,所述Cookie包含:認證信息值、表示該Cookie的產(chǎn)生時間的時間戳、以及ID值;重定向單元203,用于在所述檢查單元202檢查出客戶端瀏覽器100上不存在該用戶的已經(jīng)創(chuàng)建好的Cookie時將客戶端瀏覽器100重定向到登錄服務(wù)器300進行如上所述的登錄操作; 驗證單元204,用于在所述檢查單元202檢查出客戶端瀏覽器上存在該用戶的已經(jīng)創(chuàng)建好的Cookie時對該用戶的Cookie進行驗證;其中,所述對該用戶的Cookie進行驗證包括:判斷該用戶的Cookie的認證信息值與服務(wù)器登錄信息值是否匹配,驗證該用戶的Cookie是否同時滿足下述條件:該Cookie的ID值唯一、該Cookie的時間戳未重復(fù)、當前時間與該Cookie的時間戳的差值未超出該Cookie的有效時間段。在本發(fā)明的另一實施方式中,所述驗證單元還用于執(zhí)行如下操作:當用戶的Cookie的認證信息值與服務(wù)器登錄信息值不匹配時,判斷當前時間與該用戶的Cookie的時間戳的差值是否超出該Cookie的有效時間段;當當前時間與該用戶的Cookie的時間戳的差值超出該Cookie的有效時間段時,對該用戶的Cookie的認證信息值進行校驗和更新數(shù)據(jù)庫的在線成員OnlineMember記錄,重新設(shè)置有效時間段,并基于更新時間生成時間戳,并用生成的時間戳替換該用戶的Cookie的先前的時間戳;當當前時間與該用戶的Cookie的時間戳的差值未超出該Cookie的有效時間段時,不更新數(shù)據(jù)庫的OnlineMember記錄。優(yōu)選地,對所述用戶的Cookie的認證信息值進行校驗包括:根據(jù)票據(jù)Ticket和IP地址結(jié)合一起生成OnlineMember去校驗所述用戶的Cookie的有效性。在本發(fā)明的其他實施方式中,所述應(yīng)用服務(wù)器200還包括:數(shù)字簽名驗證單元205,用于驗證所述登錄服務(wù)器對Cookie進行數(shù)字簽名的值是否合法并且在不合法的情形下拒絕該Cookie。例如,采用非對稱MD5算法對用戶密碼進行加密,并將得到的加密字符串存儲在密碼Password字段,具體地,所述加密字符串是通過將用戶的實際密碼經(jīng)過一次MD5算法處理后加上隨機字符串再次進行MD5算法處理而生成。在本發(fā)明的另外的實施方式中,所述應(yīng)用服務(wù)器200還包括:信息恢復(fù)單元206,用于在接收用戶通過客戶端瀏覽器100發(fā)送的請求訪問和使用受保護的資源的請求消息時能夠從用戶的Cookie的認證信息中讀取用戶訪問另一應(yīng)用服務(wù)器的Ticket信息,并根據(jù)Ticket和Cookie的認證信息判斷和恢復(fù)部分用戶信息以實現(xiàn)用戶登錄信息的保存。在本發(fā)明的再一個實施方式中,所述應(yīng)用服務(wù)器200還包括跨域共享單元207,所述跨域共享單元207用于實現(xiàn)以下操作:驗證用于來源是否在站點列表內(nèi)、驗證用戶的合法性;用戶通過驗證后,使用公用密鑰加密Cookie后的值作為參數(shù)在用戶登錄之后跳轉(zhuǎn)回來源的應(yīng)用服務(wù)器200;應(yīng)用服務(wù)器200獲取到Cookie的值后調(diào)用單點登錄接口進行解密、驗證。此外,由于Cookie是以純文本方式在瀏覽器保存用戶的信息,那么在客戶端和服務(wù)器端之間進行傳輸則顯然不能進行簡單的文本信息的發(fā)送,如果信息被截取將引起嚴重的后果。在本發(fā)明的其他實施方式中,使用SSL (Secure Socket Layer,安全套接層)的傳輸協(xié)議能保證Cookie在傳輸過程的安全性。根據(jù)上述可知,本發(fā)明實施方式對每個Cookie加上唯一的ID域和時間戳以此來抵御重放攻擊。并且對數(shù)據(jù)庫訪問的不同情景進行條件限制以此來防止可能發(fā)生的頻繁的數(shù)據(jù)庫訪問。此外,對Cookie關(guān)鍵域進行數(shù)據(jù)加密及在數(shù)字簽名中引入IP域以此來防止Cookie消息篡改。通過統(tǒng)一維護可信任站點列表,Web服務(wù)器讀取客戶端Cookie的認證信息和Ticket進行校驗,通過判斷和恢復(fù)用戶的信息完成用戶登錄信息的保存,實現(xiàn)跨域名共享Cookie操作。為了便于理解本發(fā)明的技術(shù)方案的特征和優(yōu)點,下面以中國建設(shè)銀行的善融商務(wù)電子商務(wù)平臺系統(tǒng)為例進行說明,善融商務(wù)電子商務(wù)平臺系統(tǒng)采用F5負載均衡,啟用多組互相獨立的Web/App服務(wù)器處理客戶端請求。用戶可請求多臺服務(wù)器,這多臺服務(wù)器可以是buy.ccb.com中負載均衡的多臺app服務(wù)器,也可以是來自建設(shè)銀行互聯(lián)網(wǎng)站的不同子系統(tǒng),例如mall.ccb.com和ehome.ccb.com。如果沒有統(tǒng)一的策略,開發(fā)人員就要為每個網(wǎng)絡(luò)應(yīng)用重復(fù)實現(xiàn)定制的安全機制。這會導(dǎo)致各種可伸縮性和維護問題。而單點登錄解決方案旨在為安全性和身份驗證提供統(tǒng)一的框架,以減輕用戶、管理員和開發(fā)人員的負擔。因此,善融商務(wù)電子商務(wù)平臺系統(tǒng)采用本發(fā)明技術(shù)方案的一種實施方式如下:Web應(yīng)用中每一個需要安全保護的URL在訪問以前,都需要進行安全檢查,如果發(fā)現(xiàn)沒有登錄(沒有發(fā)現(xiàn)認證之后所帶的Session (即登錄信息)信息和保存于客戶端Cookie的認證信息),就重新定向到登錄窗口進行登錄。登錄成功后,系統(tǒng)會自動設(shè)置對應(yīng)的客戶端Cookie認證信息和Session信息,并且將登錄信息記錄到數(shù)據(jù)庫中。當再訪問這個URL的時候,系統(tǒng)仍然需要進行安全檢查,但是這次系統(tǒng)同時發(fā)現(xiàn)相應(yīng)的客戶端Cookie認證信息或者Session?;谟行ookie認證信息和Session信息就可以直接進行訪問。如果不存在相應(yīng)的Session信息,則檢查客戶端Cookie的認證信息是否有效(因為有可能客戶端Cookie的認證信息已經(jīng)過期了,或者因為斷電而使身份認證服務(wù)重啟使得客戶端Cookie的認證信息無效)。應(yīng)用系統(tǒng)獲得客戶端Cookie的認證信息和用戶請求的IP地址,去數(shù)據(jù)庫服務(wù)器進行驗證,來判斷客戶端的認證信息是否真的有效,以及對應(yīng)的用戶是誰。如果客戶端Cookie的認證信息校驗成功,就允許用戶訪問當前請求的資源。(I)抵御重放攻擊
本實施方式采用Session + Cookie的方式,首先判斷是否存在客戶端Cookie的認證信息,如果存在且與服務(wù)器Session值同時有效,就不需要進行數(shù)據(jù)庫的操作。如果不存在匹配的Session值,則對保存于客戶端Cookie的認證信息值進行校驗和更新數(shù)據(jù)庫OnlineMember對象,并設(shè)置一個有效時間段(本方案設(shè)置為120秒),每次更新數(shù)據(jù)庫的OnlineMember記錄的時候,記錄最后更新時間,并基于該時間生成時間戳,寫入對應(yīng)的客戶端Cookie的認證信息的時間戳域中。當最后更新時間到現(xiàn)在小于超時時間(即當前時間與時間戳的差值未超出有效時間段)的時候,不更新數(shù)據(jù)庫的OnlineMember記錄。同時加入Cookie認證信息的還有ID值,服務(wù)端判斷Cookie認證信息時將驗證時間戳是否重復(fù)和超時(即當前時間與時間戳的差值超出有效時間段)以及ID是否唯一。由于重放的時間戳將相對遠離當前時間戳,如果ID不同或者ID相同但時間戳重復(fù)或超時則判斷其為無效Cookie,以此避免了重放攻擊。( 2 )防止頻繁請求數(shù)據(jù)庫本實施方式在校驗用戶是否已登錄時,首先檢查是否存在保存于客戶端的Cookie的認證信息,如不存在,則不訪問數(shù)據(jù)庫,直接返回失敗結(jié)果;如存在則再與服務(wù)器Session值進行比對,若失敗或判斷為超過有效空閑時間,才訪問數(shù)據(jù)庫進行進一步校驗。一方面,系統(tǒng)對于單機的頻繁請求攻擊,則通過軟件驗證碼和硬件防火強來基本防御。另一方面,對于大規(guī)模攻擊帶來的海量請求,則通過臨時關(guān)閉保存于客戶端Cookie的認證信息校驗功能,關(guān)閉數(shù)據(jù)庫性能消耗。(3)防止Cookie消息篡改為防止Cookie被其他人隨意查看和分析甚至偽造Cookie的認證信息,本實施方式對Cookie中的特定信息進行加密處理。首先為了防止別人偽造Ticket (票據(jù)),在進行Cookie的認證信息校驗的時候,根據(jù)Ticket和IP結(jié)合一起生成OnlineMember字段進行校驗,保證Cookie的認證信息真的有效,以及當前的Cookie的認證信息對應(yīng)的用戶。對每個發(fā)布的Cookie均由發(fā)布者進行數(shù)字簽名,各子系統(tǒng)在使用這些Cookie時,首先驗證數(shù)字簽名的值是否合法,如果數(shù)字簽名值為非法,那么拒絕該Cookie。用戶密碼則采用非對稱md5算法加密,Password字段存儲的是32位加密字符串。該加密字符串通過用戶實際密碼經(jīng)過一次md5之后加上salt值(隨機字符串)再次md5生成,S卩 Password=md5 (md5 (RealPassword).salt)。(4)跨域共享 Cookie為解決跨域共享Cookie問題,首先驗證用戶來源是否在我們的站點列表內(nèi)(如果是則跳過此步),其次驗證用戶合法性,用戶通過驗證后,加密Cookie和公用密鑰后的值將會在用戶登錄之后作為參數(shù)一起跳轉(zhuǎn)回來來源的應(yīng)用系統(tǒng),應(yīng)用系統(tǒng)獲取到Cookie值后調(diào)用SSO接口進行解密、驗證等工作。當瀏覽器訪問了頁面I (此時用戶進行第一次登入操作)時,Web服務(wù)器(即應(yīng)用服務(wù)器)設(shè)置了 Session信息和Cookie的認證信息,并將Ticket (同第一次登入時的Sessionid)、Cookie信息和頁面I 一起返回給瀏覽器,瀏覽器接收到Ticket和Cookie的認證信息之后,就會保存起來,在它訪問頁面2 (可能與頁面I不在同一臺服務(wù)器上)的時候會把這個Ticket和保存于Cookie的認證信息也帶上,Web服務(wù)器接到請求時也能從Cookie的認證信息中讀取Ticket等信息,根據(jù)Ticket和保存于Cookie的認證信息判斷和恢復(fù)一些用戶的信息(如果此服務(wù)器未存在此客戶對應(yīng)的Session,則與數(shù)據(jù)庫中的用戶認證信息進行校驗,若校驗成功則新建一個Session,其中保存用戶第一次登入系統(tǒng)時的Sessionid即Ticket)??梢岳脭?shù)據(jù)庫信息和保存于客戶端Cookie的認證信息來完成用戶登錄信息(Session)的保存,之后將瀏覽器中的Cookie認證信息和Ticket結(jié)合起來,完成跨域SSO的功能。以上從后臺處理(對用戶而言是透明的)描述了本發(fā)明的技術(shù)方案,下面從前端操作描述本發(fā)明的技術(shù)方案。作為非限制性實施例,登錄、注銷等功能均以API (應(yīng)用程序編程接口)形式呈現(xiàn),接受被授權(quán)的應(yīng)用系統(tǒng)(即應(yīng)用服務(wù)器上的系統(tǒng))的請求并且返回相應(yīng)的可擴展標記語言(XML)或者Json (—種輕量級的數(shù)據(jù)交換格式)結(jié)果。各個應(yīng)用系統(tǒng)均有自己的登陸和注冊頁面,適用于同步不得不使用自己用戶功能的已經(jīng)成型的應(yīng)用系統(tǒng)。在本發(fā)明實施方式中,前臺管理模塊的主要功能模塊如下:(I)登錄模塊實現(xiàn)用戶的登錄功能。請求用戶輸入用戶名和密碼,根據(jù)用戶名和密碼判斷用戶是否存在,如果不存在,提示錯誤信息。如果存在,把登錄信息記錄到客戶端Cookie的認證信息和服務(wù)器Session,并把校驗成功信息寫入數(shù)據(jù)庫,跳轉(zhuǎn)到傳入的統(tǒng)一資源定位符(url)頁面。創(chuàng)建的客戶端Cookie及Session的認證信息。(2)注冊模塊實現(xiàn)用戶的注冊功能。用戶進入注冊頁面,輸入帳號、密碼、密碼確認、驗證碼等信息并提交。系統(tǒng)檢查輸入的帳號是否已經(jīng)存在,如果存在,提示錯誤信息并返回登錄頁面。如果帳號不存在,將注冊信息寫入數(shù)據(jù)表中,并將用戶信息記錄寫入Session和創(chuàng)建對應(yīng)的Cookie的認證信息,同時數(shù)據(jù)庫中記錄OnlineMember數(shù)據(jù)。(3)會話同步模塊實現(xiàn)會話信息在不同服務(wù)器之間的同步。應(yīng)用系統(tǒng)在接收到請求的時候,先去查找客戶端是否存在期望的Cookie的認證信息。如果存在,且與服務(wù)器Session信息同時有效,則繼續(xù)往下執(zhí)行(根據(jù)Session信息中保存的最后更新時間,檢查是否需要更新數(shù)據(jù)庫的OnlineMember記錄)。如果不存在對應(yīng)的Session信息但是存在Cookie的認證信息,則調(diào)用getOnlineMember (Ticket, ip)去校驗這個Cookie的認證信息的有效性。如果無效(不存在期望的OnlineMember或者已經(jīng)過期),刪除對應(yīng)的Cookie的認證信息。如果沒有過期,就更新對應(yīng)的Cookie的認證信息、倉Il建Session對象(并設(shè)置其Ticket值與保存于客戶端Cookie的認證信息中的Ticket值一致)和更新數(shù)據(jù)庫的OnlineMember記錄。(4)注銷模塊實現(xiàn)用戶注銷的功能,根據(jù)Cookie的認證信息中保存的Ticket,刪除數(shù)據(jù)庫中的OnlineMember記錄。同時刪除相應(yīng)的Cookie的認證信息和本服務(wù)器Session信息。(5)找回密碼模塊用戶忘記密碼后,通過此項功能,發(fā)送加密后的url字符串到用戶郵件。用戶通過點擊該url,實現(xiàn)用戶密碼的修改。以上通過從后臺處理和前端操作兩個方面對本發(fā)明的技術(shù)方案進行了詳細描述,本領(lǐng)域技術(shù)人員應(yīng)當理解,上述的各個實施方式僅僅是示例性的,而非限制性的。本領(lǐng)域技術(shù)人員可以根據(jù)本發(fā)明權(quán)利要求書的教導(dǎo)對上述實施方式進行修改、變換、等同替換,但是,按照這種方式修改、變換和等同替換的技術(shù)方案也落入本發(fā)明權(quán)利要求限定的保護范圍。并且,通過上述的描述可知,本發(fā)明的優(yōu)勢和有益效果如下:在Cookie中加入時間戳域和ID域以抵制重放攻擊;增加Cookie校驗時訪問數(shù)據(jù)庫的條件以防止頻繁數(shù)據(jù)庫訪問;將Ticket和IP結(jié)合的數(shù)字簽名及使用md5算法加密以避免Cookie被篡改;利用可信站點列表及Session生成機制實現(xiàn)跨域共享Cookie。通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件結(jié)合硬件平臺的方式來實現(xiàn),當然也可以全部通過硬件來實施?;谶@樣的理解,本發(fā)明的技術(shù)方案對背景技術(shù)做出貢獻的全部或者部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例或者實施例的某些部分所述的方法。
權(quán)利要求
1.一種基于Cookie的單點登錄方法,其特征在于,所述方法包括: A、應(yīng)用服務(wù)器接收用戶通過客戶端瀏覽器發(fā)送的請求訪問和使用受保護的資源的請求消息; B、檢查客戶端瀏覽器上是否存在該用戶的已經(jīng)創(chuàng)建好的Cookie,如果不存在,則直接返回失敗結(jié)果并進入步驟C,否則進入步驟F ; 其中,所述Cookie包含:認證信息值、表示該Cookie的產(chǎn)生時間的時間戳、以及ID值; C、所述應(yīng)用服務(wù)器將所述客戶端瀏覽器重定向到登錄服務(wù)器進行登錄操作; D、所述登錄服務(wù)器在用戶登錄成功后產(chǎn)生有效的Cookie,并將登錄信息記錄到數(shù)據(jù)庫中; E、所述登錄服務(wù)器將產(chǎn)生的有效的Cookie發(fā)送給所述客戶端瀏覽器,并將所述客戶端瀏覽器重定向到所述應(yīng)用服務(wù)器,轉(zhuǎn)到步驟B; F、對該用戶的Cookie進行驗證,并且在驗證通過的條件下向該用戶提供所請求的資源; 其中,在步驟F中對該用戶的Cookie進行驗證包括: 判斷該用戶的Cookie 的認證信息值與服務(wù)器登錄信息值是否匹配,驗證該用戶的Cookie是否同時滿足下述條件:該Cookie的ID值唯一、該Cookie的時間戳未重復(fù)、當前時間與該Cookie的時間戳的差值未超出該Cookie的有效時間段。
2.如權(quán)利要求1所述的單點登錄方法,其特征在于,在步驟F中對該用戶的Cookie進行驗證還包括: 當用戶的Cookie的認證信息值與服務(wù)器登錄信息值不匹配時,判斷當前時間與該用戶的Cookie的時間戳的差值是否超出該Cookie的有效時間段; 當當前時間與該用戶的Cookie的時間戳的差值超出該Cookie的有效時間段時,對該用戶的Cookie的認證信息值進行校驗和更新數(shù)據(jù)庫的在線成員OnlineMember記錄,重新設(shè)置有效時間段,并基于更新時間生成時間戳,并用生成的時間戳替換該用戶的Cookie的先前的時間戳; 當當前時間與該用戶的Cookie的時間戳的差值未超出該Cookie的有效時間段時,不更新數(shù)據(jù)庫的OnlineMember記錄。
3.如權(quán)利要求2所述的單點登錄方法,其特征在于,對所述用戶的Cookie的認證信息值進行校驗包括: 根據(jù)票據(jù)Ticket和IP地址結(jié)合一起生成OnlineMember去校驗所述用戶的Cookie的有效性。
4.如權(quán)利要求3所述的單點登錄方法,其特征在于,所述方法還包括: 所述登錄服務(wù)器對產(chǎn)生的Cookie進行數(shù)字簽名,所述應(yīng)用服務(wù)器使用Cookie時驗證數(shù)字簽名的值是否合法,如果數(shù)字簽名的值不合法,則拒絕該Cookie。
5.如權(quán)利要求4所述的單點登錄方法,其特征在于,所述方法還包括采用非對稱MD5算法對用戶密碼進行加密,并將得到的加密字符串存儲在密碼Password字段。
6.如權(quán)利要求5所述的單點登錄方法,其特征在于,所述加密字符串是通過將用戶的實際密碼經(jīng)過一次MD5算法處理后加上隨機字符串再次進行MD5算法處理而生成。
7.如權(quán)利要求1所述的單點登錄方法,其特征在于,所述方法還包括:所述應(yīng)用服務(wù)器在接收用戶通過客戶端瀏覽器發(fā)送的請求訪問和使用受保護的資源的請求消息時能夠從用戶的Cookie的認證信息中讀取用戶訪問另一應(yīng)用服務(wù)器的Ticket信息,并根據(jù)Ticket和Cookie的認證信息判斷和恢復(fù)部分用戶信息以實現(xiàn)用戶登錄信息的保存。
8.如權(quán)利要求1所述的單點登錄方法,其特征在于,所述方法還包括: 在步驟A之前,驗證用于來源是否在站點列表內(nèi)、驗證用戶的合法性; 用戶通過驗證后,使用公用密鑰加密Cookie后的值作為參數(shù)在用戶登錄之后跳轉(zhuǎn)回來源的應(yīng)用服務(wù)器; 應(yīng)用服務(wù)器獲取到Cookie的值后調(diào)用單點登錄接口進行解密、驗證。
9.一種能夠?qū)崿F(xiàn)基于Cookie的單點登錄的應(yīng)用服務(wù)器,其特征在于,所述應(yīng)用服務(wù)器包括: 接收單元,用于收用戶通過客戶端瀏覽器發(fā)送的請求訪問和使用受保護的資源的請求消息; 檢查單元,用于檢查客戶端瀏覽器上是否存在該用戶的已經(jīng)創(chuàng)建好的Cookie,所述Cookie包含:認證信息值、表示該Cookie的產(chǎn)生時間的時間戳、以及ID值; 重定向單元,用于在所述檢查單元檢查出客戶端瀏覽器上不存在該用戶的已經(jīng)創(chuàng)建好的Cookie時將客戶端瀏覽器重定 向到登錄服務(wù)器進行登錄操作; 驗證單元,用于在所述檢查單元檢查出客戶端瀏覽器上存在該用戶的已經(jīng)創(chuàng)建好的Cookie時對該用戶的Cookie進行驗證; 其中,所述對該用戶的Cookie進行驗證包括: 判斷該用戶的Cookie的認證信息值與服務(wù)器登錄信息值是否匹配,驗證該用戶的Cookie是否同時滿足下述條件:該Cookie的ID值唯一、該Cookie的時間戳未重復(fù)、當前時間與該Cookie的時間戳的差值未超出該Cookie的有效時間段。
10.如權(quán)利要求9所述的應(yīng)用服務(wù)器,其特征在于,所述驗證單元還用于: 當用戶的Cookie的認證信息值與服務(wù)器登錄信息值不匹配時,判斷當前時間與該用戶的Cookie的時間戳的差值是否超出該Cookie的有效時間段; 當當前時間與該用戶的Cookie的時間戳的差值超出該Cookie的有效時間段時,對該用戶的Cookie的認證信息值進行校驗和更新數(shù)據(jù)庫的在線成員OnlineMember記錄,重新設(shè)置有效時間段,并基于更新時間生成時間戳,并用生成的時間戳替換該用戶的Cookie的先前的時間戳; 當當前時間與該用戶的Cookie的時間戳的差值未超出該Cookie的有效時間段時,不更新數(shù)據(jù)庫的OnlineMember記錄。
11.如權(quán)利要求10所述的應(yīng)用服務(wù)器,其特征在于,對所述用戶的Cookie的認證信息值進行校驗包括: 根據(jù)票據(jù)Ticket和IP地址結(jié)合一起生成OnlineMember去校驗所述用戶的Cookie的有效性。
12.如權(quán)利要求9所述的應(yīng)用服務(wù)器,其特征在于,所述應(yīng)用服務(wù)器還包括: 數(shù)字簽名驗證單元,用于驗證所述登錄服務(wù)器對Cookie進行數(shù)字簽名的值是否合法并且在不合法的情形下拒絕該Cookie。
13.如權(quán)利要求9所述的應(yīng)用服務(wù)器,其特征在于,所述應(yīng)用服務(wù)器還包括: 信息恢復(fù)單元,用于在接收用戶通過客戶端瀏覽器發(fā)送的請求訪問和使用受保護的資源的請求消息時能夠從用戶的Cookie的認證信息中讀取用戶訪問另一應(yīng)用服務(wù)器的Ticket信息,并根據(jù)Ticket和Cookie的認證信息判斷和恢復(fù)部分用戶信息以實現(xiàn)用戶登錄信息的保存。
14.如權(quán)利要求9所述的應(yīng)用服務(wù)器,其特征在于,所述應(yīng)用服務(wù)器還包括跨域共享單元,所述跨域共享單元用于實現(xiàn)以下操作: 驗證用于來源是否在站點列表內(nèi)、驗證用戶的合法性; 用戶通過驗證后,使用公用密鑰加密Cookie后的值作為參數(shù)在用戶登錄之后跳轉(zhuǎn)回來源的應(yīng)用服務(wù)器; 應(yīng)用服務(wù)器獲取到Cookie的值后調(diào)用單點登錄接口進行解密、驗證。
15.一種能夠?qū)崿F(xiàn)基于Cookie的單點登錄的系統(tǒng),其特征在于,所述系統(tǒng)包括客戶端瀏覽器、如權(quán)利要求9至14任意一項所述的應(yīng)用服務(wù)器和登錄服務(wù)器,其中,所述登錄服務(wù)器用于在用戶登錄成功后產(chǎn)生有效的Cookie,將登錄信息記錄到數(shù)據(jù)庫中,將產(chǎn)生的有效的Cookie發(fā)送給所述 客戶端瀏覽器,并將所述客戶端瀏覽器重定向到所述應(yīng)用服務(wù)器。
全文摘要
本發(fā)明公開了一種基于Cookie的單點登錄方法、系統(tǒng)及其應(yīng)用服務(wù)器,通過下述操作解決重放攻擊和頻繁訪問數(shù)據(jù)庫的技術(shù)問題A、應(yīng)用服務(wù)器接收客戶端瀏覽器發(fā)送的請求消息;B、檢查客戶端瀏覽器上是否存在用戶的Cookie,若不存在,則直接返回失敗結(jié)果并進入步驟C,否則進入步驟F;C、將客戶端瀏覽器重定向到登錄服務(wù)器進行登錄操作;D、登錄服務(wù)器在用戶登錄成功后產(chǎn)生有效的Cookie;E、將產(chǎn)生的有效的Cookie發(fā)送給客戶端瀏覽器,并重定向到應(yīng)用服務(wù)器,轉(zhuǎn)到步驟B;F、對用戶的Cookie進行驗證,包括判斷用戶的Cookie的認證信息值與服務(wù)器Session值是否匹配,Cookie的ID值是否唯一、Cookie的時間戳是否重復(fù)、是否超時,并且在通過驗證的條件下向該用戶提供所請求的資源。
文檔編號H04L29/06GK103179134SQ201310137258
公開日2013年6月26日 申請日期2013年4月19日 優(yōu)先權(quán)日2013年4月19日
發(fā)明者王進, 肖群, 周振, 黎民, 羅世容, 何小鋒, 郭友德, 蔣祁效, 陳紅淇 申請人:中國建設(shè)銀行股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
榆社县| 孝义市| 宜丰县| 朝阳市| 阿拉善右旗| 安平县| 汝南县| 泰来县| 壤塘县| 昌平区| 扬州市| 屯留县| 綦江县| 营口市| 长葛市| 皋兰县| 青田县| 抚州市| 文昌市| 沙湾县| 西城区| 商南县| 当涂县| 甘孜县| 十堰市| 永福县| 宜昌市| 绍兴县| 榆中县| 宝丰县| 兰西县| 札达县| 惠来县| 汕尾市| 无棣县| 陵川县| 盈江县| 平南县| 谢通门县| 尼木县| 应城市|