摘 要: 分析了現存多種SSO技術的優缺點,針對用戶跨系統操作較多的分布式系統,提出了一種基于Web Service的以權限管理為核心的輕量級的單點登錄實現方法。通過在某航空呼叫中心中的運用實踐,很好地說明了該方法的實用性。
關鍵詞: 單點登錄; 統一認證; 訪問控制; Web Service
在分布式構架的軟件環境下,各協同站點都擁有各自的用戶數據庫,為解決同一用戶在使用不同站點功能時需多次輸入用戶密碼所帶來的安全與管理不便的問題,單點登錄機制提供了安全有效的途徑。所謂單點登錄,即用戶在訪問多個系統功能時只需進行一次登錄操作, 就可獲得所需訪問應用系統和資源的授權, 不必多次輸入用戶名和密碼來確定用戶身份,即“一次登錄,多處漫游”。應用單點登錄機制可有效實現統一認證和資源訪問控制。
1 一般單點登錄模型
現有的實現SSO的產品和方案眾多,典型代表有微軟的Passport和自由聯盟計劃[1]。Passport單點登錄技術是Microsoft的重要組成部分。它主要采用集中式認證,分布式授權方案實現。從根本上說, Passport屬于一種基于訪問票據的集中式單點登錄模式,所有的用戶信息都存放在Passort.com中, 由Passort.com負責統一的身份驗證。自由聯盟計劃(Liberty Alliance Project)與Passport不同,它是基于SMAL標準的一個面向Web應用單點登錄的、與平臺無關的開放協議,沒有設立中心位置的認證系統,它建立了協作站點與認證系統的聯盟關系,兩個Web應用之間可以保留原來的用戶認證機制, 通過建立它們各自身份的對應關系來達到SSO的目的。自由聯盟計劃雖然靈活性很高,但也因其過于自由的聯盟組織,當聯盟系統過多時將給管理帶來不便。
除了以上兩個比較有代表性的產品外,目前實現SSO的典型模型包括經紀人模型、代理模型、代理和經紀人模型、網關模型以及令牌模型[2]。其中,經濟人模型與Passport實現方案類似,采用集中式管理,但是對舊系統改造較大;代理模型要在每個舊系統上添加一個代理,可移植性好,但管理相對困難;代理和經紀人模型結合了以上兩者的優點,移植性好、管理相對集中;網關模式需要一臺專門的網關,多個網關同步數據庫比較困難;代理模式因為需要增加新的組件所以也增加了新的管理負擔,但卻增加了系統的安全性。
2 本文方案
通過分析并權衡上述SSO模型的優缺點,針對某些大型企業內部協同合作站點相對固定且相對獨立,需要維護獨立的用戶數據庫,同時又有整個分布式系統環境下某些角色需跨系統操作且跨系統操作較多的特點,本文提出了一種基于Web Service和票據的集中授權,分布驗證的單點登錄實現方法。
2.1 Web Service技術
Web Service是一種輕量級的獨立的通信技術, 是符合某些標準的分布式應用構件,這些標準使它們能夠在外部被訪問,并且能夠解決某些類型的行業問題。通過簡單對象存取協議SOAP(Simple Object Access Protoco)在Web上提供的軟件服務, 使用WSDL文件進行說明, 并通過UDDI進行注冊[3-4]。如圖1 所示, 用戶通過UDDI找到某應用的WSDL描述文檔后, 便可以通過SOAP調用該應用提供的Web服務中的一個或多個操作。
Web Service[5]在體系結構、設計、實現與部署等方面都比傳統的分布式對象技術更加合理,它對外提供了可調用的接口,允許外來用戶訪問敏感信息和控制業務邏輯,雖然與傳統的Web開發方式相比,Web Service構建的商務邏輯更加開放和標準化,但其在安全性上表現出的弱點也給使用者帶來很大難題。本文通過Web Service接口暴露的方法來實現系統間部分功能的協同作用,特別是各系統權限的管理也依靠Web Service技術實現,因而首先要考慮其訪問控制上的安全性問題。
基于SOAP的訪問控制,多數解決方案利用了SOAP基于XML的特點[5],在很多方面通過XML加密、簽名等安全技術對SOAP協議Header和Body進行擴展來實現其安全性的增強。本文采用Damiani等人[6]提出的基于SOAP消息的過濾機制,通過校驗SOAP頭中的認證信息,過濾、修改,將SOAP消息轉化為RMA(遠程調用)以實現對本地組件的訪問控制。提供服務的服務器端由SOAP網關和本地組件組成,請求服務的SOAP消息到來時,首先要被SOAP網關截獲經過解析驗證后實現對Web服務的訪問控制。通過校驗的請求遠程調用本地接口。其過程如圖2所示。
2.2 權限管理
企業內部各系統間進行協同合作,資源訪問控制是一個極其重要的問題。而進行資源訪問控制首先要授予用戶在各協同站點間的資源訪問權限,規定其可訪問的頁面資源,可進行的操作。由于內部站點間合作密切,一個用戶可能擁有多個系統的某些或全部功能權限。本文對權限的授予通過角色分配實現,使某種角色的用戶擁有同一類資源訪問權限,同一類資源訪問權限可能跨越多個系統,集中地對所有權限進行分配,使得分工明確,便于管理。
建立專門的權限管理系統是集中對跨域用戶進行權限管理的有效方案,將各系統擁有跨域操作權限的用戶導入權限系統,并對這些用戶及用戶權限通過遠程調用接口進行增加、刪除、修改和查詢。由于各個系統也分別擁有各自的用戶數據庫并擁有獨立的角色分配模塊,系統在整合時保留了各自系統管理員對本系統權限的分配管理,同時運用Web Service技術,在該系統與權限系統之間分別建立Web Service客戶端和服務器端,同步權限系統對該系統用戶權限角色的修改。同時當用戶登錄系統對協作系統受保護資源進行訪問時,也需要通過Web Service調用接口以判斷用戶是否擁有該權限,這時權限系統就成了服務提供者,其他系統就是服務請求的客戶端了。
而對協作系統頁面的資源訪問控制,則采用單點登錄技術。擁有跨域權限的用戶存儲在中心權限管理系統的數據庫中,權限管理系統為其分配訪問協作系統的權限時,通過Web Service增加特定協作系統帳號到該用戶本系統的帳號關聯表,該帳號關聯表如表1所示。用戶登錄時首先調用權限管理系統的校驗程序進行校驗,成功后,即主動查詢本系統數據庫中的帳號關聯表,取出所有協作系統的帳號和密碼進行加密、封裝成票據并保存在Coockie中以供下次訪問其他系統時直接從Coockie中獲取使用。
2.3 Coockie和Ticket
單點登錄的思想是使用戶只需登錄一次就可訪問協同系統中的授權資源,這就需要記錄用戶登錄成功的信息,HTTP協議本身是基于請求/響應模式的,無狀態的協議,因而必須采用某種跟蹤機制用于記錄用戶登錄成功信息。本文采用Coockie存儲用戶成功登入的信息,當用戶驗證成功后,后臺自動查詢賬號關聯表,并將帳號關聯信息經加密后形成SSO Ticket以約定的方式分別存儲在相應的Coockie中,以備協同系統使用。要取得Coockie中的Ticket信息,就要知道對應系統Coockie存放的位置。這就需要各協同系統對這些協同系統的Coockie存放位置進行約定,并將這些信息存儲在數據庫中。該協同系統Coockie信息表結構如表2所示。
Ticket為密文,存放協同合作系統的帳戶信息,包括系統名、用戶名、密碼。加密Ticket前應對Ticket的格式進行約定以便于提取使用,如設為:系統名&&用戶名&&密碼。
3 實驗分析
航空公司業務比較復雜,不同的業務類型分布在不同的系統上,實現一個特定的業務流程往往需要協同合作多個系統,所以資源訪問控制是非常重要的問題。運用上節提出的方案,航空公司內部各系統如呼叫中心、投訴系統、B2C系統等協作站點都將權限管理工作集中到專門的權限管理系統,通過在各個系統之間建入Web Service服務器端和客戶端,實現遠程調用協同合作站點的功能接口,如判斷呼叫中心的座席是否有修改客戶信息的權利。對協同站點頁面資源的訪問控制則可由SSO機制來實現。
3.1登錄流程
現代呼叫中心應用了許多先進的通信和計算機技術,包括硬件和軟件方面的技術。本文所論及的呼叫中心只是航空公司整個呼叫中心的軟件系統實現部分。其實現需與公司其他相鄰系統進行協同合作:如B2C系統、B2B系統、投訴系統、大客戶信息管理系統等。以座席為例,說明使用呼叫中心系統時單點登錄的過程。流程圖如圖3所示。
(1) 首次登錄呼叫中心系統,座席輸入用戶名和密碼信息。
(2)遠程調用權限管理系統的驗證程序進行有效性校驗。
(3) 若帳號驗證有效,系統則自動查詢該帳戶下所有協作系統的登錄帳號信息,以約定的組織格式:系統&&用戶名&&密碼經DES加密后保存為Ticket,并通過查詢系統Coockie信息表獲得對應系統存放Coockie的相關信息,分別查看瀏覽器中是否存有信息表中對應的Coockie, 有則通過setCoockies方法將Ticket存入相應Coockie并覆蓋之,無則創建該Coockie并存入指定位置。若帳號信息驗證無效,返回(1)。
(4) 訪問其他協作系統時,通過getCoockie獲取相應Coockie,若獲取成功,則解密Ticket分解出帳戶信息進行登錄驗證操作,若獲取不成功,說明該用戶角色無此資源訪問權限。
在本方案的整個流程中, 除了最初輸入的用戶名和密碼外, 其他每次登錄系統時所需帳戶信息都是通過獲取客戶機端對應的Coockie中存儲的帳戶信息進行。關閉瀏覽器時刪除所有Coockie信息,即登出系統。
3.2 性能分析
評價SSO系統主要考慮其可實施性、可管理性、安全性和易用性[7] 。本文使用專門的權限管理系統對所有協同合作系統中的用戶及其權限統一管理,各系統保持其原有用戶存儲和驗證方式,對有需要進行跨域操作的系統中增加Web Service客戶端遠程調用權限系統的校驗接口進行有效性校驗,主調系統主動保存所有協作系統的登錄信息到Coockie,在需要訪問時直接獲取Coockie中對應系統信息進行對應系統本地驗證,這有別于已有的集中式單點登錄方案,只需調用系統原有校驗程序而不需在跨域時調用權限系統進行校驗,可大大減少多用戶并行操作時權限管理系統的負擔。權限系統對各跨域用戶進行權限的分配管理,各系統通過遠程調用權限管理系統接口進行權限的查詢。整個SSO驗證用戶過程是受訪系統對用戶帳號的驗證及通過Web Service技術遠程調用權限系統的驗證過程。因而與常見集中式認證SSO系統相比,傳遞的Ticket信息包含SSO之前所需的用戶名密碼,驗證程序也只需增加存儲登錄用戶協作系統對應帳戶信息到相應Coockie的功能,改動較少,可實施性較強。對所有協同系統通過采用分步認證與集中管理授權,有較強的可管理性。通過加密票據,并將其存放在對應系統可訪問域中,提供了簡單的安全措施。另外,新增協同合作系統時,只需對該系統的各角色創建新的用戶密碼,并在權限系統中將擁有該角色權限的其他系統用戶的帳戶關聯信息進行更新即可,有較強的易用性。
本文基于Web Service技術在原有系統的基礎上,構建了單點登錄機制。通過將SOAP消息轉換為RMA(遠程調用)對系統間的Web服務進行安全的訪問控制,實現了用戶及權限的管理。同時使用Coockie,DES加密技術在系統間傳遞關聯帳號實現了單點登錄過程。實驗表明,本文采用的方案具有良好的可管理性、可實施性、安全性和易用性。
參考文獻
[1] 毛捍東,張維明.一個基于Web服務的單點登錄系統[J]. 計算機工程與應用,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的混合架構單點登錄的設計[J].計算機機應用,2010.30(12):3363-3365.
[5] 許峰,林果園,黃皓. Web Service的訪問控制研究綜述[J].計算機科學,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 環境下的SSO 實現模式的研究[J]. 計算機仿真, 2005,22 (8):128-131.