
摘 要:本文介紹了單點(diǎn)登錄技術(shù)的基礎(chǔ)理論,分析了三種單點(diǎn)登錄方案,并在基于CAS協(xié)議單點(diǎn)登錄方案基礎(chǔ)上加以改進(jìn),設(shè)計(jì)了符合某信息門(mén)戶(hù)實(shí)際需求的單點(diǎn)登錄模型,該模型實(shí)現(xiàn)了統(tǒng)一用戶(hù)管理,集中認(rèn)證和單點(diǎn)登錄。
關(guān)鍵詞:?jiǎn)吸c(diǎn)登錄;Web應(yīng)用;CAS協(xié)議
0 引言
近年來(lái)隨著企業(yè)信息化建設(shè)的不斷進(jìn)步以及互聯(lián)網(wǎng)技術(shù)的發(fā)展,企業(yè)在不同階段開(kāi)發(fā)出了多個(gè)應(yīng)用系統(tǒng),這些應(yīng)用系統(tǒng)可能是基于不同技術(shù)實(shí)現(xiàn)的,它們有著獨(dú)立的安全認(rèn)證和用戶(hù)管理機(jī)制。在門(mén)戶(hù)系統(tǒng)中集成這些應(yīng)用時(shí),這些機(jī)制就成了集成的阻礙,增加了用戶(hù)登錄出錯(cuò)的可能性,降低了用戶(hù)訪(fǎng)問(wèn)資源站點(diǎn)的安全性,加重了管理員的負(fù)擔(dān)。所以非常必要對(duì)門(mén)戶(hù)系統(tǒng)和接入到其中的資源站點(diǎn)建立統(tǒng)一身份認(rèn)證,實(shí)現(xiàn)單點(diǎn)登錄。
1 單點(diǎn)登錄技術(shù)及其分類(lèi)
單點(diǎn)登錄(Single Sign-On,SSO),即用戶(hù)在訪(fǎng)問(wèn)多個(gè)系統(tǒng)和多種受限資源時(shí),只需進(jìn)行一次登錄和身份驗(yàn)證,不用重復(fù)登錄,用戶(hù)安全信息轉(zhuǎn)換為電子身份后自動(dòng)地傳遞到多個(gè)系統(tǒng),從而提高工作效率和安全性[1]。
1.1 根據(jù)應(yīng)用系統(tǒng)結(jié)構(gòu)分類(lèi)
應(yīng)用系統(tǒng)可以分為客戶(hù)端/服務(wù)器(C/S)和瀏覽器/服務(wù)器(B/S)結(jié)構(gòu),單點(diǎn)登錄技術(shù)也可分為針對(duì)C/S的基于Windows窗體的單點(diǎn)登錄和針對(duì)B/S結(jié)構(gòu)的基于Web的單點(diǎn)登錄技術(shù)。從理論上說(shuō),這兩種技術(shù)能夠使用相同的認(rèn)證和授權(quán)框架結(jié)構(gòu),區(qū)別在于基于Web的單點(diǎn)登錄在實(shí)現(xiàn)方式上更多的采用了Web相關(guān)的技術(shù)。
1.2 根據(jù)實(shí)現(xiàn)技術(shù)分類(lèi)
按照實(shí)現(xiàn)技術(shù)分類(lèi),可分為基于腳本(Script)的單點(diǎn)登錄和基于票據(jù)(Ticket)的單點(diǎn)登錄。
基于腳本的單點(diǎn)登錄技術(shù),一般使用自動(dòng)化技術(shù),通過(guò)一些腳本在客戶(hù)端自動(dòng)為用戶(hù)輸入口令和用戶(hù)名。用戶(hù)ID和密碼大都以明文方式存放在客戶(hù)端,存在安全隱患。
基于票據(jù)的單點(diǎn)登錄技術(shù),其主要目標(biāo)是通過(guò)要求目標(biāo)系統(tǒng)進(jìn)行改造接受訪(fǎng)問(wèn)票據(jù)來(lái)實(shí)現(xiàn)SSO,對(duì)用戶(hù)的驗(yàn)證工作由SSO服務(wù)器負(fù)責(zé),目標(biāo)系統(tǒng)的責(zé)任只是向SSO服務(wù)器驗(yàn)證訪(fǎng)問(wèn)票據(jù)的有效性。根據(jù)使用票據(jù)類(lèi)型的不同,基于票據(jù)的單點(diǎn)登錄可分為基于Cookie的單點(diǎn)登錄、基于Kerberos的單點(diǎn)登錄和基于SAML的單點(diǎn)登錄三種。
2 三種單點(diǎn)登錄方案
一直以來(lái),產(chǎn)業(yè)界和理論界紛紛提出了各自的單點(diǎn)登錄解決方案。對(duì)單點(diǎn)登錄的研究和開(kāi)發(fā)工作一直在不斷深入。目前的單點(diǎn)登錄方案主要有Yale-CAS(Central Authentication Service)、Microsoft的Passport和Sun領(lǐng)導(dǎo)下的自由聯(lián)盟(Liberty Alliance)。
2.1 基于CAS協(xié)議的單點(diǎn)登錄方案[2]
CAS協(xié)議是一個(gè)獨(dú)立于平臺(tái)的,易于理解的用JAVA實(shí)現(xiàn)的開(kāi)源協(xié)議,支持多方認(rèn)證和代理功能。它能為多個(gè)應(yīng)用提供單點(diǎn)登錄基礎(chǔ)架構(gòu)。它將用戶(hù)身份認(rèn)證集中于單一的Web應(yīng)用,讓用戶(hù)簡(jiǎn)化他們的密碼管理,從而提高安全性,開(kāi)發(fā)者可以很容易的修改驗(yàn)證邏輯。CAS協(xié)議的基礎(chǔ)思想都是基于Kerberos的票據(jù)方式。
基于CAS協(xié)議的單點(diǎn)登錄方案在安全性上,保證用戶(hù)信息不在應(yīng)用系統(tǒng)間傳遞,使用具有更高安全性的票據(jù)驗(yàn)證用戶(hù)和應(yīng)用服務(wù)。在適用性上,它支持多種客戶(hù)端,如Java、Perl、Jsp、Asp、Php、Apache和PAM模塊,方便應(yīng)用程序集成。它應(yīng)用范圍很廣,在北美和歐洲的大部分高校和科研院所都采用了CAS,不少企業(yè)也在CAS協(xié)議的基礎(chǔ)上開(kāi)發(fā)自己的單點(diǎn)登錄產(chǎn)品。
2.2 微軟Passport單點(diǎn)登錄方案
Passport是微軟推出的基于Web的統(tǒng)一身份認(rèn)證系統(tǒng)。其核心的身份認(rèn)證服務(wù)器以及用戶(hù)個(gè)人信息服務(wù)器都由微軟集中控制,其技術(shù)細(xì)節(jié)不對(duì)外公開(kāi),因此人們一直對(duì)其安全性持懷疑態(tài)度,用戶(hù)擔(dān)心其個(gè)人資料被泄漏。微軟的Passport系統(tǒng)曾被黑客多次入侵。這些都限制了微軟Passport服務(wù)的進(jìn)一步推廣。
2.3 自由聯(lián)盟單點(diǎn)登錄方案
自由聯(lián)盟規(guī)范依據(jù)了OASIS產(chǎn)業(yè)標(biāo)準(zhǔn),它不是中央集中式的單一登錄模式,而是一種相對(duì)開(kāi)放的模式,在其信任圈中可以存在多個(gè)相互獨(dú)立的身份提供者。但目前自由聯(lián)盟規(guī)范仍處于研究階段,且其本身的協(xié)議比較復(fù)雜,實(shí)現(xiàn)起來(lái)具有一定難度,沒(méi)有成型的應(yīng)用服務(wù)。
3 單點(diǎn)登錄系統(tǒng)的設(shè)計(jì)
本文為某信息門(mén)戶(hù)設(shè)計(jì)單點(diǎn)登錄方案。某信息門(mén)戶(hù)集成了包含論壇、博客、新聞評(píng)論、房產(chǎn)信息等應(yīng)用系統(tǒng),用戶(hù)在使用多個(gè)應(yīng)用系統(tǒng)時(shí)需要多次輸入用戶(hù)名和密碼獲得各應(yīng)用系統(tǒng)的服務(wù),給用戶(hù)的使用帶來(lái)極大不便。與此同時(shí)系統(tǒng)管理員需要維護(hù)多個(gè)用戶(hù)數(shù)據(jù)庫(kù),加重了工作負(fù)擔(dān),也造成了資源的浪費(fèi)。
在選取方案時(shí),要考慮到安全性高、易實(shí)現(xiàn)、登錄方案成熟等要求。通過(guò)對(duì)前面三種單點(diǎn)登錄方案的比較,為了解決信息門(mén)戶(hù)的這些問(wèn)題,使用基于CAS協(xié)議單點(diǎn)登錄方案,并在此基礎(chǔ)上對(duì)其加以改進(jìn)。信息門(mén)戶(hù)中用戶(hù)群體呈現(xiàn)多樣化,有一般的注冊(cè)用戶(hù),也有不同等級(jí)的管理人員,并且應(yīng)用系統(tǒng)也會(huì)不斷增加,要求新系統(tǒng)在加入信息門(mén)戶(hù)時(shí),修改較小,最好有通用的接口供其調(diào)用。無(wú)論用戶(hù)通過(guò)門(mén)戶(hù)登錄,還是通過(guò)各個(gè)應(yīng)用系統(tǒng)登錄,都能做到單點(diǎn)登錄,全網(wǎng)通行。通過(guò)以上分析,提出一個(gè)以集中認(rèn)證服務(wù)器為中心的單點(diǎn)登錄系統(tǒng)模型。整個(gè)系統(tǒng)的結(jié)構(gòu)如圖1所示。
圖1 單點(diǎn)登錄系統(tǒng)模型
集中認(rèn)證服務(wù)器實(shí)現(xiàn)統(tǒng)一用戶(hù)管理、集中認(rèn)證和單點(diǎn)登錄功能。統(tǒng)一用戶(hù)管理包括注冊(cè)用戶(hù)管理、管理員管理、角色管理、權(quán)限管理、應(yīng)用系統(tǒng)管理、日志管理和基于角色的訪(fǎng)問(wèn)控制?;贑AS協(xié)議實(shí)現(xiàn)集中認(rèn)證和單點(diǎn)登錄,每個(gè)應(yīng)用系統(tǒng)在認(rèn)證用戶(hù)時(shí)都通過(guò)重定向到集中認(rèn)證服務(wù)器進(jìn)行集中身份認(rèn)證。
單點(diǎn)登錄系統(tǒng)只解決用戶(hù)認(rèn)證和用戶(hù)是否有權(quán)限進(jìn)入某個(gè)應(yīng)用系統(tǒng)的問(wèn)題,而用戶(hù)在應(yīng)用系統(tǒng)的權(quán)限(業(yè)務(wù)權(quán)限)則由各應(yīng)用系統(tǒng)進(jìn)行控制。其原因是應(yīng)用系統(tǒng)都擁有自己的權(quán)限和資源管理策略。如果采用統(tǒng)一集中的權(quán)限管理策略,雖然用戶(hù)權(quán)限管理起來(lái)比較方便,但是對(duì)應(yīng)用系統(tǒng)的修改比較大,這樣導(dǎo)致應(yīng)用系統(tǒng)集成成本增加,并且各個(gè)系統(tǒng)都有自己不同的業(yè)務(wù)邏輯,對(duì)應(yīng)用系統(tǒng)的修改可能破壞掉其業(yè)務(wù)邏輯的完整性。統(tǒng)一集中的權(quán)限控制策略對(duì)于所有的系統(tǒng)都是自己開(kāi)發(fā)時(shí)比較合適,而對(duì)于第三方系統(tǒng)以及以后新的應(yīng)用系統(tǒng)的加入,都會(huì)帶來(lái)非常多的不方便?;谝陨峡紤],本文單點(diǎn)登錄系統(tǒng)采用集中認(rèn)證分級(jí)授權(quán)的策略。
參考文獻(xiàn)
[1]張挺,耿繼秀. Web環(huán)境下的SSO實(shí)現(xiàn)模式研究[J].計(jì)算機(jī)仿真,2005,22(8):128-129.
[2]羅時(shí)飛.Acegi CAS—構(gòu)建安全的Java系統(tǒng)[M].北京:電子工業(yè)出版社,2007.
作者簡(jiǎn)介
宋洪娟(1983-),女,山東泰安人,碩士,研究方向:網(wǎng)絡(luò)工程與管理信息系統(tǒng)?,F(xiàn)擔(dān)任第二炮兵工程大學(xué)士官學(xué)院教員。