企業單點登錄方案與系統集成應用


文/周游舟

“摘  要”  信息化建設是現代企業管理中的重要手段,優秀的信息化建設離不開多系統、多階段的建設。在這建設過程中,企業必然會碰到多系統、多入口、多帳號、多密碼的問題,為了解決這些問題,企業可能會引入企業門戶為入口的統一登錄方式,由企業門戶統一集成各系統。不管是引入系統還是單獨開發集成系統,都離不開單點登錄方案的選擇與實施。因企業應用中的單點登錄重點關注登錄功能,對單點退出功能相對不是很重視;本文主要對企業信息化集成中的單點登錄中的登錄方案進行研究,首先對企業內部常用信息化系統進行簡介,其次介紹UCenter單點登錄原理,再次介紹企業常用單點登錄集成原理,最后總結歸納問題分析。通過對門戶單點登錄方案分析對提高企業系統集成水平具有重要的意義。

“關鍵詞”  單點登錄 系統集成 UCenter 企業門戶

    隨着科學技術的發展,信息化、網絡化時代的到來,以網站作為對外的展示窗口,進行內外信息交流,已成為必然的趨勢。目前在中大型企事業單位信息化應用中,多套系統的存在已是很普遍的現象,有自主開發的,有合作開發的,有向軟件供應商采購的,這些軟件涵蓋面較廣,從常規的人力資源管理、財務信息管理、郵件系統到具體生產管理系統等;同一個用戶可能在不同的系統中都有相應的帳號、密碼,這就經常給用戶造成登錄系統的困擾。

單點登錄(Single Sign On)是目前最適合、最普遍的業務系統整合的解決方案之一,旨在解決多應用系統集成、交互的問題,在多個應用系統中,通過用戶的一次登錄認證,即可獲得其他所需訪問的應用系統的授權。在此集成條件下,不僅可以減少用戶經常忘記應用系統地址、用戶名及密碼的困擾,而且也可以大大減少運維人員的工作量。本文主要探討中大型企業中單點登錄系統集成的方案及技術原理。

1 企業信息化系統

  企業信息化主要是指利用現在的信息技術手段,通過電腦、手機等移動設備對企業日常信息進行分享、存儲和處理,具體信息化系統可分為常用管理軟件和生產制造的專業軟件。常見的管理軟件有FMS(財務管理系統)、OA(辦公自動化)、Mail(郵件系統)、BPM(業務流程系統)、ERP(企業資源計划)、CRM(客戶關系管理)、HR(人力資源)、BBS(論壇)、Portal(門戶/官網)等,而生產制造行業的專業軟件比較多,且應用相對比較窄,在此就不列出。

  在以上這些系統中,各企業因不同行業、不同規模、不同發展階段等因素不同,最終選擇的軟件系統也參差不齊,但核心功能和思想是相通的。各軟件系統可能存在部分包含或全包含關系,如FMS一般都已經包含在ERP系統的財務模塊。OA系統更是包羅萬象,其中可能包含HR、Mail、BBS、BPM等軟件的部分功能。對應單點登錄系統集成方案來說,首先需要在這些系統中找到用戶信息的元數據,很多企事業單元是以人力資源相關系統的數據作為集成的元數據;其次就是元數據的對接與共享;最后就是以元數據為基礎的系統間集成。

2 UCenter單點登錄原理

    UCenter是一款開放軟件,主要面向中小站長。通過UCenter站長可以無縫整合Comsenz系列產品,實現用戶的一站式注冊、登錄、退出以及社區其他數據的交互的php框架;當然也可以很方便的按照API說明集成其他軟件系統。

    使用UCenter進行同步操作,主要依托於UCenter server 和UCenter client之間的API接口進行通訊。要使得通訊成為可能,首先要通過UCenter管理頁面注冊所有需同步的應用,並驗證成功后才能進行通訊。下面以客戶端A、B、C連接UCenter進行登錄同步為例,簡要說明UCenter通訊原理。

 

 

