鄒曉輝
(吉林師范大學(xué)計算機學(xué)院,吉林四平 134000)
單點登錄(Single Sign On,SSO)是目前比較流行的企業(yè)業(yè)務(wù)整合解決方案之一,在多個應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應(yīng)用系統(tǒng),單點登錄是“身份認(rèn)證”的整合,用戶可對授權(quán)的各類信息資源進(jìn)行無縫訪問,從而提高用戶的工作效率,減少操作時間,并提高信息系統(tǒng)整體的安全性。
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,不同企業(yè)和組織間的合作越來越密切,在電子政務(wù)領(lǐng)域和企業(yè)信息化建設(shè)中多種異構(gòu)系統(tǒng)應(yīng)用的整合方面,單點登錄發(fā)揮著越來越重要的作用。文中就分布式可共享的Web服務(wù)和資源的安全互訪問提出了一種基于數(shù)字證書的跨域單點登錄解決方案,該方案采用統(tǒng)一的用戶管理方法、統(tǒng)一的用戶登錄界面,使用PKI證書進(jìn)行身份認(rèn)證[1-3],采用集中的權(quán)限控制,使用戶和分布式Web應(yīng)用建立對應(yīng)的訪問權(quán)限,用戶只要經(jīng)過一次身份認(rèn)證就可以訪問授權(quán)范圍內(nèi)的各種應(yīng)用和資源。
通過HT TP重定向(HT TP Redirection)和Cookie在Web應(yīng)用間傳遞票據(jù)(Token)的方法[4]來實現(xiàn)單點登錄,Token是一個記錄用戶登錄狀態(tài)的唯一標(biāo)識或憑證。SSO需要在客戶機瀏覽器長久保留登錄狀態(tài)的票據(jù),由于HT TP是一種無狀態(tài)的協(xié)議,常用而有效的方法是將生成的票據(jù) Token存儲在客戶機瀏覽器的 Cookie里,當(dāng)客戶機在一定的時間間隔內(nèi)訪問各服務(wù)器時,就可以從Cookie里提取票據(jù)進(jìn)行認(rèn)證,不必再重新登錄。分布的各個Web資源服務(wù)器擁有由權(quán)威認(rèn)證機構(gòu)簽發(fā)的基于X.509標(biāo)準(zhǔn)的證書,用戶通過單向服務(wù)器端認(rèn)證的SSL連接來與Web資源服務(wù)器交換信息。
一個簡單的SSO模式如圖1所示。
圖1 基于HTTP重定向和共享Token的SSO模式
若用戶訪問應(yīng)用系統(tǒng)a的時候是第一次訪問該系統(tǒng),則客戶機瀏覽器會跳轉(zhuǎn)到登錄頁面,用戶提交數(shù)字證書后,被引導(dǎo)到身份認(rèn)證系統(tǒng)中進(jìn)行登錄。身份認(rèn)證系統(tǒng)將用戶提交的信息和用戶信息庫相比較,對用戶進(jìn)行身份認(rèn)證。用戶信息庫是用戶憑證存儲單元[5],包括數(shù)字證書 DN、時間戳Timestamp、有效期、用戶ID和被授權(quán)訪問的Web資源服務(wù)器編號等信息。認(rèn)證成功后,認(rèn)證系統(tǒng)生成統(tǒng)一的認(rèn)證標(biāo)識Token(DN+Timestamp),并返還給用戶。認(rèn)證系統(tǒng)還可以對 Token進(jìn)行校驗,判斷其有效性。此外,身份認(rèn)證系統(tǒng)還負(fù)責(zé)用戶的授權(quán)控制和注銷。為了實現(xiàn)單點登錄,Token有效期設(shè)定為1 h。用戶再訪問別的應(yīng)用時就會將這個Token帶上,作為自己認(rèn)證的憑據(jù),應(yīng)用系統(tǒng)接收到請求后把Token送到身份認(rèn)證系統(tǒng)進(jìn)行校驗,檢查Token的合法性,如果通過校驗,用戶不用再次登錄就可以直接訪問其它應(yīng)用系統(tǒng)。
通信過程中,使用單向服務(wù)器端認(rèn)證的SSL保密連接來交換信息。
1)客戶機瀏覽器向應(yīng)用服務(wù)器發(fā)送HT TP連接請求,提交Cookie。
2)應(yīng)用服務(wù)器接收到請求信息后,檢查Cookie中是否有登錄票據(jù) T oken;如果有 Token而且Token未過期,則轉(zhuǎn)4)。否則,重定向到身份認(rèn)證服務(wù)器,檢查是否認(rèn)證服務(wù)器存儲有 Token且Token未過期(曾經(jīng)通過其它應(yīng)用服務(wù)器登錄);若無Token或Token已過期,如過期則先刪除已存儲的Token信息,轉(zhuǎn)向認(rèn)證頁面;否則轉(zhuǎn)5)。
3)客戶機瀏覽器訪問認(rèn)證頁面,提交數(shù)字證書,身份認(rèn)證服務(wù)器檢查該證書是否合法、驗證用戶身份,若認(rèn)證成功,則為用戶生成登錄票據(jù)Token,然后將Token(DN+Timestamp)返回給應(yīng)用服務(wù)器;應(yīng)用服務(wù)器使用Token構(gòu)造Cookie,然后把Cookie返回給客戶機瀏覽器;客戶機瀏覽器本地保存Cookie,并重定向訪問應(yīng)用服務(wù)器,提交Cookie。
4)應(yīng)用服務(wù)器從Cookie中提取Token,然后向身份認(rèn)證服務(wù)器提供Token;身份認(rèn)證服務(wù)器進(jìn)行身份有效校驗,校驗不成功,則轉(zhuǎn)3)。
5)身份認(rèn)證服務(wù)器向應(yīng)用服務(wù)器返回用戶ID和被授權(quán)訪問的Web資源服務(wù)器編號;應(yīng)用服務(wù)器對用戶及其訪問權(quán)限進(jìn)行驗證;若驗證通過,則客戶機瀏覽器可以訪問該應(yīng)用服務(wù)器的授權(quán)應(yīng)用和資源。
登錄過程如圖2所示。
圖2 基于數(shù)字證書的單點登錄流程
對于跨域訪問多個應(yīng)用的情況,每個域內(nèi)都有域自身的【身份認(rèn)證服務(wù)器】,client登錄和驗證過程與域內(nèi)相同,區(qū)別僅在于各個域的【身份認(rèn)證服務(wù)器】之間存在Token信息同步機制。
各域身份認(rèn)證服務(wù)器之間的Token信息同步機制:
1)設(shè)置一個主(master)身份認(rèn)證服務(wù)器,其它身份認(rèn)證服務(wù)器為從(slave)身份認(rèn)證服務(wù)器。
2)【slave身份認(rèn)證服務(wù)器】定期輪詢本域內(nèi)的Token信息,將未過期且未同步的 Token批量發(fā)給【master身份認(rèn)證服務(wù)器】,如發(fā)送成功,則master給出應(yīng)答,slave對已成功發(fā)送的Token信息設(shè)置已同步標(biāo)記。
3)【slave身份認(rèn)證服務(wù)器】定期從【master身份認(rèn)證服務(wù)器】獲取其它域身份認(rèn)證服務(wù)器未過期的Token信息,因而可以實現(xiàn)跨多個域的單點登錄。
4)身份認(rèn)證服務(wù)器間通訊使用SSL通道進(jìn)行保護。
跨域單點登錄模型如圖3所示。
身份認(rèn)證整合模塊[6]使用戶登錄界面統(tǒng)一化,用戶使用數(shù)字證書進(jìn)行單點登錄。用戶的信息存儲在LDAP目錄服務(wù)器[7]中,LDAP中的信息目錄結(jié)構(gòu)類似于UNIX文件系統(tǒng),有很好的擴充性,而且查詢速度比關(guān)系型數(shù)據(jù)庫快很多。記錄用戶票據(jù)的部分信息通過OSCache[8]的緩存方案進(jìn)行存取,進(jìn)一步提高了訪問速度。
圖3 跨域單點登錄模型
提出了基于數(shù)字證書的跨域單點登錄解決方案,基于J2EE架構(gòu)[9-10]實現(xiàn)了這種跨域單點登錄的原型系統(tǒng)。該認(rèn)證方案適用于企業(yè)內(nèi)部、政府部門內(nèi)部的信息系統(tǒng)整合和基于Web的應(yīng)用系統(tǒng)集成,適用于跨企業(yè)、跨地域、跨部門的電子商務(wù)和電子政務(wù)系統(tǒng)等。
[1] 福羅贊(Forouzan,B A).密碼學(xué)與網(wǎng)絡(luò)安全[M].馬振晗,賈軍保,譯.北京:清華大學(xué)出版社,2009.
[2] 李曉航,王宏霞,張文芳.認(rèn)證理論及應(yīng)用[M].北京:清華大學(xué)出版社,2009.
[3] 馬臣云,王彥.精通PKI網(wǎng)絡(luò)安全認(rèn)證技術(shù)與編程實現(xiàn)[M].北京:人民郵電出版社,2008.
[4] 劉潤達(dá),諸云強,宋佳,等.一種簡單跨域單點登錄系統(tǒng)的實現(xiàn)[J].計算機應(yīng)用,2007,27(2):288-291.
[5] 楊輝,虞淑瑤,南凱.網(wǎng)格環(huán)境中身份認(rèn)證的研究與應(yīng)用[J].計算機應(yīng)用研究,2006,23(2):92-95.
[6] 王薇,張紅旗,張斌,等.基于PKI/PMI的多域單點登錄研究[J].微計算機信息,2006,22(7/3):150-152.
[7] 譚立球,費耀平,李建華.企業(yè)信息門戶單點登錄系統(tǒng)的實現(xiàn)[J].計算機工程,2005,31(17):102-104.
[8] 佚名.OSCache簡介[EB/OL].(2008-04-22)[2010-09-05].http://blog.csdn.net/lwj3025/archive/ 2313780.aspx.
[9] 劉京華.Java Web整合開發(fā)王者歸來(JSP+Servlet +Struts+Hibernate+Spring)[M].北京:清華大學(xué)出版社,2010.
[10] 哈諾德.Java網(wǎng)絡(luò)編程[M].3版.朱濤江,林劍,譯.北京:中國電力出版社,2005.