採用CAS原理構建單點登陸web
企業的信息化過程是一個按部就班的過程,在企業各個業務網站逐步建設的過程當中,根據各類業務信息水平的須要構建了相應的應用系統,因爲這些應用系統通常是 在不一樣的時期開發完成的,各應用系統因爲功能側重、設計方法和開發技術都有所不一樣,也就造成了各自獨立的用戶庫和用戶認證體系。隨着新的業務網站不斷的增 加,用戶在每一個應用系統中都有獨立的帳號,這樣就形成在訪問不一樣的應用系統時,須要記錄對應的用戶名和密碼,多個用戶名密碼極易記混,若是忘記或記錯了某 一個業務網站的用戶名或密碼就沒法進行登陸,耽誤工做,影響工做效率,隨着局內信息化進程的推動還會有新的應用系統產生,若是不引入單一用戶登陸的解決方 案,全公司工做人名特別是承擔審批權限的各級領導很難記清各種應用系統的用戶名和密碼,嚴重影響由信息化帶來快捷性和高效性。此外,多個應用平臺就有多個 用戶管理,這也爲系統管理員維護人員系統帶來巨大的工做量,例如,一次變動10我的員,即便只有5個應用系統,也須要重複維護50我的員信息,而企業的每 次人員調整遠不至10人,這種幾何增加的維護工做量,會浪費大量的精力和時間,減弱了信息化系統帶來方便快捷,爲此,需創建一套統一的、完善的、科學的單 點登陸系統,每一個用戶只需記錄一個用戶名密碼,登陸一個平臺後便可實現各應用系統的透明跳轉,並且實行統一的用戶信息管理系統,系統管理員只需維護一套人 員信息,更改信息經過平臺接口同步更新至各個應用系統,實現人員系統單次維護全公司同步變動,大大提升工做效率。數據庫
新的應用系統在不斷開發,早一天規劃設計出單點登陸的規範接口,就能夠爲新開發的系統提出的一種整合的標準,在開發初期不管哪一個開發商,不管採用哪一種技術 開發,只要遵循單點登陸的規範標準,新的系統開發完成以後便可無縫整合的到單點登陸平臺中,從而減小了系統開發完成後再整合到單點登陸改動而形成資源的浪 費。跨域
從信息共享角度看現有的各個業務系統都使用各自的數據存儲方式,不通過基礎的用戶名和密碼認證後,相互之間沒法傳遞有效信息。爲避免信息孤島的產生,所以 須要創建一個鏈接各個業務系統的技術架構和標準,實現平臺統一化整合;經過對業務處理和異常處理實現監管透明;經過將業務流程從應用中抽離,實現業務流程 的靈活安排,這樣就須要一套能夠整合現有各個業務網站的信息共享平臺。瀏覽器
單點登陸的英文名稱爲Single Sign-On,簡寫爲SSO,它是一個用戶認證的過程,容許用戶一次性進行認證以後,就訪問系統中不一樣的應用;而不須要訪問每一個應用時,都從新輸入密碼。IBM對SSO有一個形象的解釋「單點登陸、全網漫遊」。安全
SSO將一個企業內部全部域中的用戶登陸和用戶賬號管理集中到一塊兒,SSO的好處顯而易見:服務器
對於內部有多種應用系統的企業來講,單點登陸的效果是十分明顯的。不少國際上的企業已經將單點登陸做爲系統設計的基本功能之一。cookie
公司第一個版本的單點登錄系統從2005年運行以來,從幾十個應用系統擴展到如今的幾百個系統。在應用的過程當中沒有很好的解決跨域名的問題,單點登錄客戶端代碼使用問題,應用系統的訪問規則問題等都沒有很好的解決。架構
SSO的實現機制不盡相同,大致分爲Cookie機制和Session機制兩大類。函數
目前大部分SSO產品採用的是Cookie機制,公司第一個版本的單點登錄系統也是如此,目前可以找到的最好的開源單點登陸產品CAS也是採用Cookie機制。 CAS http://www.ja-sig.org/products/cas/,CAS 單點登陸系統最先由耶魯大學開發。2004年12月,CAS成爲JA-SIG中的一個項目。JA-SIG的全稱是Java Architectures Special Interest Group,是在高校中推廣和探討基於Java的開源技術的一個組織。CAS的優勢不少,例如設計理念先進、體系結構合理、配置簡單、客戶端支持普遍、技 術成熟等等。這也是咱們此次SSO改造的參照產品。測試
以CAS爲例,使用Cookie實現單點登陸的原理圖如圖1所示。
圖 1 使用Cookie實現單點登陸的原理圖
這樣,就再也不須要用戶繼續輸入用戶名和密碼,從而實現了單點登陸。
注意,這種單點登陸體系中,並無經過http進行密碼的傳遞(可是有用戶名的傳遞),所以是十分安全的。
CAS被設計爲一個獨立的Web應用,目前是經過若干個Java servlets來實現的。CAS必須運行在支持SSL的web服務器至上。應用程序能夠經過三個URL路徑來使用CAS,分別是登陸URL(login URL),校驗URL(validation URL)和登出URL(logout URL)。
採用.NET 來實現CAS原理的SSO系統,在第一個版本的SSO系統基礎上羅列一些問題,有的已是第一個版本的SSO系統中採用的方式。有些問題須要澄清的,
不少人談論單點登陸時,經常和統一用戶,以及單一用戶管理混淆了,要麼誤認爲單點登陸天然實現了單一用戶管理;要麼誤認爲統一用戶或者單一用戶管理就是單點登陸。實際上,這三個概念是有明確的區別的。
統一用戶就是指不一樣的系統,使用同一套用戶處理的機制。
很顯然,統一用戶是單點登陸的基礎,可是統一用戶並不意味着實現了單點登陸。
單一用戶管理則指全部的用戶管理工做都在惟一的地方進行處理,而每一個應用程序再也不保留本身的用戶管理功能。單一用戶管理和統一用戶管理的最大區別在於,統 一用戶管理以後,每一個應用程序仍然保留本身的用戶管理功能,用於額外的屬性設置;而單一用戶管理時,每一個應用程序再也不保留本身的用戶管理功能。
在企業應用場景下,全部的用戶信息來自HR系統,HR系統中包含的戶信息和部門信息,同時這些信息會存在於公司的活動目錄中。公司採用的是LDAP和數據 庫鏈接方式相結合,正式員工登錄OA系統並不採用LDAP方式認證,採用的RSA的token方式認證,也就是數據庫方式認證。對於忘記帶token卡和 客戶服務部的外聘人員沒有token卡的,經過白名單方式容許他們經過LDAP方式認證。第一個版本的單點登錄系統使用的HTTP,新版本的集成子系統使 用https方式通信。
術語解釋:
簡單說來,LDAP是一個獲得關於人或者資源的集中、靜態數據的快速方式。LDAP協議是跨平臺的和標準的協議,所以應用程序就不用爲LDAP目錄放在什 麼樣的服務器上操心了。實際上,LDAP獲得了業界的普遍承認,由於它是Internet的標準。產商都很願意在產品中加入對LDAP的支持,由於他們根 本不用考慮另外一端(客戶端或服務端)是怎麼樣的。LDAP服務器能夠是任何一個開發源代碼或商用的LDAP目錄服務器(或者還多是具備LDAP界面的關 系型數據庫),由於能夠用一樣的協議、客戶端鏈接軟件包和查詢命令與LDAP服務器進行交互。