UCenter登錄同步原理圖

    如上圖所示,當用戶發起登錄A系統驗證之后,UCenter客戶端與服務端需做如下交互過程:

(1)客戶端A向UCenter服務端發起用戶同步登錄其他系統請求,具體過程是調用uc_api_post()發送到UCenter服務端下control/user.php下的onsynlogin()接口。

(2)UCenter服務端返回包含同步系統信息的<script src=""></script>字符串,返回字符串格式如下:

<script type="text/javascript" src="http://xxxx.xxxx.xxxx.xxxx/api/uc.php?time=12345628&amp;code=0df9Y3rHKiyezhouyzruuYaDrfzht2URojjaffo21zhouyzYpdy%2FXzo1WwTEZhouYouZEOU%2F%2BoA" reload="1" ></script>

其中,xxxx.xxxx.xxxx.xxxx對應客戶端B或C的地址,code里面包含了用戶相關信息,每一個系統對應一個這樣的javascript字符串。

(3)客戶端A輸出UCenter服務端返回的javascript字符串,同時也就通知了客戶端B和C執行同步登錄操作。

(4)客戶端B和C收到同步登錄請求后,解析和驗證time和code參數,並把用戶參數發送到UCenter服務端獲取用戶信息,並完成相應登錄操作。

    通過以上交互過程分析發現,UCenter單點同步登錄操作主要是服務端返回同步登錄系統信息腳本后,由客戶端瀏覽器通過javascript腳本以URL形式調用對應系統的接口完成同步登錄。在企業實際應用中,針對一些每個用戶都能登錄使用的系統可以比較方便的集成UCenter,如BBS、問答系統等。

3 企業常用單點登錄集成原理

    隨着企業信息化的發展,業務系統的數量在不斷的增加,老的系統卻很難升級,也不能輕易的替換,在進行單點登錄集成的時候需要考慮如下問題:第一、由於各應用系統往往都已經處於穩定運行狀態,單點登錄系統的實現應該對各應用系統的登錄認證體系沖擊最小,各應用系統原有的登錄流程依然可用。第二、由於企業中可能很多系統是購買或許外包開發,應用系統雖然提供對單點登錄的支持,但要求應用系統用戶認證的設計符合其特定規范,這對采用某一統一登錄認證集成方式很難實現。第三、由於每個應用系統都有自己的用戶庫,同一用戶可能在不同的應用系統中使用不同的認證賬號。針對這些問題,基本上無法完全使用類似UCenter的統一集成方式,只能針對系統特性采取不同的集成方法。下面介紹常規單點登錄要素和幾種常見的單點登錄集成原理:

3.1常規單點登錄要素介紹

 

常規單點登錄原理

    如上圖所示,常規單點登錄主要參與要素有:單點登錄發起系統(應用系統A)、用戶驗證、令牌生成與解析、單點登錄接收系統(應用系統B)四個要素。單點登錄發起系統是指用戶登錄系統的入口系統,在很多企業里面是由企業門戶承擔單點登錄發起系統角色。用戶驗證是判斷一個用戶是否為合法用戶的處理過程,驗證方式多種多樣,比如賬號密碼驗證、二維碼掃描驗證、USB硬件驗證、域驗證等。令牌生成與解析是指系統之間信息參數傳遞處理方式,考慮到安全性,系統之間不直接傳遞信息本身,而這些信息由一串無規則的秘鑰串代替,當接收方收到秘鑰串再調用秘鑰解析接口獲得相關信息,秘鑰串一般需考慮唯一性、時效性和調用方的確定性。單點登錄接收系統是指用戶登錄由其他系統調用單點登錄接口完成登錄過程的系統。在企業實際應用中,根據實際系統情況可能需要采取不同要素的組合。例如,用戶驗證和令牌生成與解析是統一身份認證系統的部分功能,或單點登錄發起系統、用戶驗證、令牌生成與解析三者功能是由企業門戶系統提供都是可行的。在這些要素組合過程中,如果被分在不同系統,那么需要特別關注的問題是要素之間調用的安全性問題。怎么解決調用安全性問題呢?常規方式有:第一、內外網或網段隔離,如系統之間的調用走內網IP,只有最終客戶端跳轉才走外網地址。第二、系統注冊,調用的時候帶上參數驗證,如IP、MAC驗證,系統賬號、密碼驗證等。第三、調用地址添加時間戳和加密簽名驗證。

