摘 要: 分析了現(xiàn)存多種SSO技術(shù)的優(yōu)缺點(diǎn),針對用戶跨系統(tǒng)操作較多的分布式系統(tǒng),提出了一種基于Web Service的以權(quán)限管理為核心的輕量級的單點(diǎn)登錄實(shí)現(xiàn)方法。通過在某航空呼叫中心中的運(yùn)用實(shí)踐,很好地說明了該方法的實(shí)用性。
關(guān)鍵詞: 單點(diǎn)登錄; 統(tǒng)一認(rèn)證; 訪問控制; Web Service
在分布式構(gòu)架的軟件環(huán)境下,各協(xié)同站點(diǎn)都擁有各自的用戶數(shù)據(jù)庫,為解決同一用戶在使用不同站點(diǎn)功能時需多次輸入用戶密碼所帶來的安全與管理不便的問題,單點(diǎn)登錄機(jī)制提供了安全有效的途徑。所謂單點(diǎn)登錄,即用戶在訪問多個系統(tǒng)功能時只需進(jìn)行一次登錄操作, 就可獲得所需訪問應(yīng)用系統(tǒng)和資源的授權(quán), 不必多次輸入用戶名和密碼來確定用戶身份,即“一次登錄,多處漫游”。應(yīng)用單點(diǎn)登錄機(jī)制可有效實(shí)現(xiàn)統(tǒng)一認(rèn)證和資源訪問控制。
1 一般單點(diǎn)登錄模型
現(xiàn)有的實(shí)現(xiàn)SSO的產(chǎn)品和方案眾多,典型代表有微軟的Passport和自由聯(lián)盟計(jì)劃[1]。Passport單點(diǎn)登錄技術(shù)是Microsoft的重要組成部分。它主要采用集中式認(rèn)證,分布式授權(quán)方案實(shí)現(xiàn)。從根本上說, Passport屬于一種基于訪問票據(jù)的集中式單點(diǎn)登錄模式,所有的用戶信息都存放在Passort.com中, 由Passort.com負(fù)責(zé)統(tǒng)一的身份驗(yàn)證。自由聯(lián)盟計(jì)劃(Liberty Alliance Project)與Passport不同,它是基于SMAL標(biāo)準(zhǔn)的一個面向Web應(yīng)用單點(diǎn)登錄的、與平臺無關(guān)的開放協(xié)議,沒有設(shè)立中心位置的認(rèn)證系統(tǒng),它建立了協(xié)作站點(diǎn)與認(rèn)證系統(tǒng)的聯(lián)盟關(guān)系,兩個Web應(yīng)用之間可以保留原來的用戶認(rèn)證機(jī)制, 通過建立它們各自身份的對應(yīng)關(guān)系來達(dá)到SSO的目的。自由聯(lián)盟計(jì)劃雖然靈活性很高,但也因其過于自由的聯(lián)盟組織,當(dāng)聯(lián)盟系統(tǒng)過多時將給管理帶來不便。
除了以上兩個比較有代表性的產(chǎn)品外,目前實(shí)現(xiàn)SSO的典型模型包括經(jīng)紀(jì)人模型、代理模型、代理和經(jīng)紀(jì)人模型、網(wǎng)關(guān)模型以及令牌模型[2]。其中,經(jīng)濟(jì)人模型與Passport實(shí)現(xiàn)方案類似,采用集中式管理,但是對舊系統(tǒng)改造較大;代理模型要在每個舊系統(tǒng)上添加一個代理,可移植性好,但管理相對困難;代理和經(jīng)紀(jì)人模型結(jié)合了以上兩者的優(yōu)點(diǎn),移植性好、管理相對集中;網(wǎng)關(guān)模式需要一臺專門的網(wǎng)關(guān),多個網(wǎng)關(guān)同步數(shù)據(jù)庫比較困難;代理模式因?yàn)樾枰黾有碌慕M件所以也增加了新的管理負(fù)擔(dān),但卻增加了系統(tǒng)的安全性。
2 本文方案
通過分析并權(quán)衡上述SSO模型的優(yōu)缺點(diǎn),針對某些大型企業(yè)內(nèi)部協(xié)同合作站點(diǎn)相對固定且相對獨(dú)立,需要維護(hù)獨(dú)立的用戶數(shù)據(jù)庫,同時又有整個分布式系統(tǒng)環(huán)境下某些角色需跨系統(tǒng)操作且跨系統(tǒng)操作較多的特點(diǎn),本文提出了一種基于Web Service和票據(jù)的集中授權(quán),分布驗(yàn)證的單點(diǎn)登錄實(shí)現(xiàn)方法。
2.1 Web Service技術(shù)
Web Service是一種輕量級的獨(dú)立的通信技術(shù), 是符合某些標(biāo)準(zhǔn)的分布式應(yīng)用構(gòu)件,這些標(biāo)準(zhǔn)使它們能夠在外部被訪問,并且能夠解決某些類型的行業(yè)問題。通過簡單對象存取協(xié)議SOAP(Simple Object Access Protoco)在Web上提供的軟件服務(wù), 使用WSDL文件進(jìn)行說明, 并通過UDDI進(jìn)行注冊[3-4]。如圖1 所示, 用戶通過UDDI找到某應(yīng)用的WSDL描述文檔后, 便可以通過SOAP調(diào)用該應(yīng)用提供的Web服務(wù)中的一個或多個操作。
Web Service[5]在體系結(jié)構(gòu)、設(shè)計(jì)、實(shí)現(xiàn)與部署等方面都比傳統(tǒng)的分布式對象技術(shù)更加合理,它對外提供了可調(diào)用的接口,允許外來用戶訪問敏感信息和控制業(yè)務(wù)邏輯,雖然與傳統(tǒng)的Web開發(fā)方式相比,Web Service構(gòu)建的商務(wù)邏輯更加開放和標(biāo)準(zhǔn)化,但其在安全性上表現(xiàn)出的弱點(diǎn)也給使用者帶來很大難題。本文通過Web Service接口暴露的方法來實(shí)現(xiàn)系統(tǒng)間部分功能的協(xié)同作用,特別是各系統(tǒng)權(quán)限的管理也依靠Web Service技術(shù)實(shí)現(xiàn),因而首先要考慮其訪問控制上的安全性問題。
基于SOAP的訪問控制,多數(shù)解決方案利用了SOAP基于XML的特點(diǎn)[5],在很多方面通過XML加密、簽名等安全技術(shù)對SOAP協(xié)議Header和Body進(jìn)行擴(kuò)展來實(shí)現(xiàn)其安全性的增強(qiáng)。本文采用Damiani等人[6]提出的基于SOAP消息的過濾機(jī)制,通過校驗(yàn)SOAP頭中的認(rèn)證信息,過濾、修改,將SOAP消息轉(zhuǎn)化為RMA(遠(yuǎn)程調(diào)用)以實(shí)現(xiàn)對本地組件的訪問控制。提供服務(wù)的服務(wù)器端由SOAP網(wǎng)關(guān)和本地組件組成,請求服務(wù)的SOAP消息到來時,首先要被SOAP網(wǎng)關(guān)截獲經(jīng)過解析驗(yàn)證后實(shí)現(xiàn)對Web服務(wù)的訪問控制。通過校驗(yàn)的請求遠(yuǎn)程調(diào)用本地接口。其過程如圖2所示。
2.2 權(quán)限管理
企業(yè)內(nèi)部各系統(tǒng)間進(jìn)行協(xié)同合作,資源訪問控制是一個極其重要的問題。而進(jìn)行資源訪問控制首先要授予用戶在各協(xié)同站點(diǎn)間的資源訪問權(quán)限,規(guī)定其可訪問的頁面資源,可進(jìn)行的操作。由于內(nèi)部站點(diǎn)間合作密切,一個用戶可能擁有多個系統(tǒng)的某些或全部功能權(quán)限。本文對權(quán)限的授予通過角色分配實(shí)現(xiàn),使某種角色的用戶擁有同一類資源訪問權(quán)限,同一類資源訪問權(quán)限可能跨越多個系統(tǒng),集中地對所有權(quán)限進(jìn)行分配,使得分工明確,便于管理。
建立專門的權(quán)限管理系統(tǒng)是集中對跨域用戶進(jìn)行權(quán)限管理的有效方案,將各系統(tǒng)擁有跨域操作權(quán)限的用戶導(dǎo)入權(quán)限系統(tǒng),并對這些用戶及用戶權(quán)限通過遠(yuǎn)程調(diào)用接口進(jìn)行增加、刪除、修改和查詢。由于各個系統(tǒng)也分別擁有各自的用戶數(shù)據(jù)庫并擁有獨(dú)立的角色分配模塊,系統(tǒng)在整合時保留了各自系統(tǒng)管理員對本系統(tǒng)權(quán)限的分配管理,同時運(yùn)用Web Service技術(shù),在該系統(tǒng)與權(quán)限系統(tǒng)之間分別建立Web Service客戶端和服務(wù)器端,同步權(quán)限系統(tǒng)對該系統(tǒng)用戶權(quán)限角色的修改。同時當(dāng)用戶登錄系統(tǒng)對協(xié)作系統(tǒng)受保護(hù)資源進(jìn)行訪問時,也需要通過Web Service調(diào)用接口以判斷用戶是否擁有該權(quán)限,這時權(quán)限系統(tǒng)就成了服務(wù)提供者,其他系統(tǒng)就是服務(wù)請求的客戶端了。
而對協(xié)作系統(tǒng)頁面的資源訪問控制,則采用單點(diǎn)登錄技術(shù)。擁有跨域權(quán)限的用戶存儲在中心權(quán)限管理系統(tǒng)的數(shù)據(jù)庫中,權(quán)限管理系統(tǒng)為其分配訪問協(xié)作系統(tǒng)的權(quán)限時,通過Web Service增加特定協(xié)作系統(tǒng)帳號到該用戶本系統(tǒng)的帳號關(guān)聯(lián)表,該帳號關(guān)聯(lián)表如表1所示。用戶登錄時首先調(diào)用權(quán)限管理系統(tǒng)的校驗(yàn)程序進(jìn)行校驗(yàn),成功后,即主動查詢本系統(tǒng)數(shù)據(jù)庫中的帳號關(guān)聯(lián)表,取出所有協(xié)作系統(tǒng)的帳號和密碼進(jìn)行加密、封裝成票據(jù)并保存在Coockie中以供下次訪問其他系統(tǒng)時直接從Coockie中獲取使用。
2.3 Coockie和Ticket
單點(diǎn)登錄的思想是使用戶只需登錄一次就可訪問協(xié)同系統(tǒng)中的授權(quán)資源,這就需要記錄用戶登錄成功的信息,HTTP協(xié)議本身是基于請求/響應(yīng)模式的,無狀態(tài)的協(xié)議,因而必須采用某種跟蹤機(jī)制用于記錄用戶登錄成功信息。本文采用Coockie存儲用戶成功登入的信息,當(dāng)用戶驗(yàn)證成功后,后臺自動查詢賬號關(guān)聯(lián)表,并將帳號關(guān)聯(lián)信息經(jīng)加密后形成SSO Ticket以約定的方式分別存儲在相應(yīng)的Coockie中,以備協(xié)同系統(tǒng)使用。要取得Coockie中的Ticket信息,就要知道對應(yīng)系統(tǒng)Coockie存放的位置。這就需要各協(xié)同系統(tǒng)對這些協(xié)同系統(tǒng)的Coockie存放位置進(jìn)行約定,并將這些信息存儲在數(shù)據(jù)庫中。該協(xié)同系統(tǒng)Coockie信息表結(jié)構(gòu)如表2所示。
Ticket為密文,存放協(xié)同合作系統(tǒng)的帳戶信息,包括系統(tǒng)名、用戶名、密碼。加密Ticket前應(yīng)對Ticket的格式進(jìn)行約定以便于提取使用,如設(shè)為:系統(tǒng)名&&用戶名&&密碼。
3 實(shí)驗(yàn)分析
航空公司業(yè)務(wù)比較復(fù)雜,不同的業(yè)務(wù)類型分布在不同的系統(tǒng)上,實(shí)現(xiàn)一個特定的業(yè)務(wù)流程往往需要協(xié)同合作多個系統(tǒng),所以資源訪問控制是非常重要的問題。運(yùn)用上節(jié)提出的方案,航空公司內(nèi)部各系統(tǒng)如呼叫中心、投訴系統(tǒng)、B2C系統(tǒng)等協(xié)作站點(diǎn)都將權(quán)限管理工作集中到專門的權(quán)限管理系統(tǒng),通過在各個系統(tǒng)之間建入Web Service服務(wù)器端和客戶端,實(shí)現(xiàn)遠(yuǎn)程調(diào)用協(xié)同合作站點(diǎn)的功能接口,如判斷呼叫中心的座席是否有修改客戶信息的權(quán)利。對協(xié)同站點(diǎn)頁面資源的訪問控制則可由SSO機(jī)制來實(shí)現(xiàn)。
3.1登錄流程
現(xiàn)代呼叫中心應(yīng)用了許多先進(jìn)的通信和計(jì)算機(jī)技術(shù),包括硬件和軟件方面的技術(shù)。本文所論及的呼叫中心只是航空公司整個呼叫中心的軟件系統(tǒng)實(shí)現(xiàn)部分。其實(shí)現(xiàn)需與公司其他相鄰系統(tǒng)進(jìn)行協(xié)同合作:如B2C系統(tǒng)、B2B系統(tǒng)、投訴系統(tǒng)、大客戶信息管理系統(tǒng)等。以座席為例,說明使用呼叫中心系統(tǒng)時單點(diǎn)登錄的過程。流程圖如圖3所示。
(1) 首次登錄呼叫中心系統(tǒng),座席輸入用戶名和密碼信息。
(2)遠(yuǎn)程調(diào)用權(quán)限管理系統(tǒng)的驗(yàn)證程序進(jìn)行有效性校驗(yàn)。
(3) 若帳號驗(yàn)證有效,系統(tǒng)則自動查詢該帳戶下所有協(xié)作系統(tǒng)的登錄帳號信息,以約定的組織格式:系統(tǒng)&&用戶名&&密碼經(jīng)DES加密后保存為Ticket,并通過查詢系統(tǒng)Coockie信息表獲得對應(yīng)系統(tǒng)存放Coockie的相關(guān)信息,分別查看瀏覽器中是否存有信息表中對應(yīng)的Coockie, 有則通過setCoockies方法將Ticket存入相應(yīng)Coockie并覆蓋之,無則創(chuàng)建該Coockie并存入指定位置。若帳號信息驗(yàn)證無效,返回(1)。
(4) 訪問其他協(xié)作系統(tǒng)時,通過getCoockie獲取相應(yīng)Coockie,若獲取成功,則解密Ticket分解出帳戶信息進(jìn)行登錄驗(yàn)證操作,若獲取不成功,說明該用戶角色無此資源訪問權(quán)限。
在本方案的整個流程中, 除了最初輸入的用戶名和密碼外, 其他每次登錄系統(tǒng)時所需帳戶信息都是通過獲取客戶機(jī)端對應(yīng)的Coockie中存儲的帳戶信息進(jìn)行。關(guān)閉瀏覽器時刪除所有Coockie信息,即登出系統(tǒng)。
3.2 性能分析
評價SSO系統(tǒng)主要考慮其可實(shí)施性、可管理性、安全性和易用性[7] 。本文使用專門的權(quán)限管理系統(tǒng)對所有協(xié)同合作系統(tǒng)中的用戶及其權(quán)限統(tǒng)一管理,各系統(tǒng)保持其原有用戶存儲和驗(yàn)證方式,對有需要進(jìn)行跨域操作的系統(tǒng)中增加Web Service客戶端遠(yuǎn)程調(diào)用權(quán)限系統(tǒng)的校驗(yàn)接口進(jìn)行有效性校驗(yàn),主調(diào)系統(tǒng)主動保存所有協(xié)作系統(tǒng)的登錄信息到Coockie,在需要訪問時直接獲取Coockie中對應(yīng)系統(tǒng)信息進(jìn)行對應(yīng)系統(tǒng)本地驗(yàn)證,這有別于已有的集中式單點(diǎn)登錄方案,只需調(diào)用系統(tǒng)原有校驗(yàn)程序而不需在跨域時調(diào)用權(quán)限系統(tǒng)進(jìn)行校驗(yàn),可大大減少多用戶并行操作時權(quán)限管理系統(tǒng)的負(fù)擔(dān)。權(quán)限系統(tǒng)對各跨域用戶進(jìn)行權(quán)限的分配管理,各系統(tǒng)通過遠(yuǎn)程調(diào)用權(quán)限管理系統(tǒng)接口進(jìn)行權(quán)限的查詢。整個SSO驗(yàn)證用戶過程是受訪系統(tǒng)對用戶帳號的驗(yàn)證及通過Web Service技術(shù)遠(yuǎn)程調(diào)用權(quán)限系統(tǒng)的驗(yàn)證過程。因而與常見集中式認(rèn)證SSO系統(tǒng)相比,傳遞的Ticket信息包含SSO之前所需的用戶名密碼,驗(yàn)證程序也只需增加存儲登錄用戶協(xié)作系統(tǒng)對應(yīng)帳戶信息到相應(yīng)Coockie的功能,改動較少,可實(shí)施性較強(qiáng)。對所有協(xié)同系統(tǒng)通過采用分步認(rèn)證與集中管理授權(quán),有較強(qiáng)的可管理性。通過加密票據(jù),并將其存放在對應(yīng)系統(tǒng)可訪問域中,提供了簡單的安全措施。另外,新增協(xié)同合作系統(tǒng)時,只需對該系統(tǒng)的各角色創(chuàng)建新的用戶密碼,并在權(quán)限系統(tǒng)中將擁有該角色權(quán)限的其他系統(tǒng)用戶的帳戶關(guān)聯(lián)信息進(jìn)行更新即可,有較強(qiáng)的易用性。
本文基于Web Service技術(shù)在原有系統(tǒng)的基礎(chǔ)上,構(gòu)建了單點(diǎn)登錄機(jī)制。通過將SOAP消息轉(zhuǎn)換為RMA(遠(yuǎn)程調(diào)用)對系統(tǒng)間的Web服務(wù)進(jìn)行安全的訪問控制,實(shí)現(xiàn)了用戶及權(quán)限的管理。同時使用Coockie,DES加密技術(shù)在系統(tǒng)間傳遞關(guān)聯(lián)帳號實(shí)現(xiàn)了單點(diǎn)登錄過程。實(shí)驗(yàn)表明,本文采用的方案具有良好的可管理性、可實(shí)施性、安全性和易用性。
參考文獻(xiàn)
[1] 毛捍東,張維明.一個基于Web服務(wù)的單點(diǎn)登錄系統(tǒng)[J]. 計(jì)算機(jī)工程與應(yīng)用,2004(24):18-20.
[2] DUBOISD, PRADEH. Putting rough sets and fuzzy sets together[M]. Dordrecht,Netherlands: KluwerAcademic Publishers,1992:203-222.
[3] GRECOS, MATARAZZOB, SLOW INSKIR. Fuzzy similarity relation as a basis for rough approximations[C] // Proceedings of RSCTC’98. Heidelberg: Springer Verlag,1998:283-289.
[4] 梁志罡.基于Webservice的混合架構(gòu)單點(diǎn)登錄的設(shè)計(jì)[J].計(jì)算機(jī)機(jī)應(yīng)用,2010.30(12):3363-3365.
[5] 許峰,林果園,黃皓. Web Service的訪問控制研究綜述[J].計(jì)算機(jī)科學(xué),2005,32(2):1-4.
[6] SIRER E C, WANG K. An access control language for web services.In:Proc.of the ACM Symposium on Access Control Models and Technologies, ACM Press,2002:23-30.
[7] 張挺, 耿繼秀. Web 環(huán)境下的SSO 實(shí)現(xiàn)模式的研究[J]. 計(jì)算機(jī)仿真, 2005,22 (8):128-131.