于光許
(河南經(jīng)貿(mào)職業(yè)學(xué)院,河南 鄭州 450046)
統(tǒng)一認(rèn)證(Unified Identity Authorization),是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。統(tǒng)一認(rèn)證是在多個(gè)應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問(wèn)所有相互信任的應(yīng)用系統(tǒng)。通過(guò)統(tǒng)一認(rèn)證,用戶能夠?qū)崿F(xiàn)“一次登錄,多方認(rèn)證”[1]。目前實(shí)現(xiàn)統(tǒng)一認(rèn)證的產(chǎn)品和解決方案有很多,比較常見(jiàn)的有微軟的 Passport[2]和SUN 支持的 Liberty Alliance Project[3]等。本文設(shè) 計(jì)了 一個(gè)輕量級(jí)的基于 Cookie[4]的統(tǒng)一認(rèn)證系統(tǒng)。
Passport統(tǒng)一認(rèn)證技術(shù)采用集中認(rèn)證和分布授權(quán)的方式,它的工作原理如下:當(dāng)用戶通過(guò)瀏覽器訪問(wèn)一個(gè)網(wǎng)站A的時(shí)候,如果A網(wǎng)站需要驗(yàn)證用戶的身份,就把該用戶的瀏覽器重定向到 Passport服務(wù)器,Passport服務(wù)器對(duì)用戶進(jìn)行身份驗(yàn)證后在客戶端的瀏覽器設(shè)置.passport.com 域的 Cookie,該 Cookie含有 PUID(Passport U-nique ID)信息,使用 Passport加密密鑰加密,然后 Passport服務(wù)器在返回給瀏覽器的指向參與Passport的網(wǎng)站的重定向URL中包含用戶的信息。A網(wǎng)站在收到Passport服務(wù)器傳來(lái)的請(qǐng)求后,解密出該信息,并把用戶的身份驗(yàn)證信息保存在客戶端瀏覽器的 Cookie里[5]。
該方案較好地實(shí)現(xiàn)了統(tǒng)一認(rèn)證,但是它也存在安全性問(wèn)題。因?yàn)镻assport登錄驗(yàn)證服務(wù)器和個(gè)人信息服務(wù)器都是微軟的,并且它的技術(shù)細(xì)節(jié)不對(duì)外公開(kāi),導(dǎo)致人們一直懷疑用戶的個(gè)人信息會(huì)被泄露。再加上Passport服務(wù)并不是免費(fèi)的,這都限制了它的進(jìn)一步發(fā)展。
隨著SMAL[6]的廣泛推廣,分布式的身份管理技術(shù)越來(lái)越多地得到專(zhuān)業(yè)人士和機(jī)構(gòu)的認(rèn)可。這種技術(shù)提倡將用戶的認(rèn)證信息存儲(chǔ)在分散的數(shù)據(jù)庫(kù)中,以此來(lái)實(shí)現(xiàn)統(tǒng)一認(rèn)證。
在Liberty中,通過(guò)在Web應(yīng)用間以 HTTP重定向或Cookies方式傳遞用戶票據(jù)來(lái)實(shí)現(xiàn)統(tǒng)一認(rèn)證。
該方案很好地實(shí)現(xiàn)了統(tǒng)一認(rèn)證,安全性也比較高,但是,為了做到無(wú)縫連接,服務(wù)提供商的頁(yè)面中常常會(huì)嵌入身份提供商的登錄表單,并通過(guò)這將用戶的憑證信息返回身份提供商處。在這個(gè)過(guò)程中,用戶把他的身份提供商憑證以明文的形式顯示給服務(wù)提供商,這樣就有可能導(dǎo)致用戶的身份提供商賬戶被泄露。
另外,以上主流統(tǒng)一認(rèn)證方案都存在一個(gè)共性的問(wèn)題,就是部署起來(lái)比較復(fù)雜。
近年來(lái),國(guó)內(nèi)對(duì)統(tǒng)一認(rèn)證也做了許多研究,取得了一些研究成果,并提出了對(duì)應(yīng)的解決方案。文獻(xiàn)[7]中提出了一種基于 Kerberos[8]的統(tǒng)一認(rèn)證系統(tǒng),由于 Kerberos服務(wù)器與用戶共享的服務(wù)器會(huì)話密鑰是用戶的口令,服務(wù)器在響應(yīng)時(shí)不驗(yàn)證用戶的真實(shí)性,而是直接假設(shè)只有合法用戶才擁有該口令,如果攻擊者截獲了響應(yīng)消息,就容易形成密碼攻擊。文獻(xiàn)[9]提出了一個(gè)基于XML密鑰管理規(guī)范和SAML的統(tǒng)一認(rèn)證方案,它使用XML密鑰管理規(guī)范保存用戶信息并驗(yàn)證用戶的登錄,然后利用SAML服務(wù)實(shí)現(xiàn)了統(tǒng)一認(rèn)證功能,該方案注重對(duì)用戶憑證的保護(hù),需要在對(duì)用戶實(shí)施身份認(rèn)證的Web服務(wù)站點(diǎn)中增加額外的特殊服務(wù)。文獻(xiàn)[10]提出的實(shí)現(xiàn)Web服務(wù)的統(tǒng)一認(rèn)證方法基于SAML,在該體系結(jié)構(gòu)中,應(yīng)用站點(diǎn)既充當(dāng)服務(wù)提供者又充當(dāng)身份提供者角色,這將需要對(duì)應(yīng)用站點(diǎn)作出修改。
基于以上原因,本文開(kāi)發(fā)設(shè)計(jì)了一套基于Cookie的輕量級(jí)的統(tǒng)一認(rèn)證系統(tǒng)。本方案以Register服務(wù)器為中心,用戶的注冊(cè)和登錄驗(yàn)證均在該服務(wù)器上實(shí)現(xiàn),然后以Cookie的方式寫(xiě)入到用戶的瀏覽器中。
由于目前大多數(shù)網(wǎng)站需要實(shí)現(xiàn)與用戶的交互功能,實(shí)現(xiàn)以用戶為中心,本文設(shè)計(jì)開(kāi)發(fā)實(shí)現(xiàn)了一套基于Cookie的統(tǒng)一認(rèn)證系統(tǒng)。
該系統(tǒng)的核心是中心認(rèn)證服務(wù)器(Register服務(wù)器),它負(fù)責(zé)完成用戶的身份驗(yàn)證,并負(fù)責(zé)在客戶的瀏覽器中寫(xiě)入Cookie。如圖1所示:
圖1 系統(tǒng)結(jié)構(gòu)圖
圖2 統(tǒng)一認(rèn)證流程圖
當(dāng)一個(gè)用戶通過(guò)瀏覽器訪問(wèn)一個(gè)應(yīng)用系統(tǒng)時(shí),該系統(tǒng)會(huì)先在用戶的瀏覽器中查詢是否存在已經(jīng)驗(yàn)證過(guò)的該用戶的Cookie信息,如果在瀏覽器中查詢到,則顯示該用戶為已登錄,可以使用他的所有功能;反之,若該應(yīng)用系統(tǒng)未查詢到該用戶的Cookie信息,則轉(zhuǎn)到Register服務(wù)器,由 Register服務(wù)器來(lái)驗(yàn)證用戶的合法性;若用戶登錄成功,則由Register服務(wù)器在用戶的瀏覽器中寫(xiě)入Cookie,然后返回該用戶之前訪問(wèn)的頁(yè)面,并由該應(yīng)用服務(wù)器驗(yàn)證Cookie信息。如圖2所示。
應(yīng)用系統(tǒng)和 Register服務(wù)器組成一個(gè)信任域,信任域里的應(yīng)用系統(tǒng)之間是互相信任的,彼此共享Cookie。
由于用戶在登錄系統(tǒng)后,在客戶端的Cookie中存儲(chǔ)有用戶的驗(yàn)證信息,用來(lái)表示該用戶已經(jīng)登錄,當(dāng)用戶從網(wǎng)站注銷(xiāo)的時(shí)候,該網(wǎng)站會(huì)從該用戶的瀏覽器Cookie中刪除掉他的Cookie信息,那么當(dāng)用戶再次請(qǐng)求服務(wù)時(shí),由于沒(méi)有與之對(duì)應(yīng)的Cookie信息,所以需要重新登錄以便獲取所需的Cookie信息。
本文簡(jiǎn)單地描述了統(tǒng)一認(rèn)證的概念,介紹了幾個(gè)主要的統(tǒng)一認(rèn)證技術(shù)。本文介紹了一個(gè)簡(jiǎn)單的統(tǒng)一認(rèn)證技術(shù),實(shí)現(xiàn)了統(tǒng)一認(rèn)證,提高了用戶的體驗(yàn)。但是,該方案也存在著一些問(wèn)題,比如實(shí)施方案簡(jiǎn)單、安全性還需要進(jìn)一步提高等。本文的下一步工作是對(duì)已有的簡(jiǎn)單架構(gòu)進(jìn)行實(shí)現(xiàn),對(duì)在實(shí)際情況中實(shí)現(xiàn)統(tǒng)一認(rèn)證設(shè)計(jì)的更復(fù)雜的問(wèn)題繼續(xù)加以研究。
[1]盧清平,楊柳,許曉東.一個(gè)基于 Yale2CAS的統(tǒng)一認(rèn)證解決方案[J].合肥學(xué)院學(xué)報(bào)(自然科學(xué)版),2005,15(3):37-40.
[2]孟凡榮,程潔,史會(huì)余.單點(diǎn)登錄模型的研究與應(yīng)用[J].微計(jì)算機(jī)信息,2008,(21):164 -165,181.
[3]王新房,刑毅,劉萍萍.Liberty的單一登錄多方認(rèn)證機(jī)制及其安全性分析[J].微電子學(xué)與計(jì)算機(jī),2004,21(10):117-120.
[4]鄧春燕,周治國(guó),李文印,玄光哲.Cookie技術(shù)在幾種語(yǔ)言中的實(shí)現(xiàn)[J].長(zhǎng)春郵電學(xué)院學(xué)報(bào),2001,19(2):45-50.
[5]R.Oppliger.Microsoft.Net Passport:a Security Analysis[J].Computer,2003,36(7):29 - 35.
[6]鐘迅科.基于SAML實(shí)現(xiàn)Web服務(wù)的單點(diǎn)登錄[J].現(xiàn)代計(jì)算機(jī),2004,(4):32-36.
[7]于洪淳,曹作良.基于Cookie的Web服務(wù)統(tǒng)一認(rèn)證系統(tǒng)[J].天津理工大學(xué)學(xué)報(bào),2008,24(4):42 -44.
[8]周倜,王巾盈,李夢(mèng)君,李舟軍.Kerberos協(xié)議版本的分析與比較[J].計(jì)算機(jī)科學(xué),2009,36(2):119-121,128.
[9]韓濤,郭荷清.Web服務(wù)安全模型的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2006,32(10):130 -134.
[10]鐘迅科.基于SAML實(shí)現(xiàn) Web服務(wù)的單點(diǎn)登錄[J].現(xiàn)代計(jì)算機(jī),2004,(4):32-36.