3.2微軟系域賬號登錄集成

    在企業應用系統中,難免會碰到集成微軟系域賬號系統,例如,Exchange系統、Sharepoint系統等。然而,微軟系系統集成基本上要求是域賬號集成或按照應用系統提供的方式集成,但企業中自主開發的集成方式往往不支持微軟系集成要求。下面以Exchange集成舉例說明,查詢微軟官方資料獲得單點登錄集成途徑有:第一,把需集成的應用系統和Exchange一起部署在微軟的ISA防火牆內,通過獲取ISA防火牆的token,並傳遞給Exchange完成單點登錄功能。第二、用戶使用域賬號登錄微軟操作系統,用戶瀏覽器和Exchange簡單配置完成單點登錄集成。第三、使用用戶賬號和密碼調用Exchange接口完成單點登錄集成。第一和第二種方式,集成方式編程工作量較小,可以說基本上不用編程,全部按照說明文檔配置;但是對系統環境要求比較特殊,離不開微軟域環境,很難在非Windows操作系統下使用。第三種方式,編程工作量相對比較大,而且要涉及到用戶賬號和密碼同步問題,但是可控性高、對操作系統基本沒有特殊要求;在實際應用中可以通過中間接口解決賬號密碼映射關系,再通過常規單點登錄方式集成。

3.3已有老系統單點登錄集成

    已有老系統因系統廠商、用途、版本不同,可以說集成方式千奇百怪,但集成思路是一致的。下面以作者集成國內知名郵件系統CoreMail和開源社交系統ThinkSNS為例說明。對於CoreMail的集成主要思路是:首先找到應用系統與CoreMail賬號映射關系,然后根據映射的郵箱賬號通過CoreMail接口獲得SID,最后用戶客戶端根據SID和相關參數進行單點登錄跳轉。參照上面常規單點登錄要素會發現,CoreMail單點登錄集成思路與常規單點登錄思路一致,CoreMail只是把令牌生成與解析和單點登錄接收系統合並在一起而已,至於調用安全性解決方案也是安全性常規方式所提及。對應ThinkSNS的集成思路也是類似,首先找到應用系統與ThinkSNSl賬號映射關系,其次根據映射的社交系統賬號調用ThinkSNS接口,接口會返回類似UCenter服務端返回的javascript腳本,腳本包含跳轉地址、令牌等信息,最后客戶端瀏覽器執行腳本並單點登錄到社交系統。總之,比較成熟和安全的單點登錄集成思路基本類似,只是變通使用不同的組合和參數方式而已。

