基于cas的級(jí)聯(lián)認(rèn)證方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息技術(shù)領(lǐng)域,具體的說(shuō),是基于CAS的級(jí)聯(lián)認(rèn)證方法。
【背景技術(shù)】
[0002]CAS是主流的SSO開源解決方案,主要實(shí)現(xiàn)基于B/S結(jié)構(gòu)的應(yīng)用系統(tǒng)用戶SS0,交互協(xié)議主要基于http及安全的https。
[0003]傳統(tǒng)的SSO技術(shù)只能支撐用戶在同一個(gè)部署單位內(nèi)的業(yè)務(wù)系統(tǒng)SS0,無(wú)法實(shí)現(xiàn)跨部署單位(域)的SSO。
[0004]原生CAS技術(shù)提供的SSO認(rèn)證機(jī)制如下:
1.由客戶端和服務(wù)端兩部分組成;在應(yīng)用時(shí),客戶端被集成到業(yè)務(wù)系統(tǒng)運(yùn)行時(shí)環(huán)境中(此處的業(yè)務(wù)系統(tǒng)是指需要集成SSO認(rèn)證的系統(tǒng)),服務(wù)端則獨(dú)立部署。
[0005]2.用戶訪問(wèn)業(yè)務(wù)系統(tǒng)時(shí),內(nèi)置的CAS客戶端組件會(huì)攔截用戶請(qǐng)求,并檢查用戶會(huì)話有效性。如果會(huì)話有效,則允許訪問(wèn);如果會(huì)話無(wú)效,則將用戶請(qǐng)求轉(zhuǎn)發(fā)至服務(wù)端,進(jìn)入下一步。
[0006]3.CAS服務(wù)端檢測(cè)用戶客戶端是否存儲(chǔ)了 TGT,如果有則說(shuō)明已經(jīng)登陸過(guò),則自動(dòng)為客戶端生成用于訪問(wèn)業(yè)務(wù)系統(tǒng)使用的ST,并將請(qǐng)求再次轉(zhuǎn)發(fā)到業(yè)務(wù)系統(tǒng)端。業(yè)務(wù)系統(tǒng)根據(jù)第2步的描述再次進(jìn)行ST和會(huì)話校驗(yàn)。但如果檢測(cè)到客戶端沒(méi)有TGT,服務(wù)端將會(huì)展現(xiàn)登陸界面,要求用戶登陸,并進(jìn)入下一步。
[0007]4.用戶輸入登陸認(rèn)證信息并提交,CAS服務(wù)器對(duì)登陸信息進(jìn)行校驗(yàn),校驗(yàn)通過(guò)則為客戶端生成TGT,同時(shí)產(chǎn)生ST,然后將請(qǐng)求轉(zhuǎn)發(fā)到業(yè)務(wù)系統(tǒng)。此時(shí)用戶將成功進(jìn)入系統(tǒng),并建立有效的Sess1n。
[0008]這種機(jī)制只能支持本部署單位(域)范圍內(nèi)的系統(tǒng)單點(diǎn)登陸。如果同一個(gè)用戶在不同單位都具備某套系統(tǒng)的訪問(wèn)權(quán)限,那么該用戶必須分別在不同的單位進(jìn)行一次登陸,用戶體驗(yàn)較差,而在大型集團(tuán)公司,此類應(yīng)用場(chǎng)景十分普遍。
[0009]在大型集團(tuán)公司的應(yīng)用架構(gòu)中,往往存著一些業(yè)務(wù)系統(tǒng)采用分級(jí)/分單位部署,例如總部和各分子公司均單獨(dú)部署。但分子公司與總部業(yè)務(wù)系統(tǒng)又具有系統(tǒng)整合需求,這種系統(tǒng)整合主要采用界面集成的方式,最典型的就是企業(yè)門戶系統(tǒng)。界面的集成,尤其是跨單位、跨域的場(chǎng)景下,就必須依賴具備級(jí)聯(lián)能力的SSO技術(shù)支撐。標(biāo)準(zhǔn)的開源CAS框架,只能做到相同部署單位內(nèi)業(yè)務(wù)系統(tǒng)的用戶單點(diǎn)登陸(SS0),無(wú)法做到跨部署單位的SSO貫穿。這樣的限制,無(wú)法支撐大型集團(tuán)公司的跨單位的應(yīng)用整合,因此必須尋求突破,為了支撐集團(tuán)各單位與總部的系統(tǒng)整合,提升用戶體驗(yàn),必須打破原有的SSO限制,實(shí)現(xiàn)跨部署單位間的單點(diǎn)登陸共享,最終支撐業(yè)務(wù)系統(tǒng)整合。
【發(fā)明內(nèi)容】
[0010]本發(fā)明的目的在于提供基于CAS的級(jí)聯(lián)認(rèn)證方法,在CAS框架基礎(chǔ)之上,優(yōu)化和擴(kuò)展SSO認(rèn)證機(jī)制,打破原有的不能跨部署單位的單點(diǎn)登陸,可以實(shí)現(xiàn)各個(gè)不同域的認(rèn)證服務(wù)器間的認(rèn)證聯(lián)動(dòng),用戶僅需在其中一個(gè)域進(jìn)行一次登陸,就可以安全地訪問(wèn)其它部署單位,在有權(quán)限的業(yè)務(wù)系統(tǒng),無(wú)需二次登陸,支撐了大型集團(tuán)公司的跨單位應(yīng)用整合需求,也提升了用戶的應(yīng)用體驗(yàn)。
[0011]本發(fā)明通過(guò)下述技術(shù)方案實(shí)現(xiàn):基于CAS的級(jí)聯(lián)認(rèn)證方法,用戶在首次登陸時(shí),由各個(gè)跨域的認(rèn)證服務(wù)分別對(duì)用戶進(jìn)行一次認(rèn)證,認(rèn)證成功就為客戶端分配一個(gè)TGT,用戶客戶端只要具備各個(gè)認(rèn)證域的TGT,就可以實(shí)現(xiàn)在不同的部署單位之間跨域訪問(wèn);具體包括以下步驟:
1)在CAS客戶端組件中,新開發(fā)一個(gè)Servlet程序,向請(qǐng)求端返回“目標(biāo)認(rèn)證服務(wù)”地址;
2)在CAS服務(wù)端,新開發(fā)一個(gè)基于http協(xié)議的“握手接口”,接收用戶登陸憑證輸入,生成一個(gè)FT,再以FT為標(biāo)識(shí)將用戶登陸憑證緩存起來(lái),最后向調(diào)用端返回FT字段串;
3)在CAS服務(wù)端處理用戶登陸憑證校驗(yàn)時(shí),若用戶登陸憑證正確,則將用戶登陸憑證緩存起來(lái),生成合法憑證,緩存標(biāo)識(shí)采用當(dāng)前用戶的TGT字段串;
4)新開發(fā)一個(gè)專門用于處理“跨域認(rèn)證”的http控制器程序,名為“目標(biāo)控制器”,請(qǐng)求訪問(wèn)時(shí)要求傳入“目標(biāo)業(yè)務(wù)系統(tǒng)”的訪問(wèn)地址;
5)“目標(biāo)控制器”從用戶瀏覽器中獲取TGT,然后通過(guò)TGT將記錄在緩存中的合法憑證取出;
6)“目標(biāo)控制器”向CAS客戶端組件中新開發(fā)的Servlet程序發(fā)起http請(qǐng)求,獲取到“目標(biāo)業(yè)務(wù)系統(tǒng)”集成的“目標(biāo)認(rèn)證服務(wù)”地址;
7)“目標(biāo)控制器”調(diào)用“握手接口”,在“握手接口”的緩存中臨時(shí)存儲(chǔ)用戶登陸憑證,發(fā)送用戶登陸憑證,并獲得FT;
8)“目標(biāo)控制器”將用戶請(qǐng)求轉(zhuǎn)發(fā)至“目標(biāo)業(yè)務(wù)系統(tǒng)”集成的“目標(biāo)認(rèn)證服務(wù)”,轉(zhuǎn)發(fā)時(shí)將FT作為參數(shù)附帶,用于進(jìn)行登陸過(guò)程;
9)“目標(biāo)認(rèn)證服務(wù)”在處理用戶登陸流程時(shí),從用戶請(qǐng)求的參數(shù)中獲取FT,再根據(jù)FT從“握手接口 ”的緩存中提取用戶登陸憑證,對(duì)用戶登陸憑證進(jìn)行校驗(yàn),續(xù)繼執(zhí)行其它CAS登陸過(guò)程。
[0012]在CAS框架基礎(chǔ)之上,優(yōu)化和擴(kuò)展SSO認(rèn)證機(jī)制,打破原有的不能跨部署單位的單點(diǎn)登陸,可以實(shí)現(xiàn)各個(gè)不同域的認(rèn)證服務(wù)器間的認(rèn)證聯(lián)動(dòng),用戶僅需在其中一個(gè)域進(jìn)行一次登陸,就可以安全地訪問(wèn)其它部署單位,在有權(quán)限的業(yè)務(wù)系統(tǒng),無(wú)需二次登陸,支撐了大型集團(tuán)公司的跨單位應(yīng)用整合需求,也提升了用戶的應(yīng)用體驗(yàn)。
[0013]進(jìn)一步的,為更好的實(shí)現(xiàn)本發(fā)明,在所述步驟8)中,“目標(biāo)控制器”將用戶請(qǐng)求轉(zhuǎn)發(fā)至“目標(biāo)業(yè)務(wù)系統(tǒng)”集成的“目標(biāo)認(rèn)證服務(wù)”時(shí),用戶客戶端收到一個(gè)跳轉(zhuǎn)響應(yīng),跳轉(zhuǎn)地址是“目標(biāo)認(rèn)證服務(wù)”的認(rèn)證地址,向“目標(biāo)認(rèn)證服務(wù)”發(fā)起一個(gè)登陸認(rèn)證請(qǐng)求,“目標(biāo)認(rèn)證服務(wù)”將收到用戶客戶端的“跨域認(rèn)證請(qǐng)求”,在處理“跨域認(rèn)證請(qǐng)求”時(shí),首先從用戶客戶端解析是否具備有效的TGT,如果有效,則為用戶客戶端生成一個(gè)ST,然后將請(qǐng)求轉(zhuǎn)發(fā)“系統(tǒng)訪問(wèn)流程”;如果無(wú)效則返回進(jìn)行步驟9)。
[0014]進(jìn)一步的,為更好的實(shí)現(xiàn)本發(fā)明,在所述步驟9)中,對(duì)用戶登陸憑證進(jìn)行校驗(yàn)包括以下步驟:
9.1)、身份驗(yàn)證成功: 9.1.1)、生成TGT、寫Cookie 跨域認(rèn)證身份”校驗(yàn)成功,進(jìn)入標(biāo)準(zhǔn)的CAS功能流程,即為用戶客戶端生成TGT,并將TGT寫入CAS客戶端Cookie中;
9.1.2)、生成ST、響應(yīng)跳轉(zhuǎn):TGT產(chǎn)生成功后,再根據(jù)TGT為用戶生成ST,然后將用戶請(qǐng)求跳轉(zhuǎn)至“系統(tǒng)訪問(wèn)流程”;
9.2)身份驗(yàn)證無(wú)效則響應(yīng)登陸頁(yè)面:在“跨域認(rèn)證身份”校驗(yàn)失敗的情況下,將返回一個(gè)登陸頁(yè)面給用戶客戶端,要求用戶進(jìn)行登陸。
[0015]進(jìn)一步的,為更好的實(shí)現(xiàn)本發(fā)明,所述“跨域認(rèn)證身份”為“級(jí)聯(lián)認(rèn)證身份”。
[0016]進(jìn)一步的,為更好的實(shí)現(xiàn)本發(fā)明,所述“系統(tǒng)訪問(wèn)流程”包括以下步驟:
(1)訪問(wèn)攔截:由“目標(biāo)業(yè)務(wù)系統(tǒng)”處理,內(nèi)置在“目標(biāo)業(yè)務(wù)系統(tǒng)”中的“目標(biāo)認(rèn)證服務(wù)”的“認(rèn)證客戶端組件”將攔截到用戶訪問(wèn)請(qǐng)求并調(diào)用“會(huì)話/ST校驗(yàn)”來(lái)決定下一步流程;
(2)“會(huì)話/ST校驗(yàn)”:由認(rèn)證客戶端組件檢查“目標(biāo)業(yè)務(wù)系統(tǒng)”中是否具備有效的Sess1n會(huì)話,如果有效,則允許用戶訪問(wèn)系統(tǒng)資源;如果沒(méi)有會(huì)話,則檢查訪問(wèn)請(qǐng)求中是否提供了有效的ST,如果具備有效的ST,則為用戶創(chuàng)建一個(gè)有效的Sess1n,并允許用戶訪問(wèn)系統(tǒng)資源,如果沒(méi)有提供有效的ST,則將請(qǐng)求轉(zhuǎn)發(fā)至步驟8),重新進(jìn)行登陸過(guò)程。
[0017]進(jìn)一步的,為更好的實(shí)現(xiàn)本發(fā)明,所述“目標(biāo)業(yè)務(wù)系統(tǒng)”為“級(jí)聯(lián)目標(biāo)業(yè)務(wù)系統(tǒng)”;所述“目標(biāo)認(rèn)證服務(wù)”為“級(jí)聯(lián)目標(biāo)認(rèn)證服務(wù)”;所述“跨域認(rèn)證”為“級(jí)聯(lián)認(rèn)證”;所述“握手接口 ”為“級(jí)聯(lián)握手接口 ” ;所述“目標(biāo)控制器”為“級(jí)聯(lián)控制器”。
[0018]本發(fā)明與現(xiàn)有技術(shù)相比,具有以下優(yōu)點(diǎn)及有益效果:
(I)本發(fā)明在CAS框架基礎(chǔ)之上,優(yōu)化和擴(kuò)展SSO認(rèn)證機(jī)制,打破原有的不能跨部署單位的單點(diǎn)登陸,可以實(shí)現(xiàn)各個(gè)不同域的認(rèn)證服務(wù)器間的認(rèn)證聯(lián)動(dòng),用戶僅需在其中一個(gè)域進(jìn)行一次登陸,就可以安全地訪問(wèn)其它部署單位,在有權(quán)限的業(yè)務(wù)系統(tǒng),無(wú)需二次登陸,支撐了大型集團(tuán)公司的跨單位應(yīng)用整合需求,也提升了用戶的應(yīng)用體驗(yàn)。
[0019](2)本發(fā)明擴(kuò)展新的處理過(guò)程,與原有的單點(diǎn)登陸機(jī)制有效地結(jié)合,而不破壞原有的流程結(jié)構(gòu),這使得在無(wú)需級(jí)聯(lián)認(rèn)證的應(yīng)用場(chǎng)景中,仍然可以采用原有功能。
[0020](3)本發(fā)明可動(dòng)態(tài)支持任意不同部署域間的級(jí)聯(lián)認(rèn)證服務(wù),而無(wú)需預(yù)先對(duì)系統(tǒng)進(jìn)行配置。
[0021](4)本發(fā)明所述的用戶登陸憑證在本地認(rèn)證服務(wù)和目標(biāo)認(rèn)證服務(wù)中具有一致性。
【附圖說(shuō)明】
[0022]圖1為本發(fā)明所述級(jí)聯(lián)認(rèn)證具體的處理流程圖。
【