周游舟
隨著科學(xué)技術(shù)的發(fā)展,信息化、網(wǎng)絡(luò)化時代的到來,以網(wǎng)站作為對外的展示窗口,進行內(nèi)外信息交流,已成為必然的趨勢。目前在中大型企事業(yè)單位信息化應(yīng)用中,多套系統(tǒng)的存在已是很普遍的現(xiàn)象,有自主開發(fā)的,有合作開發(fā)的,有向軟件供應(yīng)商采購的,這些軟件涵蓋面較廣,從常規(guī)的人力資源管理、財務(wù)信息管理、郵件系統(tǒng)到具體生產(chǎn)管理系統(tǒng)等;同一個用戶可能在不同的系統(tǒng)中都有相應(yīng)的帳號、密碼,這就經(jīng)常給用戶造成登錄系統(tǒng)的困擾。
單點登錄(Singl e Sign O n)是目前最適合、最普遍的業(yè)務(wù)系統(tǒng)整合的解決方案之一,旨在解決多應(yīng)用系統(tǒng)集成、交互的問題,在多個應(yīng)用系統(tǒng)中,通過用戶的一次登錄認證,即可獲得其他所需訪問的應(yīng)用系統(tǒng)的授權(quán)。在此集成條件下,不僅可以減少用戶經(jīng)常忘記應(yīng)用系統(tǒng)地址、用戶名及密碼的困擾,而且也可以大大減少運維人員的工作量。本文主要探討中大型企業(yè)中單點登錄系統(tǒng)集成的方案及技術(shù)原理。
企業(yè)信息化主要是指利用現(xiàn)在的信息技術(shù)手段,通過電腦、手機等移動設(shè)備對企業(yè)日常信息進行分享、存儲和處理,具體信息化系統(tǒng)可分為常用管理軟件和生產(chǎn)制造的專業(yè)軟件。常見的管理軟件有F MS(財務(wù)管理系統(tǒng))、OA(辦公自動化)、Mail(郵件系統(tǒng))、BPM(業(yè)務(wù)流程系統(tǒng))、ERP(企業(yè)資源計劃)、CRM(客戶關(guān)系管理)、HR(人力資源)、BBS(論壇)、Portal(門戶 /官網(wǎng))等,而生產(chǎn)制造行業(yè)的專業(yè)軟件比較多,且應(yīng)用相對比較窄,在此就不列出。
在以上這些系統(tǒng)中,各企業(yè)因不同行業(yè)、不同規(guī)模、不同發(fā)展階段等因素不同,最終選擇的軟件系統(tǒng)也參差不齊,但核心功能和思想是相通的。各軟件系統(tǒng)可能存在部分包含或全包含關(guān)系,如F MS一般都已經(jīng)包含在ERP系統(tǒng)的財務(wù)模塊。OA系統(tǒng)更是包羅萬象,其中可能包含H R、Mail、BBS、BPM等軟件的部分功能。對應(yīng)單點登錄系統(tǒng)集成方案來說,首先需要在這些系統(tǒng)中找到用戶信息的元數(shù)據(jù),很多企事業(yè)單元是以人力資源相關(guān)系統(tǒng)的數(shù)據(jù)作為集成的元數(shù)據(jù);其次就是元數(shù)據(jù)的對接與共享;最后就是以元數(shù)據(jù)為基礎(chǔ)的系統(tǒng)間集成。
使用UCenter進行同步操作,主要依托于UCenter server和UCenter client之間的API接口進行通訊。要使得通訊成為可能,首先要通過UCenter管理頁面注冊所有需同步的應(yīng)用,并驗證成功后才能進行通訊。下面以客戶端A、B、C連接UCenter進行登錄同步為例,簡要說明UCenter通訊原理。
如下圖所示,當(dāng)用戶發(fā)起登錄A系統(tǒng)驗證之后,UCenter客戶端與服務(wù)端需做如下交互過程:
客戶端A向UCenter服務(wù)端發(fā)起用戶同步登錄其他系統(tǒng)請求,具體過程是調(diào)用uc_api_post()發(fā)送到UCenter服務(wù)端下cont r ol/user.php下的onsynl ogin()接口。
UCenter服務(wù)端返回包含同步系統(tǒng)信息的字符串,返回字符串格式如下:
sr c="ht t p://xxxx.xxxx.xxxx.xxxx/api/uc. php?t ime=12345628& 而機載雙基雷達雜波具有嚴重距離依賴性,不同距離的訓(xùn)練單元對目標單元的影響不同。距離目標單元越遠的訓(xùn)練單元雜波對目標單元雜波的估計貢獻應(yīng)該越小。因此,可以用訓(xùn)練單元的協(xié)方差矩陣的加權(quán)平均作為目標單元雜波協(xié)方差矩陣的近似,如式(10)所示,式中λ=[λ1λ2…λL]是權(quán)系數(shù)矢量: code=0df9Y3rHKiyezhouyzruuYaDrfzht2URojjaffo21zhouyzYpdy%2FXzo1WwTEZhouYouZEOU% 2F%2BoA" reload="1">
其中,xxxx.xxxx.xxxx.xxxx對應(yīng)客戶端 B或C的地址,code里面包含了用戶相關(guān)信息,每一個系統(tǒng)對應(yīng)一個這樣的javascript字符串。
客戶端A輸出UCenter服務(wù)端返回的javascript字符串,同時也就通知了客戶端B和C執(zhí)行同步登錄操作。
客戶端B和C收到同步登錄請求后,解析和驗證time和code參數(shù),并把用戶參數(shù)發(fā)送到UCenter服務(wù)端獲取用戶信息,并完成相應(yīng)登錄操作。
UCenter登錄同步原理圖
通過以上交互過程分析發(fā)現(xiàn),UCenter單點同步登錄操作主要是服務(wù)端返回同步登錄系統(tǒng)信息腳本后,由客戶端瀏覽器通過javascript腳本以URL形式調(diào)用對應(yīng)系統(tǒng)的接口完成同步登錄。在企業(yè)實際應(yīng)用中,針對一些每個用戶都能登錄使用的系統(tǒng)可以比較方便的集成UCenter,如BBS、問答系統(tǒng)等。
隨著企業(yè)信息化的發(fā)展,業(yè)務(wù)系統(tǒng)的數(shù)量在不斷的增加,老的系統(tǒng)卻很難升級,也不能輕易的替換,在進行單點登錄集成的時候需要考慮如下問題:第一、由于各應(yīng)用系統(tǒng)往往都已經(jīng)處于穩(wěn)定運行狀態(tài),單點登錄系統(tǒng)的實現(xiàn)應(yīng)該對各應(yīng)用系統(tǒng)的登錄認證體系沖擊最小,各應(yīng)用系統(tǒng)原有的登錄流程依然可用。第二、由于企業(yè)中可能很多系統(tǒng)是購買或許外包開發(fā),應(yīng)用系統(tǒng)雖然提供對單點登錄的支持,但要求應(yīng)用系統(tǒng)用戶認證的設(shè)計符合其特定規(guī)范,這對采用某一統(tǒng)一登錄認證集成方式很難實現(xiàn)。第三、由于每個應(yīng)用系統(tǒng)都有自己的用戶庫,同一用戶可能在不同的應(yīng)用系統(tǒng)中使用不同的認證賬號。針對這些問題,基本上無法完全使用類似UCenter的統(tǒng)一集成方式,只能針對系統(tǒng)特性采取不同的集成方法。下面介紹常規(guī)單點登錄要素和幾種常見的單點登錄集成原理:
如下圖所示,常規(guī)單點登錄主要參與要素有:單點登錄發(fā)起系統(tǒng)(應(yīng)用系統(tǒng)A)、用戶驗證、令牌生成與解析、單點登錄接收系統(tǒng)(應(yīng)用系統(tǒng)B)四個要素。單點登錄發(fā)起系統(tǒng)是指用戶登錄系統(tǒng)的入口系統(tǒng),在很多企業(yè)里面是由企業(yè)門戶承擔(dān)單點登錄發(fā)起系統(tǒng)角色。用戶驗證是判斷一個用戶是否為合法用戶的處理過程,驗證方式多種多樣,比如賬號密碼驗證、二維碼掃描驗證、USB硬件驗證、域驗證等。令牌生成與解析是指系統(tǒng)之間信息參數(shù)傳遞處理方式,考慮到安全性,系統(tǒng)之間不直接傳遞信息本身,而這些信息由一串無規(guī)則的秘鑰串代替,當(dāng)接收方收到秘鑰串再調(diào)用秘鑰解析接口獲得相關(guān)信息,秘鑰串一般需考慮唯一性、時效性和調(diào)用方的確定性。單點登錄接收系統(tǒng)是指用戶登錄由其他系統(tǒng)調(diào)用單點登錄接口完成登錄過程的系統(tǒng)。在企業(yè)實際應(yīng)用中,根據(jù)實際系統(tǒng)情況可能需要采取不同要素的組合。例如,用戶驗證和令牌生成與解析是統(tǒng)一身份認證系統(tǒng)的部分功能,或單點登錄發(fā)起系統(tǒng)、用戶驗證、令牌生成與解析三者功能是由企業(yè)門戶系統(tǒng)提供都是可行的。在這些要素組合過程中,如果被分在不同系統(tǒng),那么需要特別關(guān)注的問題是要素之間調(diào)用的安全性問題。怎么解決調(diào)用安全性問題呢?常規(guī)方式有:第一、內(nèi)外網(wǎng)或網(wǎng)段隔離,如系統(tǒng)之間的調(diào)用走內(nèi)網(wǎng)IP,只有最終客戶端跳轉(zhuǎn)才走外網(wǎng)地址。第二、系統(tǒng)注冊,調(diào)用的時候帶上參數(shù)驗證,如IP、MAC驗證,系統(tǒng)賬號、密碼驗證等。第三、調(diào)用地址添加時間戳和加密簽名驗證。
常規(guī)單點登錄原理圖
在企業(yè)應(yīng)用系統(tǒng)中,難免會碰到集成微軟系域賬號系統(tǒng),例如,Exchange系統(tǒng)、Shar epoint系統(tǒng)等。然而,微軟系系統(tǒng)集成基本上要求是域賬號集成或按照應(yīng)用系統(tǒng)提供的方式集成,但企業(yè)中自主開發(fā)的集成方式往往不支持微軟系集成要求。下面以Exchange集成舉例說明,查詢微軟官方資料獲得單點登錄集成途徑有:第一,把需集成的應(yīng)用系統(tǒng)和Exchange一起部署在微軟的ISA防火墻內(nèi),通過獲取ISA防火墻的token,并傳遞給Exchange完成單點登錄功能。第二、用戶使用域賬號登錄微軟操作系統(tǒng),用戶瀏覽器和Exchange簡單配置完成單點登錄集成。第三、使用用戶賬號和密碼調(diào)用Exchange接口完成單點登錄集成。第一和第二種方式,集成方式編程工作量較小,可以說基本上不用編程,全部按照說明文檔配置;但是對系統(tǒng)環(huán)境要求比較特殊,離不開微軟域環(huán)境,很難在非W indows操作系統(tǒng)下使用。第三種方式,編程工作量相對比較大,而且要涉及到用戶賬號和密碼同步問題,但是可控性高、對操作系統(tǒng)基本沒有特殊要求;在實際應(yīng)用中可以通過中間接口解決賬號密碼映射關(guān)系,再通過常規(guī)單點登錄方式集成。
已有老系統(tǒng)因系統(tǒng)廠商、用途、版本不同,可以說集成方式千奇百怪,但集成思路是一致的。下面以作者集成國內(nèi)知名郵件系統(tǒng)CoreMail和開源社交系統(tǒng)ThinkSNS為例說明。對于CoreMail的集成主要思路是:首先找到應(yīng)用系統(tǒng)與CoreMail賬號映射關(guān)系,然后根據(jù)映射的郵箱賬號通過CoreMail接口獲得SID,最后用戶客戶端根據(jù)SID和相關(guān)參數(shù)進行單點登錄跳轉(zhuǎn)。參照上面常規(guī)單點登錄要素會發(fā)現(xiàn),CoreMail單點登錄集成思路與常規(guī)單點登錄思路一致,CoreMail只是把令牌生成與解析和單點登錄接收系統(tǒng)合并在一起而已,至于調(diào)用安全性解決方案也是安全性常規(guī)方式所提及。對應(yīng)ThinkSNS的集成思路也是類似,首先找到應(yīng)用系統(tǒng)與ThinkSNSl賬號映射關(guān)系,其次根據(jù)映射的社交系統(tǒng)賬號調(diào)用ThinkSNS接口,接口會返回類似UCenter服務(wù)端返回的javascript腳本,腳本包含跳轉(zhuǎn)地址、令牌等信息,最后客戶端瀏覽器執(zhí)行腳本并單點登錄到社交系統(tǒng)??傊容^成熟和安全的單點登錄集成思路基本類似,只是變通使用不同的組合和參數(shù)方式而已。
代填賬號和密碼單點登錄是指應(yīng)用系統(tǒng)A已經(jīng)知道應(yīng)用系統(tǒng)B的賬號和密碼,當(dāng)用戶登錄應(yīng)用系統(tǒng)A后不再通過輸入賬號和密碼方式登錄到應(yīng)用系統(tǒng)B,但對應(yīng)用系統(tǒng)B來說用戶還是采用輸入賬號和密碼認證方式進入系統(tǒng)。下面分別介紹C/S、B/S下的常規(guī)實現(xiàn)原理:
C/S系統(tǒng)代填方式的實現(xiàn),需要用戶操作系統(tǒng)安裝一個代填服務(wù),首先注冊被代填系統(tǒng)的信息,包含不限于啟動路徑、進程名稱、登錄窗體名稱、賬號控件名稱、密碼控件名稱、登錄空間名稱等信息,其次代填服務(wù)時刻監(jiān)控著用戶客戶端發(fā)送的代填請求(客戶端的代填請求地址是本機和生成的令牌),當(dāng)收到用戶請求后,如果沒有應(yīng)用程序進程,則啟動應(yīng)用程序,并找到對應(yīng)賬號和密碼的句柄。最后代填服務(wù)使用令牌調(diào)用服務(wù)獲得賬號和密碼,并通過句柄填入對應(yīng)賬號框和密碼框執(zhí)行登錄操作。
B/S系統(tǒng)代填方式的實現(xiàn)有多種方式,一種方式是與C/S代填方式類似,首先注冊被代填系統(tǒng)的信息,包含不限于登錄U R L地址,用戶名id,密碼id,登錄按鈕id等,然后與C/S方式一樣后臺獲取賬號和密碼后再通過id注入賬號和密碼執(zhí)行登錄。另一種方式是在被代填系統(tǒng)引入javascript腳本或腳本文件,當(dāng)用戶單點打開登錄頁面的時候,在U R L地址上添加令牌或用戶加密信息,然后由j avascript腳本解析添加的信息并調(diào)用服務(wù)獲得最終賬號和密碼信息,最后由javascript腳本完成單點登錄操作。
共享Cookie和參數(shù)加密實現(xiàn)單點登錄集成方式是相對比較簡單和不安全的實現(xiàn)方式,本作者不太推薦使用,但在企業(yè)應(yīng)用中對于不太重要的應(yīng)用系統(tǒng)的集成也是一種選擇。
共享Cookie的原理是使用Cookie作為系統(tǒng)之間傳遞信息的媒介,存放用戶憑證。當(dāng)用戶觸發(fā)系統(tǒng)發(fā)起單點登錄之后,應(yīng)用返回一個加密的Cookie;用戶訪問單點登錄接收系統(tǒng)的時候,攜帶上這個加密cookie,授權(quán)應(yīng)用系統(tǒng)然后再解密Cookie并進行校驗,校驗通過則登錄該系統(tǒng)。這種方式對于一些對用戶信息非重要系統(tǒng)可以考慮使用,例如意見箱系統(tǒng)、內(nèi)部社區(qū)等系統(tǒng)。主要是這種方式存在兩方面的問題,第一、Cookie相對不安全并且與瀏覽器設(shè)置比較密切。第二、Cookie跨域訪問問題,雖然Cookie跨域可以通過jsonp等技術(shù)解決,但這給使用共享Cookie簡單理念蒙上了一層陰影。
參數(shù)加密傳輸實現(xiàn)單點登錄的原理是用戶登錄單點登錄發(fā)起系統(tǒng)之后,系統(tǒng)后端把用戶等關(guān)鍵信息與時間戳等必要參數(shù)組合在一起并使用對稱加密方式加密為一個秘鑰串,然后跳轉(zhuǎn)到單點登錄接收系統(tǒng)的時候攜帶上秘鑰串;接收系統(tǒng)收到秘鑰串解密后,核對時間戳是否超時和秘鑰串是否使用過,最后進行用戶登錄。參數(shù)加密傳輸實現(xiàn)單點登錄的關(guān)鍵點在于防止加密方法泄露以及記錄并核對秘鑰串防止二次使用。根據(jù)企業(yè)和系統(tǒng)特性,適時在企業(yè)內(nèi)部網(wǎng)絡(luò)選擇參數(shù)加密方式實現(xiàn)單點登錄也是一種不錯的選擇。
綜上所述,企業(yè)系統(tǒng)集成單點登錄方案有很多種選擇,每一種方案都有自身的優(yōu)勢和適配環(huán)境。對于企業(yè)單點登錄方案選擇和系統(tǒng)集成來說,作者建議企業(yè)內(nèi)部要做如下工作:首先,需要選定一種“標準”單點登錄集成方案或一套專用單點登錄集成系統(tǒng),新建系統(tǒng)都按標準集成。其次考慮系統(tǒng)用戶賬號的主數(shù)據(jù)源和統(tǒng)一標準,特殊情況下不能統(tǒng)一才考慮賬號映射。最后根據(jù)系統(tǒng)特性分批分方案實施單點登錄應(yīng)用集成。單點登錄實施涉及面廣,是一項迭代工程,需要分析各系統(tǒng)特性,包括登錄方式、用戶信息存儲與同步等細節(jié),不能盲目的依靠購買系統(tǒng)解決問題。
[1]鄧勁生,鄭倩冰.信息系統(tǒng)集成技術(shù)[M].北京:清華大學(xué)出版社,2012.
[2]高爽.完全跨域的單點登錄[EB/OL].http://blog.csdn.net/ghsau/article/details/20545513,2014-03-05.
[3]凌承一.單點登錄原理與簡單實現(xiàn)[EB/OL].http://www.cnblogs.com/ywlaker/p/6113927.html,2016-11-29.
[4]王洪濤.單點登錄原理與簡單實現(xiàn)[EB/O L].https://www.ibm.com/developerworks/cn/websphere/library/techarticles/1202_wanght_sso/1202_wanght_sso.html,2012-02-09.