|
采用CAS原理構(gòu)建單點登錄 企業(yè)的信息化過程是一個循序漸進(jìn)的過程,在企業(yè)各個業(yè)務(wù)網(wǎng)站逐步建設(shè)的過程中,根據(jù)各種業(yè)務(wù)信息水平的需要構(gòu)建了相應(yīng)的應(yīng)用系統(tǒng),由于這些應(yīng)用系統(tǒng)一般是在不同的時期開發(fā)完成的,各應(yīng)用系統(tǒng)由于功能側(cè)重、設(shè)計方法和開發(fā)技術(shù)都有所不同,也就形成了各自獨立的用戶庫和用戶認(rèn)證體系。隨著新的業(yè)務(wù)網(wǎng)站不斷的增加,用戶在每個應(yīng)用系統(tǒng)中都有獨立的賬號,這樣就造成在訪問不同的應(yīng)用系統(tǒng)時,需要記錄對應(yīng)的用戶名和密碼,多個用戶名密碼極易記混,如果忘記或記錯了某一個業(yè)務(wù)網(wǎng)站的用戶名或密碼就無法進(jìn)行登錄,耽誤工作,影響工作效率,隨著局內(nèi)信息化進(jìn)程的推進(jìn)還會有新的應(yīng)用系統(tǒng)產(chǎn)生,如果不引入單一用戶登錄的解決方案,全公司工作人名特別是承擔(dān)審批權(quán)限的各級領(lǐng)導(dǎo)很難記清各類應(yīng)用系統(tǒng)的用戶名和密碼,嚴(yán)重影響由信息化帶來快捷性和高效性。此外,多個應(yīng)用平臺就有多個用戶管理,這也為系統(tǒng)管理員維護(hù)人員系統(tǒng)帶來巨大的工作量,例如,一次變更10個人員,即使只有5個應(yīng)用系統(tǒng),也需要重復(fù)維護(hù)50個人員信息,而企業(yè)的每次人員調(diào)整遠(yuǎn)不至10人,這種幾何增長的維護(hù)工作量,會浪費(fèi)大量的精力和時間,減弱了信息化系統(tǒng)帶來方便快捷,為此,需建立一套統(tǒng)一的、完善的、科學(xué)的單點登錄系統(tǒng),每個用戶只需記錄一個用戶名密碼,登錄一個平臺后即可實現(xiàn)各應(yīng)用系統(tǒng)的透明跳轉(zhuǎn),而且實行統(tǒng)一的用戶信息管理系統(tǒng),系統(tǒng)管理員只需維護(hù)一套人員信息,更改信息通過平臺接口同步更新至各個應(yīng)用系統(tǒng),實現(xiàn)人員系統(tǒng)單次維護(hù)全公司同步變更,大大提高工作效率。 新的應(yīng)用系統(tǒng)在不斷開發(fā),早一天規(guī)劃設(shè)計出單點登錄的規(guī)范接口,就可以為新開發(fā)的系統(tǒng)提出的一種整合的標(biāo)準(zhǔn),在開發(fā)初期無論哪個開發(fā)商,無論采用哪種技術(shù)開發(fā),只要遵循單點登錄的規(guī)范標(biāo)準(zhǔn),新的系統(tǒng)開發(fā)完成之后即可無縫整合的到單點登錄平臺中,從而減少了系統(tǒng)開發(fā)完成后再整合到單點登錄改動而造成資源的浪費(fèi)。 從信息共享角度看現(xiàn)有的各個業(yè)務(wù)系統(tǒng)都使用各自的數(shù)據(jù)存儲方式,不經(jīng)過基礎(chǔ)的用戶名和密碼認(rèn)證后,相互之間無法傳遞有效信息。為避免信息孤島的產(chǎn)生,因此需要建立一個連接各個業(yè)務(wù)系統(tǒng)的技術(shù)架構(gòu)和標(biāo)準(zhǔn),實現(xiàn)平臺統(tǒng)一化整合;通過對業(yè)務(wù)處理和異常處理實現(xiàn)監(jiān)管透明;通過將業(yè)務(wù)流程從應(yīng)用中抽離,實現(xiàn)業(yè)務(wù)流程的靈活安排,這樣就需要一套可以整合現(xiàn)有各個業(yè)務(wù)網(wǎng)站的信息共享平臺。 單點登錄的英文名稱為Single Sign-On,簡寫為SSO,它是一個用戶認(rèn)證的過程,允許用戶一次性進(jìn)行認(rèn)證之后,就訪問系統(tǒng)中不同的應(yīng)用;而不需要訪問每個應(yīng)用時,都重新輸入密碼。IBM對SSO有一個形象的解釋“單點登錄、全網(wǎng)漫游”。 SSO將一個企業(yè)內(nèi)部所有域中的用戶登錄和用戶賬號管理集中到一起,SSO的好處顯而易見:
對于內(nèi)部有多種應(yīng)用系統(tǒng)的企業(yè)來說,單點登錄的效果是十分明顯的。很多國際上的企業(yè)已經(jīng)將單點登錄作為系統(tǒng)設(shè)計的基本功能之一。 公司第一個版本的單點登陸系統(tǒng)從2005年運(yùn)行以來,從幾十個應(yīng)用系統(tǒng)擴(kuò)展到現(xiàn)在的幾百個系統(tǒng)。在應(yīng)用的過程中沒有很好的解決跨域名的問題,單點登陸客戶端代碼使用問題,應(yīng)用系統(tǒng)的訪問規(guī)則問題等都沒有很好的解決。 SSO的實現(xiàn)機(jī)制不盡相同,大體分為Cookie機(jī)制和Session機(jī)制兩大類。
目前大部分SSO產(chǎn)品采用的是Cookie機(jī)制,公司第一個版本的單點登陸系統(tǒng)也是如此,目前能夠找到的最好的開源單點登錄產(chǎn)品CAS也是采用Cookie機(jī)制。 CAS http://www./products/cas/,CAS單點登錄系統(tǒng)最早由耶魯大學(xué)開發(fā)。2004年12月,CAS成為JA-SIG中的一個項目。JA-SIG的全稱是Java Architectures Special Interest Group,是在高校中推廣和探討基于Java的開源技術(shù)的一個組織。CAS的優(yōu)點很多,例如設(shè)計理念先進(jìn)、體系結(jié)構(gòu)合理、配置簡單、客戶端支持廣泛、技術(shù)成熟等等。這也是我們這次SSO改造的參照產(chǎn)品。 以CAS為例,使用Cookie實現(xiàn)單點登錄的原理圖如圖1所示。
圖 1 使用Cookie實現(xiàn)單點登錄的原理圖
這樣,就不再需要用戶繼續(xù)輸入用戶名和密碼,從而實現(xiàn)了單點登錄。 注意,這種單點登錄體系中,并沒有通過http進(jìn)行密碼的傳遞(但是有用戶名的傳遞),因此是十分安全的。 CAS被設(shè)計為一個獨立的Web應(yīng)用,目前是通過若干個Java servlets來實現(xiàn)的。CAS必須運(yùn)行在支持SSL的web服務(wù)器至上。應(yīng)用程序可以通過三個URL路徑來使用CAS,分別是登錄URL(login URL),校驗URL(validation URL)和登出URL(logout URL)。
采用.NET 來實現(xiàn)CAS原理的SSO系統(tǒng),在第一個版本的SSO系統(tǒng)基礎(chǔ)上羅列一些問題,有的已經(jīng)是第一個版本的SSO系統(tǒng)中采用的方式。有些問題需要澄清的, 很多人談?wù)搯吸c登錄時,常常和統(tǒng)一用戶,以及單一用戶管理混淆了,要么誤認(rèn)為單點登錄自然實現(xiàn)了單一用戶管理;要么誤認(rèn)為統(tǒng)一用戶或者單一用戶管理就是單點登錄。實際上,這三個概念是有明確的區(qū)別的。 統(tǒng)一用戶就是指不同的系統(tǒng),使用同一套用戶處理的機(jī)制。
很顯然,統(tǒng)一用戶是單點登錄的基礎(chǔ),但是統(tǒng)一用戶并不意味著實現(xiàn)了單點登錄。 單一用戶管理則指所有的用戶管理工作都在唯一的地方進(jìn)行處理,而每個應(yīng)用程序不再保留自己的用戶管理功能。單一用戶管理和統(tǒng)一用戶管理的最大區(qū)別在于,統(tǒng)一用戶管理之后,每個應(yīng)用程序仍然保留自己的用戶管理功能,用于額外的屬性設(shè)置;而單一用戶管理時,每個應(yīng)用程序不再保留自己的用戶管理功能。 在企業(yè)應(yīng)用場景下,所有的用戶信息來自HR系統(tǒng),HR系統(tǒng)中包含的戶信息和部門信息,同時這些信息會存在于公司的活動目錄中。公司采用的是LDAP和數(shù)據(jù)庫連接方式相結(jié)合,正式員工登陸OA系統(tǒng)并不采用LDAP方式認(rèn)證,采用的RSA的token方式認(rèn)證,也就是數(shù)據(jù)庫方式認(rèn)證。對于忘記帶token卡和客戶服務(wù)部的外聘人員沒有token卡的,通過白名單方式允許他們通過LDAP方式認(rèn)證。第一個版本的單點登陸系統(tǒng)使用的HTTP,新版本的集成子系統(tǒng)使用https方式通訊。
術(shù)語解釋:
簡單說來,LDAP是一個得到關(guān)于人或者資源的集中、靜態(tài)數(shù)據(jù)的快速方式。LDAP協(xié)議是跨平臺的和標(biāo)準(zhǔn)的協(xié)議,因此應(yīng)用程序就不用為LDAP目錄放在什么樣的服務(wù)器上操心了。實際上,LDAP得到了業(yè)界的廣泛認(rèn)可,因為它是Internet的標(biāo)準(zhǔn)。產(chǎn)商都很愿意在產(chǎn)品中加入對LDAP的支持,因為他們根本不用考慮另一端(客戶端或服務(wù)端)是怎么樣的。LDAP服務(wù)器可以是任何一個開發(fā)源代碼或商用的LDAP目錄服務(wù)器(或者還可能是具有LDAP界面的關(guān)系型數(shù)據(jù)庫),因為可以用同樣的協(xié)議、客戶端連接軟件包和查詢命令與LDAP服務(wù)器進(jìn)行交互 |
|
|