蔡芳
摘要:一個(gè)企業(yè)的信息化建設(shè)過(guò)程是循序漸進(jìn)的,隨著業(yè)務(wù)需求及經(jīng)費(fèi)的變化,會(huì)逐步建立起處理各種業(yè)務(wù)的應(yīng)用系統(tǒng)。為了將各種應(yīng)用系統(tǒng)和數(shù)據(jù)資源集成到一個(gè)信息管理平臺(tái)之上,并以統(tǒng)一的用戶(hù)界面提供給用戶(hù),單點(diǎn)登錄是首先需要解決的問(wèn)題。本文介紹了一種通過(guò)統(tǒng)一用戶(hù)管理、單點(diǎn)登錄技術(shù),實(shí)現(xiàn)企業(yè)應(yīng)用系統(tǒng)集成的方法,解決了用戶(hù)一次登錄、全網(wǎng)通行的問(wèn)題。該方法已經(jīng)在作者所在單位得到應(yīng)用,取得了較好的應(yīng)用效果。
關(guān)鍵詞:統(tǒng)一用戶(hù),單點(diǎn)登錄,系統(tǒng)集成,門(mén)戶(hù)
中圖分類(lèi)號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)27-0188-03
Abstract: With the development of enterprise informationization,a wide variety of application are used in the enterprise .In order to integrate the arious application systems and data resources into a single information management platform, and provide users with a unified user interface, single sign-on is the first problem to be solved. This paper describes a method through uniform user management and single sign-on technology to achieve enterprise application integration. It soved the problem of a single login, surfing on the internet or intranet freely. This method has been applied in the authors institute, an achieved good effect.
Key words: Uniform User; Single Sign-on; System Integration; Enterprise Information Portal
隨著企業(yè)信息化水平的不斷提高,越來(lái)越多的應(yīng)用系統(tǒng)投入使用,例如OA系統(tǒng)、人力資源系統(tǒng)、項(xiàng)目管理系統(tǒng)、PDM系統(tǒng)等。這些獨(dú)立的應(yīng)用系統(tǒng)都有自己一套完整的用戶(hù)管理與權(quán)限認(rèn)證體系。用戶(hù)如果需要訪問(wèn)這些應(yīng)用系統(tǒng),就需要記住各個(gè)系統(tǒng)中的賬號(hào)、密碼,頻繁的在不同系統(tǒng)之間登錄切換。這樣給用戶(hù)帶來(lái)了很大的不方便,同時(shí)也容易引起系統(tǒng)安全性的降低。
企業(yè)信息門(mén)戶(hù)是一種應(yīng)用集成框架,它將各種應(yīng)用系統(tǒng)、數(shù)據(jù)資源和互聯(lián)網(wǎng)資源集成到一個(gè)信息管理平臺(tái)之上,并以統(tǒng)一的用戶(hù)界面提供給用戶(hù)。
在企業(yè)信息門(mén)戶(hù)平臺(tái)上,讓用戶(hù)僅輸入一次用戶(hù)名、密碼,通過(guò)一套安全身份認(rèn)證體系的身份鑒別,就可以分別登錄到OA系統(tǒng)、人力資源系統(tǒng)、項(xiàng)目管理系統(tǒng)、PDM系統(tǒng)等不同的應(yīng)用系統(tǒng),而不需要重復(fù)登錄進(jìn)行身份認(rèn)證。這是一個(gè)在企業(yè)應(yīng)用系統(tǒng)集成中迫切需要解決的問(wèn)題,而解決這個(gè)問(wèn)題的關(guān)鍵技術(shù)就是單點(diǎn)登錄技術(shù)(Single Sign-on,SSO)。
1 單點(diǎn)登錄技術(shù)
1.1單點(diǎn)登錄基本流程
單點(diǎn)登錄流程可以簡(jiǎn)單描述如圖1所示。用戶(hù)訪問(wèn)應(yīng)用系統(tǒng)時(shí),先檢查其是否登錄,如果登錄則進(jìn)入應(yīng)用系統(tǒng)中具體請(qǐng)求頁(yè)面,執(zhí)行后續(xù)操作;如果尚未登錄,則跳轉(zhuǎn)至用戶(hù)身份認(rèn)證系統(tǒng)中進(jìn)行登錄認(rèn)證。認(rèn)證系統(tǒng)首先根據(jù)用戶(hù)的登錄信息進(jìn)行身份校驗(yàn),如果通過(guò)校驗(yàn),則返回給用戶(hù)一個(gè)認(rèn)證的Ticket作為認(rèn)證憑據(jù),用戶(hù)之后再訪問(wèn)其他的應(yīng)用系統(tǒng)時(shí)就會(huì)帶上這個(gè)Ticket,作為認(rèn)證的憑據(jù)。應(yīng)用系統(tǒng)接收到用戶(hù)請(qǐng)求之后會(huì)把Ticket送到認(rèn)證系統(tǒng)中進(jìn)行校驗(yàn),檢查T(mén)icket的有效性。如果Ticket有效,則進(jìn)入應(yīng)用系統(tǒng)中具體請(qǐng)求頁(yè)面,執(zhí)行后續(xù)操作;否則跳轉(zhuǎn)至登錄頁(yè)面,對(duì)用戶(hù)身份進(jìn)行驗(yàn)收。
作為用戶(hù)憑據(jù)的Ticket具有時(shí)效性和不可偽造性,以此保證用戶(hù)登錄安全可信。
單點(diǎn)登錄中的認(rèn)證服務(wù)器為所有用戶(hù)提供身份認(rèn)證管理,所有沒(méi)有經(jīng)過(guò)身份認(rèn)證的匿名用戶(hù)訪問(wèn)應(yīng)用系統(tǒng)時(shí)都要求被重定向到登錄頁(yè)面進(jìn)行身份驗(yàn)證。未注冊(cè)的用戶(hù)需要先經(jīng)過(guò)注冊(cè)初始化后方可被驗(yàn)證通過(guò)。
1.2 統(tǒng)一用戶(hù)管理
在單點(diǎn)登錄流程中,可以發(fā)現(xiàn)對(duì)用戶(hù)進(jìn)行統(tǒng)一管理并認(rèn)證是最重要的環(huán)節(jié)。將所有應(yīng)用系統(tǒng)的用戶(hù)進(jìn)行統(tǒng)一管理并與之前的系統(tǒng)內(nèi)部賬戶(hù)進(jìn)行映射,不再需要各應(yīng)用系統(tǒng)進(jìn)行獨(dú)立認(rèn)證,通過(guò)統(tǒng)一認(rèn)證服務(wù)器來(lái)實(shí)現(xiàn)統(tǒng)一認(rèn)證。
統(tǒng)一用戶(hù)就需要首先在統(tǒng)一的用戶(hù)管理系統(tǒng)中進(jìn)行用戶(hù)錄入與維護(hù),然后通過(guò)系統(tǒng)API接口或WebService服務(wù)對(duì)系統(tǒng)資源、用戶(hù)角色、用戶(hù)權(quán)限進(jìn)行關(guān)系綁定,進(jìn)而達(dá)到對(duì)用戶(hù)進(jìn)行統(tǒng)一管理、對(duì)應(yīng)用系統(tǒng)權(quán)限進(jìn)行統(tǒng)一分配。
中國(guó)飛機(jī)強(qiáng)度研究所內(nèi)部有HR-人力資源管理系統(tǒng)對(duì)全部員工的信息進(jìn)行統(tǒng)一管理,因此HR系統(tǒng)就作為中央用戶(hù)數(shù)據(jù)源,用戶(hù)的部門(mén)、個(gè)人賬號(hào)、崗位等信息在該系統(tǒng)中進(jìn)行注冊(cè)。之后,利用WebService接口將用戶(hù)信息同步至門(mén)戶(hù)(Portal)的統(tǒng)一用戶(hù)身份庫(kù)中,由門(mén)戶(hù)的統(tǒng)一用戶(hù)管理系統(tǒng)再通過(guò)接口對(duì)賬戶(hù)進(jìn)行應(yīng)用系統(tǒng)的使用權(quán)限分配并將賬戶(hù)同步到相關(guān)的應(yīng)用系統(tǒng)中。
統(tǒng)一用戶(hù)管理流程如圖2所示。
目錄服務(wù)器是統(tǒng)一用戶(hù)管理與身份認(rèn)證的基礎(chǔ)平臺(tái),對(duì)用戶(hù)信息進(jìn)行統(tǒng)一管理,保證數(shù)據(jù)的一致性和完整性。本方法中通過(guò)輕量級(jí)目錄服務(wù)協(xié)議LDAP(Light weight Directory Access Protocol)將用戶(hù)及組織的信息以層次結(jié)構(gòu)、數(shù)據(jù)庫(kù)的方式進(jìn)行統(tǒng)一管理。
2 基于門(mén)戶(hù)的單點(diǎn)登錄實(shí)現(xiàn)
本方法中,通過(guò)企業(yè)門(mén)戶(hù)平臺(tái)負(fù)責(zé)管理企業(yè)各個(gè)應(yīng)用系統(tǒng)訪問(wèn)入口,將各應(yīng)用系統(tǒng)的身份認(rèn)證功能集中控制。實(shí)現(xiàn)用戶(hù)在門(mén)戶(hù)平臺(tái)認(rèn)證通過(guò)后,無(wú)需二次認(rèn)證,即可訪問(wèn)其他應(yīng)用系統(tǒng)的效果。
2.1 用戶(hù)同步
1)用戶(hù)數(shù)據(jù)初始化
用戶(hù)數(shù)據(jù)初始化分為兩種:一種是已正式運(yùn)行的應(yīng)用系統(tǒng)(例如OA系統(tǒng)),采用統(tǒng)一命名規(guī)則的用戶(hù)賬號(hào),因系統(tǒng)中的部分歷史數(shù)據(jù)跟用戶(hù)信息關(guān)聯(lián),用戶(hù)賬號(hào)命名規(guī)則改變后,為能保持歷史數(shù)據(jù)的正常查詢(xún)等操作,各業(yè)務(wù)系統(tǒng)自行在用戶(hù)數(shù)據(jù)庫(kù)中建立新、老賬號(hào)的對(duì)應(yīng)關(guān)系。一種是在建和未建的應(yīng)用系統(tǒng),必須嚴(yán)格按照命名規(guī)則新建系統(tǒng)賬號(hào)及密碼。
2)用戶(hù)數(shù)據(jù)同步
將統(tǒng)一用戶(hù)管理系統(tǒng)中的用戶(hù)及組織機(jī)構(gòu)數(shù)據(jù)單向同步到個(gè)應(yīng)用系統(tǒng)中,可以采用即時(shí)觸發(fā)、單向、增量同步方式。當(dāng)統(tǒng)一用戶(hù)系統(tǒng)的數(shù)據(jù)發(fā)生更改后,根據(jù)之前制定的身份同步規(guī)則,即時(shí)將變更的賬號(hào)數(shù)據(jù)同步到對(duì)應(yīng)業(yè)務(wù)系統(tǒng)中。同步實(shí)現(xiàn)方式可以通過(guò)數(shù)據(jù)庫(kù)中間表的方式,也可以通過(guò)Webservice的方式。
2.2 單點(diǎn)登錄
單點(diǎn)登錄方式可以根據(jù)業(yè)務(wù)系統(tǒng)的開(kāi)發(fā)需求分別采用兩種認(rèn)證方式:
(1)基于Cookie的認(rèn)證方式
Cookie方式是基于客戶(hù)端頁(yè)面中存儲(chǔ)的加密登錄信息,由業(yè)務(wù)系統(tǒng)提供驗(yàn)證頁(yè)面,自主解析用戶(hù)名、密碼并認(rèn)證,同時(shí)跳轉(zhuǎn)至獲取的目標(biāo)URL地址,實(shí)現(xiàn)單點(diǎn)登錄。業(yè)務(wù)系統(tǒng)需要對(duì)登錄認(rèn)證模塊做相應(yīng)的功能改造。
在用戶(hù)通過(guò)單點(diǎn)登錄系統(tǒng)的認(rèn)證后,單點(diǎn)登錄系統(tǒng)將通過(guò)注入機(jī)制在Cookie中添加表示用戶(hù)關(guān)聯(lián)的賬號(hào)信息和請(qǐng)求的URL地址,并將請(qǐng)求轉(zhuǎn)發(fā)到業(yè)務(wù)系統(tǒng),業(yè)務(wù)系統(tǒng)獲取賬號(hào)信息,確認(rèn)用戶(hù)身份后決定是否允許用戶(hù)跳轉(zhuǎn)至所請(qǐng)求的系統(tǒng)資源。
單點(diǎn)登錄系統(tǒng)在Cookie中注入的參數(shù)信息包括:
a) 系統(tǒng)編號(hào):對(duì)應(yīng)業(yè)務(wù)系統(tǒng)賬號(hào)、密碼(加密后)信息,通過(guò)#號(hào)分割,編碼由企業(yè)門(mén)戶(hù)分配;
b) url:用戶(hù)請(qǐng)求的目標(biāo)地址url。
業(yè)務(wù)系統(tǒng)獲取Cookie中的參數(shù)值的Java示例代碼如圖3、圖4所示:
(2)基于header的認(rèn)證方式
http-header認(rèn)證允許將已認(rèn)證的用戶(hù)身份信息插入到聯(lián)結(jié)的第三方服務(wù)器為目的地的請(qǐng)求的HTTP頭,HTTP頭信息使已聯(lián)結(jié)的第三方服務(wù)器上的應(yīng)用程序基于用戶(hù)身份信息執(zhí)行特定于用戶(hù)的操作。
客戶(hù)機(jī)瀏覽器請(qǐng)求收保護(hù)的第三方服務(wù)器上的應(yīng)用程序,通過(guò)網(wǎng)關(guān)認(rèn)證系統(tǒng)進(jìn)行身份認(rèn)證,建立新的基本認(rèn)證頭,將請(qǐng)求通過(guò)聯(lián)結(jié)發(fā)送到第三方服務(wù)器的應(yīng)用程序上,第三方服務(wù)器的應(yīng)用程序不需要用戶(hù)認(rèn)證,直接讀取基本認(rèn)證頭中的用戶(hù)身份信息,并進(jìn)行相應(yīng)的用戶(hù)操作。
認(rèn)證頭中存儲(chǔ)的header信息:iv-user
第三方應(yīng)用程序獲取header信息:request.getHeader("iv-user");
應(yīng)用系統(tǒng)獲取Http Header中的參數(shù)值的Java示例代碼如圖5所示:
3 應(yīng)用效果評(píng)價(jià)
在2016年初,中國(guó)飛機(jī)強(qiáng)度研究所對(duì)現(xiàn)有應(yīng)用系統(tǒng)進(jìn)行了改造升級(jí),將已有的和在建的應(yīng)用系統(tǒng)進(jìn)行統(tǒng)一整合。整合過(guò)程中采用了本文介紹的方法,完全實(shí)現(xiàn)了一次登錄、全網(wǎng)通行的目標(biāo)。1000余個(gè)賬號(hào)登錄各應(yīng)用系統(tǒng)效率高,未發(fā)現(xiàn)重復(fù)認(rèn)證或登錄延時(shí)等問(wèn)題,成功完成了對(duì)多個(gè)業(yè)務(wù)系統(tǒng)的集成整合工作。
4 結(jié)束語(yǔ)
本文針對(duì)企業(yè)在信息化建設(shè)過(guò)程中出現(xiàn)的各應(yīng)用系統(tǒng)用戶(hù)系統(tǒng)獨(dú)立、身份認(rèn)證系統(tǒng)獨(dú)立的現(xiàn)狀,深入分析、研究統(tǒng)一用戶(hù)管理技術(shù)、單點(diǎn)登錄技術(shù),在確保各應(yīng)用系統(tǒng)正常運(yùn)行不受較大干擾的前提下,實(shí)現(xiàn)了對(duì)OA系統(tǒng)、人力資源系統(tǒng)、項(xiàng)目管理系統(tǒng)、PDM系統(tǒng)等多個(gè)應(yīng)用系統(tǒng)的單點(diǎn)登錄。該方法在研究所內(nèi)部得到了高度認(rèn)可,同時(shí)也在其他行業(yè)得到了認(rèn)可,可以在行業(yè)內(nèi)部以及其他行業(yè)推廣應(yīng)用。
參考文獻(xiàn):
[1] 胡建鵬. 基于Portal的統(tǒng)一身份認(rèn)證與系統(tǒng)集成研究[J].計(jì)算機(jī)工程與科學(xué), 2010,32(12): 30-33.
[2] 吳茂傳,郭陽(yáng),胡昌平.基于Web的單點(diǎn)登錄技術(shù)在企業(yè)集成中的應(yīng)用[J].淮海工學(xué)院學(xué)報(bào)(自然科學(xué)版), 2008,17(1):29-32.
[3] 朱才祥.基于門(mén)戶(hù)的企業(yè)應(yīng)用系統(tǒng)集成技術(shù)研究[J].科技信息, 2014,13:79-80.
[4] http://www.baidu.com