本發(fā)明涉及Web系統(tǒng)身份鑒別技術(shù)領(lǐng)域,特別是一種基于單點(diǎn)登錄的Web系統(tǒng)登錄約束方法。
背景技術(shù):
隨著企業(yè)業(yè)務(wù)的擴(kuò)大和業(yè)務(wù)的復(fù)雜性增強(qiáng),企業(yè)所需要的應(yīng)用系統(tǒng)不斷增多,企業(yè)員工在完成日常工作時(shí),也需要使用不同的應(yīng)用系統(tǒng)來完成。但每個(gè)應(yīng)用系統(tǒng)都有各自的認(rèn)證方式;系統(tǒng)管理員不僅要分別維護(hù)每個(gè)應(yīng)用系統(tǒng)安全策略的完整性,而且還要維護(hù)每個(gè)應(yīng)用系統(tǒng)各自的用戶認(rèn)證數(shù)據(jù)。當(dāng)公司有招聘新員工,需要將其信息添加到應(yīng)用系統(tǒng)時(shí),系統(tǒng)管理員就需要為新入職的員工分別在每一個(gè)應(yīng)用系統(tǒng)中添加所需要的認(rèn)證信息。單點(diǎn)登錄為滿足上述要求應(yīng)運(yùn)而生,允許用戶完成一次認(rèn)證授權(quán)服務(wù)以后,便可訪問系統(tǒng)中有權(quán)訪問的不同應(yīng)用,而不需要訪問每個(gè)應(yīng)用系統(tǒng)時(shí),都重新輸入賬戶和密碼。
傳統(tǒng)的單點(diǎn)登錄模型由三個(gè)組成部分:支持身份認(rèn)證服務(wù)的客戶端、認(rèn)證服務(wù)器、支持身份認(rèn)證服務(wù)的應(yīng)用服務(wù)器。其中,所有的身份認(rèn)證都是由認(rèn)證服務(wù)器來完成的。該模型的工作流程是:所有的客戶端在訪問應(yīng)用系統(tǒng)之前在認(rèn)證服務(wù)器端進(jìn)行身份認(rèn)證,為了提供系統(tǒng)的安全性,可采用相互認(rèn)證的方式。當(dāng)用戶通過身份認(rèn)證后,認(rèn)證服務(wù)器返回給客戶端一個(gè)電子身份標(biāo)識(shí),用戶通過該電子身份標(biāo)識(shí)去訪問其他應(yīng)用系統(tǒng),從而實(shí)現(xiàn)單點(diǎn)登錄。
針對(duì)不同的安全要求,不同的應(yīng)用系統(tǒng)需要配置不同的登錄約束規(guī)則,比如某個(gè)應(yīng)用系統(tǒng)只允許某類員工在某段時(shí)間內(nèi)使用。這時(shí)候傳統(tǒng)的單點(diǎn)登錄系統(tǒng)就無法針對(duì)不同的應(yīng)用系統(tǒng)進(jìn)行單獨(dú)的靈活的配置。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明解決的技術(shù)問題在于一種基于單點(diǎn)登錄的Web系統(tǒng)登錄約束方法;實(shí)現(xiàn)不同應(yīng)用系統(tǒng)的單獨(dú)約束。
本發(fā)明解決上述技術(shù)問題的技術(shù)方案是:
所述的方法包括以下步驟:
步驟1:用戶瀏覽器向Web應(yīng)用系統(tǒng)發(fā)出訪問請(qǐng)求;
步驟2:Web應(yīng)用系統(tǒng)檢查用戶瀏覽器是否存在服務(wù)憑證,如果存在,那么轉(zhuǎn)到步驟9,否則,轉(zhuǎn)到步驟3;
步驟3:把訪問請(qǐng)求重定向到單點(diǎn)登錄服務(wù)器;
步驟4:?jiǎn)吸c(diǎn)登錄服務(wù)器檢查用戶瀏覽器是否存在授權(quán)憑證,如果存在,那么轉(zhuǎn)到步驟5,否則,轉(zhuǎn)到步驟8;
步驟5:?jiǎn)吸c(diǎn)登錄服務(wù)器驗(yàn)證授權(quán)憑證的有效性,如果有效,轉(zhuǎn)到步驟6,否則,轉(zhuǎn)到步驟8;
步驟6:?jiǎn)吸c(diǎn)登錄服務(wù)器驗(yàn)證用戶對(duì)Web應(yīng)用系統(tǒng)的登錄約束規(guī)則是否有效,如果有效,轉(zhuǎn)到步驟7,否則,轉(zhuǎn)到步驟8;
步驟7:?jiǎn)吸c(diǎn)登錄服務(wù)器將會(huì)給用戶頒發(fā)一個(gè)服務(wù)憑證并保存在用戶瀏覽器的Cookie中,將瀏覽器重定向到用戶請(qǐng)求訪問的Web應(yīng)用系統(tǒng)頁面上,轉(zhuǎn)到步驟1;
步驟8:重定向到單點(diǎn)登錄服務(wù)器的登錄頁面,輸入登錄驗(yàn)證信息,如果驗(yàn)證信息正確,那么生成授權(quán)憑證并發(fā)送給用戶瀏覽器,用戶瀏覽器把授權(quán)憑證保存在Cookie中,轉(zhuǎn)到步驟5,否則,繼續(xù)執(zhí)行步驟8;
步驟9:允許用戶瀏覽器訪問Web應(yīng)用系統(tǒng)。
所述服務(wù)憑證指的是單點(diǎn)登錄服務(wù)器驗(yàn)證過授權(quán)憑證有效以后,頒發(fā)給用戶用于訪問其所申請(qǐng)Web應(yīng)用系統(tǒng)的憑證,當(dāng)用戶申請(qǐng)?jiān)L問其他Web應(yīng)用系統(tǒng),單點(diǎn)登錄服務(wù)器會(huì)根據(jù)授權(quán)憑證給用戶重新頒發(fā)服務(wù)憑證,服務(wù)憑證主要包括以下信息:服務(wù)憑證-{授權(quán)憑證號(hào),服務(wù)名},授權(quán)憑證代表某個(gè)用戶在單點(diǎn)登錄服務(wù)器上的合法身份,服務(wù)名是用戶所申請(qǐng)?jiān)L問的Web應(yīng)用系統(tǒng)的名稱,可由Web應(yīng)用系統(tǒng)的URL表示。
所述授權(quán)憑證指的是單點(diǎn)登錄服務(wù)器對(duì)用戶申請(qǐng)的確認(rèn)憑證,在用戶名密碼等用戶身份鑒別信息通過驗(yàn)證以后,單點(diǎn)登錄服務(wù)器即向用戶頒發(fā)授權(quán)憑證,授權(quán)憑證具有獨(dú)一無二性,它與用戶之間進(jìn)行了綁定,防止非法竊取者私自使用,授權(quán)憑證主要包括以下信息:授權(quán)憑證-{授權(quán)憑證號(hào):用戶名:地址:服務(wù)名:有效期:時(shí)間戳},其中授權(quán)憑證號(hào)用來唯一標(biāo)識(shí)一個(gè)客戶機(jī),防止憑證被非法竊取后在其他客戶機(jī)上使用,它與用戶是一對(duì)一的關(guān)系。
所述重定向指的是將Web請(qǐng)求從當(dāng)前頁面重新定位到新頁面,實(shí)現(xiàn)頁面間跳轉(zhuǎn)并把對(duì)當(dāng)前頁面請(qǐng)求的參數(shù)傳到新頁面中,具體過程如下:
1)用戶瀏覽器向Web服務(wù)器1中的page1頁面發(fā)送第一次請(qǐng)求,收到請(qǐng)求后,僅向用戶瀏覽器返回一個(gè)重定向響應(yīng)頭信息,該響應(yīng)信息頭中不包含任何需要顯示的數(shù)據(jù)信息,只包含需要重定向到另一個(gè)Web服務(wù)器2頁面page2的地址信息;此時(shí)用戶瀏覽器與Web服務(wù)器1之間完成第一次請(qǐng)求與第一次響應(yīng)任務(wù);
2)用戶瀏覽器收到Web服務(wù)器1的page1頁面的重定向響應(yīng)后,將自動(dòng)向響應(yīng)頭信息中指定的URL地址發(fā)出新的請(qǐng)求信息;Web服務(wù)器2中的page2頁面收到新的請(qǐng)求信息后,將運(yùn)行結(jié)果反饋給用戶瀏覽器,此時(shí)它與Web服務(wù)器2之間完成第二次請(qǐng)求與第二次響應(yīng)任務(wù)。
所述登錄約束規(guī)則是用戶對(duì)Web應(yīng)用系統(tǒng)會(huì)話建立的一種限制條件,登錄約束規(guī)則主要包括以下信息:登錄約束規(guī)則-{登錄時(shí)間:用戶名:角色名:IP地址}。
本發(fā)明的方法能產(chǎn)生如下的有益效果:
1、本發(fā)明能針對(duì)不同的Web應(yīng)用系統(tǒng)進(jìn)行單獨(dú)的靈活的登錄約束規(guī)則的配置,解決了傳統(tǒng)單點(diǎn)登錄系統(tǒng)無法克服的問題;
2、本發(fā)明方法能實(shí)現(xiàn)應(yīng)用系統(tǒng)與身份鑒別系統(tǒng)的解耦,業(yè)務(wù)系統(tǒng)只需要關(guān)心其業(yè)務(wù),不需要關(guān)心復(fù)雜的登錄約束規(guī)則。
附圖說明
下面結(jié)合附圖對(duì)本發(fā)明進(jìn)一步說明:
圖1為本發(fā)明的流程圖;
圖2為具體實(shí)施方式的體系架構(gòu)圖。
具體實(shí)施方式
如圖1所示,本發(fā)明的方法包括如下步驟:
步驟1:用戶瀏覽器向Web應(yīng)用系統(tǒng)發(fā)出訪問請(qǐng)求;
步驟2:Web應(yīng)用系統(tǒng)檢查用戶瀏覽器是否存在服務(wù)憑證,如果存在,那么轉(zhuǎn)到步驟9,否則,轉(zhuǎn)到步驟3;
步驟3:把訪問請(qǐng)求重定向到單點(diǎn)登錄服務(wù)器;
步驟4:?jiǎn)吸c(diǎn)登錄服務(wù)器檢查用戶瀏覽器是否存在授權(quán)憑證,如果存在,那么轉(zhuǎn)到步驟5,否則,轉(zhuǎn)到步驟8;
步驟5:?jiǎn)吸c(diǎn)登錄服務(wù)器驗(yàn)證授權(quán)憑證的有效性,如果有效,轉(zhuǎn)到步驟6,否則,轉(zhuǎn)到步驟8;
步驟6:?jiǎn)吸c(diǎn)登錄服務(wù)器驗(yàn)證用戶對(duì)Web應(yīng)用系統(tǒng)的登錄約束規(guī)則是否有效,如果有效,轉(zhuǎn)到步驟7,否則,轉(zhuǎn)到步驟8;
步驟7:?jiǎn)吸c(diǎn)登錄服務(wù)器將會(huì)給用戶頒發(fā)一個(gè)服務(wù)憑證并保存在用戶瀏覽器的Cookie中,將瀏覽器重定向到用戶請(qǐng)求訪問的Web應(yīng)用系統(tǒng)頁面上,轉(zhuǎn)到步驟1;
步驟8:重定向到單點(diǎn)登錄服務(wù)器的登錄頁面,輸入登錄驗(yàn)證信息,如果驗(yàn)證信息正確,那么生成授權(quán)憑證并發(fā)送給用戶瀏覽器,用戶瀏覽器把授權(quán)憑證保存在Cookie中,轉(zhuǎn)到步驟5,否則,繼續(xù)執(zhí)行步驟8;
步驟9:允許用戶瀏覽器訪問Web應(yīng)用系統(tǒng)。
服務(wù)憑證指的是單點(diǎn)登錄服務(wù)器驗(yàn)證過授權(quán)憑證有效以后,頒發(fā)給用戶用于訪問其所申請(qǐng)Web應(yīng)用系統(tǒng)的憑證,當(dāng)用戶申請(qǐng)?jiān)L問其他Web應(yīng)用系統(tǒng),單點(diǎn)登錄服務(wù)器會(huì)根據(jù)授權(quán)憑證給用戶重新頒發(fā)服務(wù)憑證。服務(wù)憑證主要包括以下信息:服務(wù)憑證-{授權(quán)憑證號(hào),服務(wù)名},授權(quán)憑證代表某個(gè)用戶在單點(diǎn)登錄服務(wù)器上的合法身份,服務(wù)名是用戶所申請(qǐng)?jiān)L問的Web應(yīng)用系統(tǒng)的名稱,可由Web應(yīng)用系統(tǒng)的URL表示。
授權(quán)憑證指的是單點(diǎn)登錄服務(wù)器對(duì)用戶申請(qǐng)的確認(rèn)憑證,在用戶身份鑒別信息(如用戶名密碼等)通過驗(yàn)證以后,單點(diǎn)登錄服務(wù)器即向用戶頒發(fā)授權(quán)憑證,授權(quán)憑證具有獨(dú)一無二性,它與用戶之間進(jìn)行了綁定,防止非法竊取者私自使用。授權(quán)憑證主要包括以下信息:授權(quán)憑證-{授權(quán)憑證號(hào):用戶名:地址:服務(wù)名:有效期:時(shí)間戳},其中授權(quán)憑證號(hào)用來唯一標(biāo)識(shí)一個(gè)客戶機(jī),防止憑證被非法竊取后在其他客戶機(jī)上使用,它與用戶是一對(duì)一的關(guān)系。
所述重定向指的是將Web請(qǐng)求從當(dāng)前頁面重新定位到新頁面的技術(shù),利用這種技術(shù)可以實(shí)現(xiàn)頁面間跳轉(zhuǎn)并把對(duì)當(dāng)前頁面請(qǐng)求的參數(shù)傳到到新頁面中。具體過程如下:
1)用戶瀏覽器向Web服務(wù)器1中的page1頁面發(fā)送第一次請(qǐng)求,它收到請(qǐng)求后,僅向用戶瀏覽器返回一個(gè)重定向響應(yīng)頭信息,該響應(yīng)信息頭中不包含任何需要顯示的數(shù)據(jù)信息,只包含需要重定向到另一個(gè)Web服務(wù)器2頁面page2的地址信息。此時(shí)用戶瀏覽器與Web服務(wù)器1之間完成第一次請(qǐng)求與第一次響應(yīng)任務(wù);
2)用戶瀏覽器收到Web服務(wù)器1的page1頁面的重定向響應(yīng)后,講自動(dòng)向響應(yīng)頭信息中指定的URL地址發(fā)出新的請(qǐng)求信息;Web服務(wù)器2中的page2頁面收到新的請(qǐng)求信息后,將運(yùn)行結(jié)果反饋給用戶瀏覽器,此時(shí)它與Web服務(wù)器2之間完成第二次請(qǐng)求與第二次響應(yīng)任務(wù)。
所述登錄約束規(guī)則是用戶對(duì)Web應(yīng)用系統(tǒng)會(huì)話建立的一種限制條件,登錄約束規(guī)則主要包括以下信息:登錄約束規(guī)則-{登錄時(shí)間:用戶名:角色名:IP地址}。
下面以CAS作為單點(diǎn)登錄服務(wù)器為例,介紹使用Java EE框架實(shí)現(xiàn)一種基于單點(diǎn)登錄的Web系統(tǒng)登錄約束方法。
本實(shí)例的單點(diǎn)登錄系統(tǒng)采用一種輕量級(jí)Java EE的多層平臺(tái)體系架構(gòu),即基于WebWork+Spring+Hibernate的多層架構(gòu)體系。該單點(diǎn)登錄系統(tǒng)運(yùn)用了表示層框架WebWork、輕量級(jí)Java EE框架Spring和持久性框架Hibernate等應(yīng)用框架,并且結(jié)合基于CAS的Web應(yīng)用登錄約束系統(tǒng)的體系結(jié)構(gòu)進(jìn)行搭建。
圖2是基于CAS的Web應(yīng)用登錄約束系統(tǒng)體系架構(gòu)圖,自上而下分別為基于Web的用戶界面、表示層、業(yè)務(wù)邏輯層、單點(diǎn)登錄約束服務(wù)層、數(shù)據(jù)訪問層和數(shù)據(jù)存儲(chǔ)層。
1)表示層
表示層采用的是WebWork框架,為JSP頁面和Action之間的數(shù)據(jù)提供良好的接口,每一個(gè)Action對(duì)應(yīng)唯一一個(gè)Java類,執(zhí)行相應(yīng)操作,Action接口是頁面與業(yè)務(wù)邏輯間的映射,可以控制業(yè)務(wù)流程,而result的定義將通知WebWork下一步應(yīng)該執(zhí)行的操作。FilterDispatcher控制器對(duì)業(yè)務(wù)邏輯層的數(shù)據(jù)進(jìn)行處理,根據(jù)處理結(jié)果提取需要的模型數(shù)據(jù),從而轉(zhuǎn)移到用戶設(shè)定的視圖進(jìn)行表示,同時(shí)必要的攔截器和UI驗(yàn)證,可以更好地保證數(shù)據(jù)的流轉(zhuǎn)與權(quán)限的控制。
2)業(yè)務(wù)邏輯層
業(yè)務(wù)邏輯層使用的是Spring框架,通過service.xml配置文件,Spring容器自動(dòng)生成Bean實(shí)例,供action中的業(yè)務(wù)邏輯使用;同時(shí)通過調(diào)用Dao接口提供的方法,向表示層使用的模型層填充數(shù)據(jù)。Spring框架為表示層提供了交互的接口,并為其提供使用的數(shù)據(jù)填充,另外,Spring的依賴注入機(jī)制,可以在運(yùn)行期為組件配置所需資源,從而在相當(dāng)程度上降低了組件之間的耦合,實(shí)現(xiàn)了組件真正意義上的即插即用,是開發(fā)人員可以更自然地傾向于使用接口來定義不同層次之間的關(guān)聯(lián)關(guān)系。
3)單點(diǎn)登錄服務(wù)層
單點(diǎn)登錄服務(wù)層需要調(diào)用業(yè)務(wù)邏輯層提供的單點(diǎn)登錄業(yè)務(wù)接口,該接口中實(shí)現(xiàn)了單點(diǎn)登錄所需要的認(rèn)證服務(wù)、憑證頒發(fā)服務(wù)、憑證管理服務(wù)和登錄約束服務(wù),由此完成用戶在各個(gè)系統(tǒng)之間的自由登錄。
4)數(shù)據(jù)訪問層
持久層是Web應(yīng)用中直接與數(shù)據(jù)庫(kù)打交道的邏輯單元,實(shí)現(xiàn)了O/R mapping,將面向?qū)ο蟮牟僮鬓D(zhuǎn)化為面向關(guān)系的操作。它使用Hibernate作為持久層架構(gòu)能完全屏蔽具體的數(shù)據(jù)庫(kù)實(shí)現(xiàn)。通過Hibernate提供的API和HQL查詢接口是操作數(shù)據(jù)更有效、便捷。同時(shí),它向下屏蔽了不同數(shù)據(jù)庫(kù)的差異,向上為業(yè)務(wù)邏輯層提供需要的訪問接口。
以上本發(fā)明所述單點(diǎn)登錄指的是一種用戶只需要登錄一次就可以訪問具有權(quán)限的相互之間有某種特定關(guān)系的所有應(yīng)用系統(tǒng)的企業(yè)業(yè)務(wù)整合解決方案;在登錄過以后單點(diǎn)登錄系統(tǒng)會(huì)自動(dòng)記錄用戶的信息,而不需要在此登錄就能識(shí)別出用戶的身份。這樣,通過一次登錄就可以在不需要重復(fù)輸入認(rèn)證信息的情況下訪問多個(gè)應(yīng)用系統(tǒng)。
所述Cookie是一種通用的機(jī)制,通過這種機(jī)制Web服務(wù)器端的連接就可以保存或者獲取客戶端的信息。本發(fā)明的Cookie保存的是由Web服務(wù)器端頒發(fā)的授權(quán)憑證及服務(wù)憑證,這些信息保存在客戶端。Cookie將伴隨著用戶的請(qǐng)求和頁面在Web服務(wù)器和瀏覽器之間傳遞。用戶每次訪問站點(diǎn)時(shí),Web應(yīng)用系統(tǒng)都可以獲取Cookie包含的信息,從而達(dá)到登錄會(huì)話保持的目的。