3.4代填賬號和密碼單點登錄集成

    代填賬號和密碼單點登錄是指應用系統A已經知道應用系統B的賬號和密碼,當用戶登錄應用系統A后不再通過輸入賬號和密碼方式登錄到應用系統B,但對應用系統B來說用戶還是采用輸入賬號和密碼認證方式進入系統。下面分別介紹C/S、B/S下的常規實現原理:

    C/S系統代填方式的實現,需要用戶操作系統安裝一個代填服務,首先注冊被代填系統的信息,包含不限於啟動路徑、進程名稱、登錄窗體名稱、賬號控件名稱、密碼控件名稱、登錄空間名稱等信息,其次代填服務時刻監控着用戶客戶端發送的代填請求(客戶端的代填請求地址是本機和生成的令牌),當收到用戶請求后,如果沒有應用程序進程,則啟動應用程序,並找到對應賬號和密碼的句柄。最后代填服務使用令牌調用服務獲得賬號和密碼,並通過句柄填入對應賬號框和密碼框執行登錄操作。

    B/S系統代填方式的實現有多種方式,一種方式是與C/S代填方式類似,首先注冊被代填系統的信息,包含不限於登錄URL地址,用戶名id,密碼id,登錄按鈕id等,然后與C/S方式一樣后台獲取賬號和密碼后再通過id注入賬號和密碼執行登錄。另一種方式是在被代填系統引入javascript腳本或腳本文件,當用戶單點打開登錄頁面的時候,在URL地址上添加令牌或用戶加密信息,然后由javascript腳本解析添加的信息並調用服務獲得最終賬號和密碼信息,最后由javascript腳本完成單點登錄操作。

3.5共享Cookie與參數加密單點登錄集成

    共享Cookie和參數加密實現單點登錄集成方式是相對比較簡單和不安全的實現方式,本作者不太推薦使用,但在企業應用中對於不太重要的應用系統的集成也是一種選擇。

    共享Cookie的原理是使用Cookie作為系統之間傳遞信息的媒介,存放用戶憑證。當用戶觸發系統發起單點登錄之后,應用返回一個加密的Cookie;用戶訪問單點登錄接收系統的時候,攜帶上這個加密cookie,授權應用系統然后再解密Cookie並進行校驗,校驗通過則登錄該系統。這種方式對於一些對用戶信息非重要系統可以考慮使用,例如意見箱系統、內部社區等系統。主要是這種方式存在兩方面的問題,第一、Cookie相對不安全並且與瀏覽器設置比較密切。第二、Cookie跨域訪問問題,雖然Cookie跨域可以通過jsonp等技術解決,但這給使用共享Cookie簡單理念蒙上了一層陰影。

    參數加密傳輸實現單點登錄的原理是用戶登錄單點登錄發起系統之后,系統后端把用戶等關鍵信息與時間戳等必要參數組合在一起並使用對稱加密方式加密為一個秘鑰串,然后跳轉到單點登錄接收系統的時候攜帶上秘鑰串;接收系統收到秘鑰串解密后,核對時間戳是否超時和秘鑰串是否使用過,最后進行用戶登錄。參數加密傳輸實現單點登錄的關鍵點在於防止加密方法泄露以及記錄並核對秘鑰串防止二次使用。根據企業和系統特性,適時在企業內部網絡選擇參數加密方式實現單點登錄也是一種不錯的選擇。

4總結

    綜上所述,企業系統集成單點登錄方案有很多種選擇,每一種方案都有自身的優勢和適配環境。對於企業單點登錄方案選擇和系統集成來說,作者建議企業內部要做如下工作:首先,需要選定一種“標准”單點登錄集成方案或一套專用單點登錄集成系統,新建系統都按標准集成。其次考慮系統用戶賬號的主數據源和統一標准,特殊情況下不能統一才考慮賬號映射。最后根據系統特性分批分方案實施單點登錄應用集成。單點登錄實施涉及面廣,是一項迭代工程,需要分析各系統特性,包括登錄方式、用戶信息存儲與同步等細節,不能盲目的依靠購買系統解決問題。

 

[參考文獻]

[1]鄧勁生,鄭倩冰.信息系統集成技術.清華大學出版社,2012

[2] 高爽.完全跨域的單點登錄.http://blog.csdn.net/ghsau/article/details/20545513,2014-03-05

[3]凌承一.單點登錄原理與簡單實現.http://www.cnblogs.com/ywlaker/p/6113927.html,2016-11-29

[4] 王洪濤.單點登錄原理與簡單實現.https://www.ibm.com/developerworks/cn/websphere/library/techarticles/1202_wanght_sso/1202_wanght_sso.html,2012-02-09

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM