景民昌 唐弟官
〔摘 要〕單點(diǎn)登錄是解決網(wǎng)絡(luò)環(huán)境下應(yīng)用集成和門戶系統(tǒng)安全認(rèn)證的一種有效策略,CAS是Yale大學(xué)開發(fā)的一種開放源碼單點(diǎn)登錄系統(tǒng)。本文簡(jiǎn)要介紹了CAS的一些優(yōu)點(diǎn),從體系結(jié)構(gòu)、認(rèn)證模式等方面對(duì)CAS做了深入分析,并探討了CAS在數(shù)字圖書館中的應(yīng)用前景。
〔關(guān)鍵詞〕單點(diǎn)登錄;CAS;開放源碼軟件;數(shù)字圖書館
〔中圖分類號(hào)〕G350 〔文獻(xiàn)標(biāo)識(shí)碼〕A 〔文章編號(hào)〕1008-0821(2009)03-0125-03
單點(diǎn)登錄(Single Sign-On,簡(jiǎn)稱SSO)是Web應(yīng)用環(huán)境中實(shí)現(xiàn)用戶統(tǒng)一身份認(rèn)證的重要組成部分。隨著數(shù)字圖書館應(yīng)用系統(tǒng)的整合以及門戶應(yīng)用的發(fā)展,單點(diǎn)登錄已經(jīng)成為人們關(guān)注和研究的熱點(diǎn)之一?;陂_放源碼軟件的數(shù)字圖書館建設(shè)是數(shù)字圖書館發(fā)展的重要趨勢(shì)[1],目前單點(diǎn)登錄的開放源碼軟件已經(jīng)有多個(gè),如SUN支持的OpenSSO項(xiàng)目[2]、JOSSO軟件[3]、美國Internet2高級(jí)網(wǎng)絡(luò)聯(lián)盟(MACE)小組開發(fā)的Shibboleth系統(tǒng)[4]以及Yale大學(xué)發(fā)起的CAS項(xiàng)目[5]等。
其中,Yale CAS以其合理的體系結(jié)構(gòu)、方便的配置管理、成熟的技術(shù)等特點(diǎn),得到了廣泛應(yīng)用[6],并成為JA-SIG的一個(gè)正式項(xiàng)目。本文主要從體系結(jié)構(gòu)、認(rèn)證模式等方面深入分析了CAS,并探討了其在數(shù)字圖書館中的應(yīng)用前景。
1 CAS優(yōu)點(diǎn)
(1)配置簡(jiǎn)單:CAS Server基于Spring Framework編寫,對(duì)其管理,大多只需通過配置Java Bean XML即可;
(2)支持多種認(rèn)證接口:CAS Server提供了一套易于定制的用戶認(rèn)證器接口,不論是傳統(tǒng)的用戶名/密碼方式、還是采用LDAP服務(wù)器,都可以通過對(duì)驗(yàn)證器模板稍加修改,便可使用;
(3)松散耦合:CAS被設(shè)計(jì)成可獨(dú)立部署的〣/S Web應(yīng)用,Server與Client分開實(shí)現(xiàn),降低了認(rèn)證模塊與應(yīng)用系統(tǒng)的耦合度,提供了更好的SOA設(shè)計(jì)和更彈性的安全策略;
(4)多語言支持:CAS Client支持多種語言的客戶端,如Java、.NET、PHP、Perl、Ruby等;
(5)安全性高:在CAS協(xié)議中,所有與CAS的交互均采用SSL協(xié)議,保證了系統(tǒng)安全性;
(6)支持復(fù)雜環(huán)境應(yīng)用:CAS 2.0協(xié)議擴(kuò)展了Proxy(代理)認(rèn)證,Web應(yīng)用可作為代理,訪問其它的Web應(yīng)用,從而使CAS可支持更高級(jí)、更復(fù)雜的應(yīng)用場(chǎng)景。
2 CAS體系結(jié)構(gòu)
2.1 技術(shù)框架
CAS在結(jié)構(gòu)上被設(shè)計(jì)成兩個(gè)部分:CAS Server和CAS Client。
CAS Server是一個(gè)單獨(dú)部署的Web應(yīng)用,負(fù)責(zé)用戶身份認(rèn)證工作,它的實(shí)現(xiàn)是運(yùn)行在HTTPS服務(wù)器上的幾個(gè)Java Servlet,通過3個(gè)URL來訪問:Login URL、Validation URL、Logout URL。目前,CAS Server是基于Spring Framework編寫的,大大提高了服務(wù)器端的配置管理效率;另外,CAS Server還提供了一套易于定制的用戶認(rèn)證器接口,使得CAS的認(rèn)證方式與CAS協(xié)議分離,開發(fā)者可根據(jù)自身需要,來訂制或擴(kuò)展自己的認(rèn)證邏輯;CAS Server甚至還提供了兩套默認(rèn)系統(tǒng)界面供用戶選擇使用或擴(kuò)展。
CAS Client負(fù)責(zé)本地Web應(yīng)用的受保護(hù)資源的訪問請(qǐng)求。用戶需要登錄時(shí),CAS Client將其請(qǐng)求重定向到CAS Server進(jìn)行認(rèn)證,而本地Web應(yīng)用不再接受任何的用戶名/密碼或其他類似的憑證(Credentials)。CAS Client與Web應(yīng)用部署在一起,以Filter方式保護(hù)受保護(hù)的資源。對(duì)于每一個(gè)對(duì)受保護(hù)資源的Web請(qǐng)求,CAS Client會(huì)分析該請(qǐng)求中是否包含ST(Service Ticket),只有包含ST的請(qǐng)求才被認(rèn)為是已經(jīng)登錄的用戶,如果不包含ST,則將該請(qǐng)求重定向到CAS Server。
2.2 服務(wù)角色
在CAS的服務(wù)架構(gòu)中,設(shè)計(jì)了4種服務(wù)角色[7]:CAS(用戶身份提供者)、Service(服務(wù)提供者)、Proxy(代理)、Target(目標(biāo)服務(wù))。
CAS:用戶身份提供者,由CAS Server扮演,主要作用是對(duì)登錄用戶的身份進(jìn)行認(rèn)證,以判斷其是否可信賴用戶;Service:服務(wù)提供者,是通過CAS對(duì)用戶進(jìn)行認(rèn)證,并為用戶提供某項(xiàng)服務(wù)的一個(gè)Web應(yīng)用;Proxy:是代理指定用戶訪問其它服務(wù)的一個(gè)服務(wù);Target:也叫后端服務(wù)(back-end service),是承認(rèn)代理憑證的某個(gè)指定的服務(wù)。
在實(shí)際應(yīng)用環(huán)境中,一個(gè)Web應(yīng)用有時(shí)可能同時(shí)扮演多個(gè)服務(wù)角色。例如,當(dāng)用戶登錄門戶,通過門戶向郵件服務(wù)器請(qǐng)求電子郵件。在這個(gè)過程中,門戶和郵件系統(tǒng)都需要向CAS認(rèn)證用戶,同時(shí)門戶系統(tǒng)還需要代理用戶向CAS Server獲取訪問郵件服務(wù)器的代理憑證。因而,門戶就充當(dāng)了Service和Proxy的雙重角色。
2.3 憑證類型
在CAS系統(tǒng)中,各方通過憑證(Ticket)對(duì)用戶身份進(jìn)行驗(yàn)證。CAS系統(tǒng)中設(shè)計(jì)了5種憑證[7]:TGC、ST、PGT、PGTIOU、PT。
TGC(Ticket-Granting Cookie):存放用戶身份認(rèn)證憑證的cookie,在瀏覽器和CAS間通訊時(shí)使用,并且只能基于安全通道傳輸,是CAS用來明確用戶身份的憑證;ST(Service Ticket):服務(wù)的惟一標(biāo)識(shí)碼。由CAS Server發(fā)出,通過客戶端瀏覽器到達(dá)業(yè)務(wù)服務(wù)器端。一個(gè)特定的服務(wù)只能有一個(gè)惟一的ST;PGT(Proxy-Granting ticket):由CAS Server頒發(fā)給擁有ST憑證的服務(wù)。PGT綁定一個(gè)用戶的特定服務(wù),使其擁有向CAS Server申請(qǐng),獲得PT的能力;PGTIOU(Proxy-Granting Ticket IOU):作用是將通過憑證校驗(yàn)時(shí)的應(yīng)答信息由CAS Server返回給CAS Client,同時(shí),與該GTIOU對(duì)應(yīng)的PGT將通過回調(diào)鏈接傳給Web應(yīng)用。Web應(yīng)用負(fù)責(zé)維護(hù)PGTIOU與PGT之間映射關(guān)系的內(nèi)容表;PT(Proxy Ticket):是應(yīng)用程序代理用戶身份對(duì)目標(biāo)程序進(jìn)行訪問的憑證。PT保存有代理及代理們進(jìn)行逐級(jí)訪問過程的信息。
3 認(rèn)證模式
從Web應(yīng)用環(huán)境的復(fù)雜程度劃分,CAS的認(rèn)證模式可分為基礎(chǔ)認(rèn)證模式和代理認(rèn)證模式,其中基礎(chǔ)認(rèn)證模式一般可滿足大部分簡(jiǎn)單的單點(diǎn)登錄應(yīng)用,而代理認(rèn)證模式可適應(yīng)復(fù)雜環(huán)境下的單點(diǎn)登錄認(rèn)證。
3.1 基礎(chǔ)模式
圖1說明了CAS的基本認(rèn)證過程。在該圖中,當(dāng)用戶首次請(qǐng)求http:∥webapp應(yīng)用時(shí),由于沒有登錄,CAS Client將該請(qǐng)求重定向到CAS Server,并傳遞Service(即要訪問的目的地址),以便登錄成功后轉(zhuǎn)回該地址;用戶輸入認(rèn)證信息,CAS Server進(jìn)行認(rèn)證,如果認(rèn)證成功,CAS Server隨機(jī)產(chǎn)生一個(gè)相當(dāng)長度、惟一、不可偽造的ST,之后重定向到Service所在地址,并為客戶端瀏覽器設(shè)置一個(gè)TGC(Ticket Granted Cookie),CAS Client在拿到service和新產(chǎn)生的ticket后,向CAS Server進(jìn)行身份核實(shí),以保證ST的合法性。
在整個(gè)過程中,所有與CAS的交互均采用SSL協(xié)議,以確保ST和TGC的安全;另外,CAS雖然會(huì)有兩次重定向,但CAS Client與CAS Server的ticket驗(yàn)證,對(duì)于用戶來說是透明的。
3.2 代理模式
CAS 2.0擴(kuò)展了Proxy認(rèn)證功能,即CAS Client可以代理用戶去訪問其他Web應(yīng)用。通過代理認(rèn)證功能,CAS可以適應(yīng)更復(fù)雜的Web應(yīng)用環(huán)境。圖2簡(jiǎn)單示意了CAS的Proxy認(rèn)證過程。
在該圖中,用戶訪問Web應(yīng)用1(http:∥webapp1),而Web應(yīng)用1又依賴Web應(yīng)用2(http:∥webapp2)來獲取數(shù)據(jù),并且Web應(yīng)用2也是需要進(jìn)行身份認(rèn)證才能訪問。
當(dāng)用戶請(qǐng)求Web應(yīng)用1時(shí),同基礎(chǔ)模式一樣,CAS Client將該請(qǐng)求重定向到CAS Server。不同于基礎(chǔ)模式的是:代理模式使用PGT,而不是TGC;CAS Server傳回PT,而不是ST。PGT與TGC不同,TGC是用戶持有的對(duì)自己身份信息的一種憑證,PGT是CAS Client持有的對(duì)用戶身份的一種憑據(jù)。用戶使用TGC獲取其他服務(wù)的ST,而Web應(yīng)用使用PGT代理用戶去實(shí)現(xiàn)后端的認(rèn)證,而無需前端用戶的參與。通過PT,Web應(yīng)用2知道Web應(yīng)用1代理的用戶是誰。根據(jù)本地策略,Web應(yīng)用2有義務(wù)為PGTURL=http:∥webapp1/proxy提供服務(wù)(PGTURL是一個(gè)Proxy服務(wù)),于是它傳遞數(shù)據(jù)給Web應(yīng)用1。
在這個(gè)過程中,Web應(yīng)用1扮演著Service和Proxy的雙重角色,協(xié)助用戶從Web應(yīng)用2返回所需數(shù)據(jù),而Web應(yīng)用2是一個(gè)Target。
4 CAS在數(shù)字圖書館的應(yīng)用分析
基于開放源碼軟件的開發(fā)與利用已經(jīng)成為我國數(shù)字圖書館建設(shè)中的一個(gè)重要方面。開放源碼軟件不僅解決了某些圖書館所面臨的技術(shù)問題和資金問題,而且提高了我國數(shù)字圖書館系統(tǒng)建設(shè)的層次和起點(diǎn),對(duì)加快我國數(shù)字圖書館的發(fā)展有著重要意義。作為一個(gè)開放源碼的單點(diǎn)登錄系統(tǒng),CAS配置方便、實(shí)用有效、足夠安全,在圖書館的應(yīng)用系統(tǒng)整合、門戶建設(shè)中,有著良好的應(yīng)用前景。
CAS應(yīng)用于數(shù)字圖書館建設(shè),最常見的可有以下兩種模式:
4.1 圖書館作為CAS中的用戶身份提供者
在這種模式中,CAS部署在圖書館應(yīng)用環(huán)境中,作為圖書館的一項(xiàng)應(yīng)用服務(wù)存在,負(fù)責(zé)用戶的認(rèn)證工作。對(duì)于一個(gè)獨(dú)立的圖書館來說,這是一種基本的應(yīng)用模式。對(duì)于機(jī)構(gòu)內(nèi)部的圖書館,如果需要針對(duì)用戶提供特殊服務(wù),也可適用于這種模式。例如,大學(xué)圖書館提供網(wǎng)上預(yù)約、續(xù)借、館際互借、MyLibrary個(gè)性化服務(wù)等,就需要在圖書館內(nèi)部部署CAS Server,為這些服務(wù)或應(yīng)用提供用戶認(rèn)證和授權(quán)。在這種模式中,圖書館所面臨的主要問題是如何管理大量的用戶信息,如用戶信息的存儲(chǔ)、備份、安全、同步等問題。
在CAS中,提供了多種用戶認(rèn)證接口,如用戶名/密碼方式、基于數(shù)據(jù)庫或XML文件檢索方式、LDAP等,CAS采用哪種方式認(rèn)證與基本協(xié)議是分離的,數(shù)字圖書館開發(fā)人員可以根據(jù)認(rèn)證的接口定制或擴(kuò)展。
4.2 圖書館Web應(yīng)用作為CAS系統(tǒng)的Service
對(duì)于機(jī)構(gòu)內(nèi)部的圖書館,這種模式較為常見。例如,目前,許多高校已在校園網(wǎng)實(shí)現(xiàn)了“一卡通”,即學(xué)生在校園網(wǎng)內(nèi)只使用一種身份,便可通行于校園網(wǎng)內(nèi)各Web系統(tǒng)。如果在校園網(wǎng)部署了CAS系統(tǒng),圖書館的各種服務(wù),如個(gè)性化服務(wù)等,可作為CAS系統(tǒng)的客戶端,與校園網(wǎng)內(nèi)已有的CAS系統(tǒng)一起為用戶提供透明的服務(wù)。
在這種模式中,用戶的身份鑒定工作由校園網(wǎng)的CAS Server完成,圖書館需要在本地Web應(yīng)用中配置CAS Client,所要解決的主要問題是如何定義用戶的屬性和權(quán)利,例如,哪些資源是匿名用戶可以訪問的,哪些資源是需要用戶登錄之后才能訪問的。
參考文獻(xiàn)
[1]張智雄.開放源碼軟件——全球數(shù)字圖書館研究與建設(shè)的重要活動(dòng)和實(shí)踐[J].數(shù)字圖書館論壇,2006,(增):1-11.
[2]OpenSSO[EB/OL].https:∥opensso.dev.java.net,2008-08-02.
[3]JOSSO—Java Open Single Sign-On Project Home[EB/OL].http:∥www.josso.org/confluence/display/JOSSO1/JOSSO++Java+Open+Single+Sign睴n+Project+Home,2008-08-02.
[4]Shibboleth[EB/OL].http:∥shibboleth.internet2.edu,2008-08-03.
[5]Central Authentication Service[EB/OL].http:∥www.ja-sig.org/products/cas,2008-08-01.
[6]Deployers[EB/OL].http:∥www.ja-sig.org/products/cas/community/deployers/index.html,2008-08-05.
[7]CAS 2 Architecture[EB/OL].http:∥www.ja-sig.org/products/cas/overview/cas2zarchitecture/index.html,2008-08-10.