基于Cookie的單點(diǎn)登錄輕量級(jí)實(shí)現(xiàn)方法
【專(zhuān)利摘要】本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,請(qǐng)求保護(hù)一種基于Cookie的單點(diǎn)登錄方法,用戶(hù)在系統(tǒng)內(nèi)的其中任意一個(gè)應(yīng)用中登錄后在多個(gè)應(yīng)用間進(jìn)行無(wú)縫切換。當(dāng)用戶(hù)在系統(tǒng)內(nèi)應(yīng)用間進(jìn)行切換時(shí),即當(dāng)用戶(hù)瀏覽器攜帶Cookie重定向到要切換的目標(biāo)Web應(yīng)用時(shí),目標(biāo)Web應(yīng)用單元的LoginFilter從Cookie中讀取信任憑證并攜帶信任憑證向認(rèn)證服務(wù)器請(qǐng)求有效性檢驗(yàn);認(rèn)證服務(wù)系統(tǒng)檢驗(yàn)后返回用戶(hù)的登錄信息,LoginFileter根據(jù)返回信息完成用戶(hù)在當(dāng)前應(yīng)用的登錄授權(quán)設(shè)置。本發(fā)明提出了一種輕量級(jí)的單點(diǎn)登錄解決方案,以信任憑據(jù)共享為核心來(lái)完成單點(diǎn)登錄功能,具有穩(wěn)定、便捷、安全、易于擴(kuò)展等優(yōu)點(diǎn)。
【專(zhuān)利說(shuō)明】基于Cookie的單點(diǎn)登錄輕量級(jí)實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)技術(shù)。具體涉及一種在各個(gè)Web應(yīng)用系統(tǒng)之間快捷的單點(diǎn)登錄 方法。
【背景技術(shù)】
[0002] 企業(yè)等機(jī)構(gòu)的內(nèi)部服務(wù)器上通常需要部署多個(gè)Web應(yīng)用。這些Web應(yīng)用一般都是 在不同時(shí)期由不同的人員開(kāi)發(fā),大多使用著獨(dú)立的安全認(rèn)證機(jī)制,導(dǎo)致用戶(hù)常常需要在各 個(gè)應(yīng)用系統(tǒng)之間切換時(shí)需要多次登錄,帶來(lái)了不少麻煩和安全隱患。
[0003] 帶來(lái)麻煩和安全隱患的主要原因是口令的記憶和管理。傳統(tǒng)的認(rèn)證系統(tǒng)都是基于 用戶(hù)名口令認(rèn)證方式,而用戶(hù)為了簡(jiǎn)便,一般都采用相同的口令,甚至使用相同的用戶(hù)名和 密碼。一旦其中有個(gè)別系統(tǒng)的用戶(hù)賬戶(hù)被不法分子截獲,有可能在多個(gè)系統(tǒng)中造成連鎖危 害。同時(shí),隨著系統(tǒng)的增多,出錯(cuò)的可能性就會(huì)增加,受到非法截獲和破壞的可能性也會(huì) 增大。在開(kāi)發(fā)方面,軟件設(shè)計(jì)人員也不得不在創(chuàng)建一個(gè)新的應(yīng)用時(shí)為其創(chuàng)建新的登錄系統(tǒng), 造成了資源浪費(fèi)。
[0004] 為了解決上述問(wèn)題,一種名為單點(diǎn)登錄(Single Sign-on, SS0)的概念被提出。它 的提出是企業(yè)信息化不斷深化以及網(wǎng)絡(luò)應(yīng)用不斷推廣的必然結(jié)果。所謂單點(diǎn)登錄,簡(jiǎn)單地 說(shuō),就是用戶(hù)在一個(gè)登錄點(diǎn)進(jìn)行身份驗(yàn)證后,便可以根據(jù)該身份對(duì)一組與該登錄點(diǎn)相關(guān)的 應(yīng)用進(jìn)行訪問(wèn)。SS0方便用戶(hù)訪問(wèn)多個(gè)系統(tǒng),用戶(hù)只需進(jìn)行一次登錄操作,就可以在多個(gè) Web應(yīng)用系統(tǒng)間自由切換,不必重復(fù)輸入用戶(hù)名和密碼來(lái)確定身份。SS0技術(shù)將原來(lái)分散 的用戶(hù)管理集中起來(lái),各個(gè)系統(tǒng)通過(guò)將同一使用者在當(dāng)前系統(tǒng)使用的賬戶(hù)與其他系統(tǒng)的賬 戶(hù)建立聯(lián)系進(jìn)行用戶(hù)的身份認(rèn)證。實(shí)現(xiàn)SS0的典型模型有經(jīng)紀(jì)人模型、代理模型、代理和經(jīng) 紀(jì)人模型、網(wǎng)關(guān)模型和令牌模型。
[0005] 具體的解決方案和應(yīng)用產(chǎn)品有微軟的passport、IBM的Web Sphere等。盡管上述 SS0產(chǎn)品能夠較好地實(shí)現(xiàn)單點(diǎn)登錄功能,然而這些方案和產(chǎn)品有著各自的弱點(diǎn),最明顯的 就是它們大都比較復(fù)雜且缺乏靈活性,在項(xiàng)目實(shí)踐中很難快速實(shí)施。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明針對(duì)現(xiàn)有技術(shù)的上述缺陷,在分析研究了上述一些SS0方案的基礎(chǔ)上,提 出了一種輕量級(jí)的單點(diǎn)登錄解決方案,在采用小型文本數(shù)據(jù)Cookie(某些網(wǎng)站為了辨別用 戶(hù)身份而儲(chǔ)存在用戶(hù)本地終端上的小型文本數(shù)據(jù)(通常經(jīng)過(guò)加密))的基礎(chǔ)上結(jié)合信任憑 據(jù),以信任憑據(jù)共享為核心來(lái)完成單點(diǎn)登錄功能,具有穩(wěn)定、便捷、安全、易于擴(kuò)展等優(yōu)點(diǎn)。
[0007] 本發(fā)明解決上述技術(shù)問(wèn)題的技術(shù)方案是,提出一種基于Cookie的單點(diǎn)登錄及系 統(tǒng)切換方法。用戶(hù)在一個(gè)應(yīng)用中請(qǐng)求登錄,登錄后可在系統(tǒng)內(nèi)應(yīng)用間進(jìn)行無(wú)縫切換,用戶(hù) 在系統(tǒng)內(nèi)任一應(yīng)用中的登錄注銷(xiāo)等操作對(duì)于系統(tǒng)內(nèi)其他應(yīng)用可產(chǎn)生一樣的登錄注銷(xiāo)等效 果。所述系統(tǒng)內(nèi)應(yīng)用間進(jìn)行切換具體包括,用戶(hù)瀏覽器攜帶Cookie重定向到要切換的目 標(biāo)應(yīng)用,目標(biāo)應(yīng)用單元的LoginFilter從Cookie中讀取信任憑證,攜帶信任憑證向認(rèn)證服 務(wù)器請(qǐng)求有效性檢驗(yàn),認(rèn)證服務(wù)系統(tǒng)將有效性檢驗(yàn)結(jié)果發(fā)回LoginFilter,如校驗(yàn)失敗返回 到SS0系統(tǒng)重新填寫(xiě)登錄賬戶(hù)信息;如果認(rèn)證服務(wù)器校驗(yàn)信任憑據(jù)成功,認(rèn)證服務(wù)系統(tǒng)給 LoginFilter返回用戶(hù)的登錄信息,LoginFilter根據(jù)返回的信息完成用戶(hù)在當(dāng)前應(yīng)用的 登錄授權(quán)設(shè)置。
[0008] 當(dāng)用戶(hù)首次在一個(gè)應(yīng)用中請(qǐng)求登錄時(shí),系統(tǒng)執(zhí)行如下步驟:由Web應(yīng)用的 LoginFilter轉(zhuǎn)發(fā)登錄請(qǐng)求給認(rèn)證服務(wù)系統(tǒng),用戶(hù)瀏覽器重定向到認(rèn)證服務(wù)系統(tǒng);用戶(hù) 向SS0認(rèn)證服務(wù)系統(tǒng)提交登錄賬戶(hù)及口令;如果賬戶(hù)口令驗(yàn)證成功,認(rèn)證服務(wù)系統(tǒng)將保 存用戶(hù)的登錄信息并設(shè)置用戶(hù)的全局登錄狀態(tài);認(rèn)證服務(wù)系統(tǒng)將與用戶(hù)對(duì)應(yīng)的信任憑 證寫(xiě)入Cookie中;用戶(hù)瀏覽器攜帶Cookie重定向到此前用戶(hù)訪問(wèn)的應(yīng)用;Web應(yīng)用的 LoginFilter從Cookie中讀取信任憑證,然后攜帶信任憑證向認(rèn)證服務(wù)器請(qǐng)求有效性 檢驗(yàn),有效性檢驗(yàn)結(jié)果由認(rèn)證服務(wù)系統(tǒng)發(fā)回LoginFilter ;如果信任憑據(jù)校驗(yàn)成功,貝1J認(rèn) 證服務(wù)系統(tǒng)給LoginFilter返回用戶(hù)的登錄信息,LoginFilter根據(jù)返回的信息完成用 戶(hù)在當(dāng)前應(yīng)用的登錄授權(quán)設(shè)置。當(dāng)用戶(hù)在某個(gè)應(yīng)用中提交注銷(xiāo)請(qǐng)求時(shí),將由當(dāng)前應(yīng)用的 LogoutFilter接收并轉(zhuǎn)發(fā)至SS0服務(wù)器,注銷(xiāo)全局狀態(tài)后,再下發(fā)注銷(xiāo)應(yīng)用Session信息的 請(qǐng)求,應(yīng)用中的登出過(guò)濾器LogoutFilter注銷(xiāo)當(dāng)前應(yīng)用信息。用戶(hù)在某個(gè)應(yīng)用中提交注銷(xiāo) 請(qǐng)求;當(dāng)前應(yīng)用中的LogoutFilter接收請(qǐng)求并轉(zhuǎn)發(fā)到認(rèn)證服務(wù)系統(tǒng);認(rèn)證服務(wù)系統(tǒng)注銷(xiāo)當(dāng) 前用戶(hù)的登錄狀態(tài),刪除憑證信息;認(rèn)證服務(wù)系統(tǒng)依次向所有應(yīng)用的LogoutFilter發(fā)送注 銷(xiāo)請(qǐng)求;每個(gè)LogoutFilter接收到認(rèn)證服務(wù)器的注銷(xiāo)請(qǐng)求后,進(jìn)行所在應(yīng)用內(nèi)部的用戶(hù)登 錄信息注銷(xiāo)操作。
[0009] 本發(fā)明提出了一種輕量級(jí)的單點(diǎn)登錄解決方法,此方法具有較好的可實(shí)施性和操 作性,較高的可管理性及安全性,易用及可擴(kuò)展等特點(diǎn),使所有網(wǎng)絡(luò)Web應(yīng)用資源之間進(jìn)行 無(wú)縫訪問(wèn),從而提高網(wǎng)絡(luò)用戶(hù)的工作效率,降低網(wǎng)絡(luò)操作費(fèi)用,減少管理人員的維護(hù)工作 復(fù)雜性。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0010] 圖1SS0系統(tǒng)框架示意圖;
[0011] 圖2系統(tǒng)內(nèi)第一次登錄示意流程圖;
[0012] 圖3登錄后系統(tǒng)內(nèi)應(yīng)用間切換流程示意圖;
[0013] 圖4用戶(hù)登錄后在系統(tǒng)內(nèi)注銷(xiāo)流程示意圖。
【具體實(shí)施方式】
[0014] 在SS0的框架中主要涉及兩個(gè)部分,一個(gè)是網(wǎng)站的服務(wù)器,一個(gè)是用戶(hù)的瀏覽器。
[0015] 在網(wǎng)站的服務(wù)器中,部署著具有不同功能的Web應(yīng)用,包括管理用戶(hù)登錄認(rèn)證授 權(quán)的認(rèn)證服務(wù)系統(tǒng)和其他需要SS0功能支持的目標(biāo)應(yīng)用。認(rèn)證服務(wù)系統(tǒng)是SS0的調(diào)控中 心,用戶(hù)向服務(wù)器發(fā)送的所有請(qǐng)求都先經(jīng)過(guò)應(yīng)用的Filter, Filter包括LoginFilter和 LogoutFilter。當(dāng)用戶(hù)發(fā)送的是與登錄認(rèn)證相關(guān)的請(qǐng)求時(shí),Filter會(huì)將請(qǐng)求轉(zhuǎn)發(fā)給認(rèn)證服 務(wù)系統(tǒng),認(rèn)證服務(wù)系統(tǒng)接收到請(qǐng)求后進(jìn)行相應(yīng)處理,包括保存用戶(hù)的登錄信息和設(shè)置用戶(hù) 的全局登錄狀態(tài)等。如若是其他的服務(wù)請(qǐng)求,則Filter不會(huì)對(duì)該請(qǐng)求進(jìn)行干預(yù)。
[0016] 認(rèn)證服務(wù)系統(tǒng)運(yùn)作的核心思想與Liberty協(xié)議類(lèi)似,是身份聯(lián)合(Identity Federation)。通過(guò)制定一種規(guī)則將同一個(gè)用戶(hù)在不同應(yīng)用系統(tǒng)下的賬戶(hù)進(jìn)行聯(lián)系,例如統(tǒng) 一賬戶(hù)名和口令,對(duì)各個(gè)系統(tǒng)的賬戶(hù)進(jìn)行綁定等。本文中的系統(tǒng)采取同一用戶(hù)口令的方式, 用戶(hù)的注冊(cè)、登錄以及注銷(xiāo)請(qǐng)求都由認(rèn)證服務(wù)系統(tǒng)來(lái)完成。
[0017] 表1. 2. 1認(rèn)證用戶(hù)表主要字段信息
【權(quán)利要求】
1. 基于Cookie的單點(diǎn)登錄及系統(tǒng)切換方法,該方法包括:用戶(hù)在一個(gè)應(yīng)用中請(qǐng)求登 錄,登錄后在系統(tǒng)內(nèi)應(yīng)用間進(jìn)行無(wú)縫切換,用戶(hù)在系統(tǒng)內(nèi)任一應(yīng)用中的登錄注銷(xiāo)對(duì)于其他 應(yīng)用產(chǎn)生同樣的登錄注銷(xiāo)操作,其特征在于,所述系統(tǒng)內(nèi)應(yīng)用間進(jìn)行切換具體包括,用戶(hù)瀏 覽器攜帶Cookie重定向到此前用戶(hù)訪問(wèn)的應(yīng)用;Web應(yīng)用單元的LoginFilter從Cookie中 讀取信任憑證,攜帶信任憑證向認(rèn)證服務(wù)器請(qǐng)求有效性檢驗(yàn),認(rèn)證服務(wù)系統(tǒng)將有效性檢驗(yàn) 結(jié)果發(fā)回LoginFilter,如校驗(yàn)失敗回到SSO系統(tǒng)重新填寫(xiě)登錄賬戶(hù)信息;如果信任憑據(jù)校 驗(yàn)成功,認(rèn)證服務(wù)系統(tǒng)給LoginFilter返回用戶(hù)的登錄信息,LoginFilter根據(jù)返回的信息 完成用戶(hù)在當(dāng)前應(yīng)用的登錄授權(quán)設(shè)置。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)用戶(hù)首次在一個(gè)應(yīng)用中請(qǐng)求登錄時(shí),包 括步驟:由Web應(yīng)用的LoginFi Iter轉(zhuǎn)發(fā)登錄請(qǐng)求給認(rèn)證服務(wù)系統(tǒng),用戶(hù)瀏覽器重定向到認(rèn) 證服務(wù)系統(tǒng);用戶(hù)向SSO認(rèn)證服務(wù)系統(tǒng)提交登錄賬戶(hù)及口令;如果賬戶(hù)口令驗(yàn)證成功,認(rèn)證 服務(wù)系統(tǒng)將保存用戶(hù)的登錄信息并設(shè)置用戶(hù)的全局登錄狀態(tài);認(rèn)證服務(wù)系統(tǒng)將與用戶(hù)對(duì)應(yīng) 的信任憑證寫(xiě)入Cookie中;用戶(hù)瀏覽器攜帶Cookie重定向到此前用戶(hù)訪問(wèn)的應(yīng)用;Web應(yīng) 用的LoginFiIter從Cookie中讀取信任憑證,然后攜帶信任憑證向認(rèn)證服務(wù)器請(qǐng)求有效性 檢驗(yàn),有效性檢驗(yàn)結(jié)果由認(rèn)證服務(wù)系統(tǒng)發(fā)回LoginFilter ;如果信任憑據(jù)校驗(yàn)成功,則認(rèn)證 服務(wù)系統(tǒng)給LoginFilter返回用戶(hù)的登錄信息,LoginFilter根據(jù)返回的信息完成用戶(hù)在 當(dāng)前應(yīng)用的登錄授權(quán)設(shè)置。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)用戶(hù)在某個(gè)應(yīng)用中提交注銷(xiāo)請(qǐng)求時(shí),將 由當(dāng)前應(yīng)用的Log0UtFilter接收并轉(zhuǎn)發(fā)至SSO服務(wù)器,注銷(xiāo)全局狀態(tài)后,再下發(fā)注銷(xiāo)應(yīng)用 Session信息的請(qǐng)求,應(yīng)用中的LogoutFilter注銷(xiāo)當(dāng)前應(yīng)用下信息。
4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,用戶(hù)在某個(gè)應(yīng)用中提交注銷(xiāo)請(qǐng)求;當(dāng)前應(yīng) 用中的Log0UtFilter接收請(qǐng)求并轉(zhuǎn)發(fā)到認(rèn)證服務(wù)系統(tǒng);認(rèn)證服務(wù)系統(tǒng)注銷(xiāo)當(dāng)前用戶(hù)的登 錄狀態(tài),刪除憑證信息;認(rèn)證服務(wù)系統(tǒng)依次向所有應(yīng)用的Log 0UtFilter發(fā)送注銷(xiāo)請(qǐng)求;每 個(gè)Log0UtFilter接收到認(rèn)證服務(wù)器的注銷(xiāo)請(qǐng)求后,進(jìn)行所在應(yīng)用內(nèi)部的用戶(hù)登錄信息注 銷(xiāo)操作。
【文檔編號(hào)】H04L29/06GK104320423SQ201410668869
【公開(kāi)日】2015年1月28日 申請(qǐng)日期:2014年11月19日 優(yōu)先權(quán)日:2014年11月19日
【發(fā)明者】白明澤, 舒坤賢, 李家彪, 冉奇, 歐陽(yáng)超, 郭嘉蒙, 趙杰 申請(qǐng)人:重慶郵電大學(xué)