楊金文 仲偉和 遼寧錦州遼寧工業大學
基于CAS單點登錄系統的研究與改進
楊金文 仲偉和 遼寧錦州遼寧工業大學
隨著社會的多元化,公司的企業文化越來越豐富,需要的應用系統也越來越多。不斷增多的應用系統雜亂無章,用戶在各個系統之間重復驗證自己的身份信息,公司的管理也變得越來越復雜。提出單點登錄的概念來解決企業現在面臨的問題。介紹了單點登錄的基本原理,提出了以企業人事管理系統為基礎的統一用戶存儲的方式。在統一存儲用戶的基礎上提出了統一授權、集中認證的思想。分析了CAS單點登錄的原理及不足,針對這些不足提出了改進的方法。
單點登錄 統一授權 集中認證 CAS
隨著網絡不斷發展,經濟不斷提高。許多公司開始增加自己的業務類型,提高服務標準,因此公司就要開始不斷地增加各種應用系統來滿足業務上的需求,由于各個應用系統的開發時間、開發技術以及使用的工具有的都不相同,這樣就給公司的管理帶來了很大的麻煩。
單點登錄系統的概念應運而生,SSO描述的情況就是,當用戶正在訪問一個應用系統時又想訪問另一個應用系統,不需要對用戶進行第二次身份認證,如果這個系統已經授權給了該用戶,那么這個用戶在有效期內就可以直接訪問,不需要重復的認證登錄。
單點登錄的主要工作就是要確定用戶是否具有訪問應用系統的權限,從狹義上講單點登錄就是統一用戶認證,然而統一身份認證是以統一用戶管理為基礎的。
1.1 統一用戶管理
對于一個公司來說,每個業務模塊設計的時期不同,導致設計的方式、技術以及具體的用戶信息存儲方式都不一樣。要想實現單點登錄,第一個難題就是怎樣使這些用戶的信息同步起來。所以提出了統一用戶管理的方法,把用戶的信息和公司的人事系統中的用戶信息結合起來,能夠保證用戶信息數出一源。以人事管理系統的用戶信息為基礎,結合業務的實際對用戶信息進行統一存儲。
提出了訂閱/發布的模式基于人事系統上保證了用戶的統一。當人事系統發生改變時會通知訂閱者接收消息。提出了三種解決方案,可以采用ETL、ESB。
ETL是基于軟件下把數據從來源端經過extract(抽取)、transform(轉換)、load(加載)一系列操作送到目的端的過程。用戶從數據源中extract(抽取)需要的數據,經過transform(轉換),最終按照數據倉庫模型把需要的數據load(加載)到目標數據庫中去。
ESB它是XML、Web服務Web Service等技術與傳統中間件技術結合的產物。ESB提供了最基本的網絡連接中樞。ESB的改變了傳統的軟件架構,可以提供一種更為廉價的解決方案,消除了不同應用之間的技術差異,可以讓不同的應用服務器協調運作,實現了不同服務之間的通信與整合。
對于已有的應用系統當中存儲的用戶的信息有可能與人事系統當中的并不是完全相同,要做到用戶統一且不改變原系統,為了在在單點登錄系統中可以很好的實現用戶的統一認證,可以把用戶的信息存儲在一張數據庫表中,在他們之間建立關聯關系。
1.2 統一授權
不管是在普通的系統當中還是在單點登錄系統當中,只要有用戶,就會有權限,系統中的資源不會對所有的用戶都開放也不會將所有資源都提供給用戶。一個系統會有許多用戶,如果具體為每個用戶設置權限,將會是一個漫長的工作。因此我們需要將用戶統一起來,集中授權。為管理員帶來了方便,同時也提高了系統的安全性。我們采用的是基于角色的授權方式。根據權限確定了許多角色,然后將角色分配給用戶,用戶與權限不存在任何關系,這時候如果用戶的權限發生變化,只需要修改用戶的角色就可以。這種方式大大提高了工作效率,如果一個員工從普通職員升職為經理,那么我們只需要將分配給該用戶的角色從職員修改成經理就可以了,不需要關心它具體哪些權限發生了改變,因為這些權限已經在角色設定時分配好了。這樣不僅方便了管理,提高了工作效率,同時也大大降低了開銷。
1.3 統一身份認證
隨著網絡不斷的發展,用戶的需求不斷增多,公司的應用系統越來越多,導致用戶和密碼的管理越來越復雜。對用戶實現了統一存儲,就可以對這些用戶進行統一的身份認證。這樣將提高系統的安全性。
統一身份認證就是當用戶登錄到一個應用系統后想要登錄到另一個應用系統時不需要重復驗證自己的身份信息,直接就可以登錄到所有被授權的應用系統。采用了統一身份認證之后用戶不需要記住那么多用戶名密碼,減少了找回密碼次數的同時也提高了安全性。將所有分散的用戶集中起來統一的存儲,這樣就可以對所有的用戶進行集中的管理和認證。
2.1 CAS協議的單點登錄方案
CAS(Central Authentication Service)是Yale大學開發的一個基于企業的,而且是開源的項目,主要就是為Web應用提供一種安全的SSO方法(屬于Web SSO)。CAS不僅是一種開源的、支持多協議的、具有高可靠性、安全性的一種SSO方案,而且還可以支持多種認證機制和多種客戶端,保證了SSO服務的優越性。CAS在結構體系上由CAS Server和CAS Client兩部分構成,其中CAS Server主要是對用戶的身份進行認證,并且需要獨立部署,CAS Server處理需要認證的用戶名和密碼等安全憑證。而CAS Client主要處理的是客戶端的請求,如果客戶端請求的是受保護的資源的時候,這時候就需要認證訪問者的身份,那么就要重定向到CAS Server進行認證。
2.2 CAS單點登錄方案的改進
2.2.1 CAS單點登錄方案安全性的改進
在CAS Server端和人事管理系統進行交互的時候對用戶的信息可能造成泄漏,決定在加入Kerberos的身份認證機制。
采用Kerberos V5作為安全機制,Kerberos V5是對具有網絡通信的雙方進行相互的身份認證,由Client(客戶端)、服務器端、KDC(Key Distribution Center,密鑰分配中心)、認證服務器、票據分配服務器、票據、時間戳等構成,采用的加密機制是對稱密鑰算法。
加入Kerberos認證機制后可以很好的保證CAS Server和數據庫進行交互的安全問題。加上Kerberos本身就和CAS很相似,不論是在構成上還是在票據的使用上都存在相同的含義。而且CAS在開發的時候,研發人員就將CAS的安全機制采用了可插入的方式,對預留的密碼處理接口進行擴展,就可以很好的將Kerberos的認證方式加入到CAS當中,重新創建一個類來完成密碼的驗證問題。
2.2.2 B/S架構下CAS單點登錄方案的改進
B/S架構即瀏覽器和服務器模式的結構。隨著Internet技術的不斷興起,B/S架構越來越流行。常見B/S架構的應用系統大致有兩種,一種是完全符合CAS協議可以共用證書的系統,一種是不符合CAS協議無法共用證書的系統。
對于符合CAS協議的系統,可以完全按照CAS單點登錄方案,可以運用CAS的證書,這種標準單點登錄的登錄頁面是由單點登錄系統統一提供。
對于已經投入使用且無法共用證書的系統,每個系統都自定義了登錄頁面,可以采用偽登錄的方式代理用戶登錄。在原有系統的登錄頁面和CAS認證服務器之間加入HttpClient了中間過程,具體的步驟如下:
①在用戶請求登錄時首先利用HttpClient Get方法嘗試獲取一個頁面,判斷該用戶是否已經登錄。如果返回的內容就是用戶所訪問的頁面,則說明用戶已經成功登錄過,用戶可以直接訪問資源,不需要再次提交認證信息;否則說明用戶沒有登錄過,需要執行②,向認證服務器提交認證信息。
②將用戶在登錄頁面輸入的用戶名和密碼連同必要的Cookie信息傳輸到CAS認證服務器,認證服務器會向數據庫查詢用戶的信息是否合法。如果出現登錄的用戶名和SSO登錄系統的用戶名不一致的情況,則系統會根據數據關聯表查詢用戶的信息。如果用戶的信息合法,用戶登錄成功。
該解決方案的優點在于其靈活性以及適用性,可以有效地解決用戶登錄界面不統一的問題。
2.2.3 C/S架構下CAS單點登錄方案的改進
C/S結構又稱Client/Server(客戶端、服務器)模式,通過把任務合理分配給客戶端和服務器端,大大降低了系統的通訊開銷,但是必須在安裝客戶端的前提下才可以進行管理操作。針對C/S架構的應用程序主要可以分為需要輸入用戶名和密碼的系統、不需要輸入用戶名和密碼的系統兩種形式。
針對不要用戶名和密碼的系統,可以直接打開,不需要驗證用戶的身份信息,屬于完全開放的系統。
而對于需要用戶名和密碼的系統,同樣也提供了一個代理登的中間件,利用窗體接收命令行參數進行自動登錄。同樣在用戶請求登錄時,首先會判斷用戶是否成功登錄過,如果登錄過以后就可以之間訪問請求的資源。如果第一次登錄,那么需要在登錄界面輸入認證信息,如用戶名和密碼。中間件會獲取到用戶的認證信息,利用窗體接收命令行參數模擬登錄,此時用戶的認證信息被送到認證服務器中,驗證用戶的認證信息是否合法,如果合法,則用戶成功登錄。
對于用戶的管理提出了以人事管理系統為基礎,采用ETL、ESB、Web service等方法為人事管理系統和單點登錄系統之間實現數據的傳輸。針對CAS單點登錄系統的不足,提出了改進方案,將CAS和Kerberos認證機制結合起來,保證了CAS與數據庫進行信息交互的時的安全問題。對不同的系統架構給出了不同的修改意見,使單點登錄系統有針對性的為企業的系統服務。
[1]畢曉彬.基于CAS認證體系的電子商務探討與研究.科技信息,2010,5(8):628-629
[2]張鐵頭,馬麗霞.使用HttpClient實現基于WEB第三方登錄驗證.電腦知識與技術,2012,8(12):2779-2780
