1 SSO的概念
SSO全稱為Single Sign On,及單點登錄。是指在企業的多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。它包括可以將這次主要的登錄映射到其他應用中用于同一個用戶的登錄的機制。它是目前比較流行的企業業務整合的解決方案之一。
要真正實現SSO,需要基于以下主要功能:
1.1 統一認證系統
所有應用系統共享一個身份認證系統。統一的認證系統是SSO的前提之一,微軟的活動目錄(Active Directory)是一個常用的SSO認證工具。只要Windows客戶端加入域并開機登錄后,從活動目錄服務器上獲取登錄憑證,然后在訪問任何啟用Windows集成驗證的應用,由客戶端出具憑證,應用服務器通過活動目錄服務器驗證憑證,這是一個完整的SSO驗證過程。
上述過程中客戶端必須加入域并且服務器端應用程序必須是支持Windows集成驗證的應用;且客戶端和應用服務器必須位于同一個活動目錄森林。吉利汽車研究院(以下簡稱吉利研究院)的除了基于Windows身份驗證的系統,比如Exchange、SharePoint、OCS等,還存在大量的非Windows驗證的異構系統,如知識管理系統,Windchill,以及HR系統,SAP的ERP系統,以及可能的LAMP架構的WEB應用系統。以前也已經通過CAS的SSO解決方案實現了知識管理系統和AD之間的SSO。但是CAS存在版本更新比較慢、最新標準支持少,對NTLM支持不好、以及性能等問題。為了突破這些限制,讓更多的第三方異構應用能夠和Windows客戶端之間實現單點登錄,我們采用了微軟一個架設在活動目錄之上的SSO產品——ADFS,將基于Windows的SSO的擴展到了Internet以及非Windows系統,采用新的ADFS加上自己自定義開發的符合Web服務(WS)-*互操作性標準的SSO Filter。
1.2 統一組織架構:
吉利研究院通過微軟的活動目錄(以下簡稱AD)管控企業的統一組織架構,并通過整合各個系統的組織架構,通過讀取用戶的組織結構數據庫來獲取流程用戶的組織機構信息,并通過AD的改造,使之包含組織機構基本信息管理、崗位基本信息管理、崗位認證管理、擁有崗位的用戶管理等。
IT部門已經通過手工方式在現在的活動目錄中創建了部分組織結構。SSO首先必須解決跨系統的統一身份驗證和中央的組織結構來源。實現基于互動目錄的統一身份管理。
組織結構將會通過OU和安全組的混合方式實現。其原因在于:
OU是管理員可見的一種分層方式,對應用和最終用戶不可見。換言之,無法通過OU的分層快速實現用戶的組織結構信息查詢。但是OU支持管理權限的委派,方便管理員的維護。
安全組的組嵌套可以很容易實現組織結構到上下級導航關系。并且能夠為其他應用方便使用。通過組實現組織結構和權限控制是一種比較流行的LDAP數據建模方式,比如,Windchill中也是通過組實現組織結構和權限控制。
綜合上述原因,為了在活動目錄中實現組織結構信息,我們采用OU和安全組混合的建模方式。下面是一個AD中的示意圖。
圖1 活動目錄組織架構圖
2 SSO的應用
在吉利研究院,用戶的電腦都已經加入到AD域。 用戶在登錄他們的工作電腦后,在訪問各種應用的時候,包括Outlook、Lync、OWA、Sharepoint,知識管理系統等,無需重新輸入用戶名和密碼,這種單點登錄(SSO)的功能既方便了用戶的使用,也增強了系統安全性。
吉利研究院除了微軟的產品,還存在其他的在幾個大型的應用系統,包括在協作商務系統,PLM系統和SAP等,我們將通過導入ADFS的方式實現全面的可擴展的SSO。
2.1 協作商務系統的SSO應用
吉利協作商務系統本質上是一款C/S架構的應用系統,但是提供的登錄界面卻是一個HTML網頁程序。對于實現SSO,還是基于ADFS SSO框架,為協作商務系統登錄網站開發ADFS WEB AGENT。同時,在AD賬號和CPC的中文登錄名之間建立映射關系。比如,所有用戶在AD中顯示名必須是CPC系統中的中文登錄名。該方案的特點是安全性高,而且借助于ADFS的靈活架構,可以一套應用系統對應多套AD系統(無論是否在同一個森林還是沒有任何關系)。
2.2 知識管理系統的SSO應用
知識管理系統是研究院自主開發的知識管理平臺,其基本架構是Apache +Tomcat+Java+Oracle。目前已經實現了CAS+KERBEROS AGENT的SSO。只要重新開放一個ADFS WEB AGENT即可實現SSO。
2.3 Windchill的SSO應用
Windchill是PTC的PLM產品生命周期管理系統,是制造研發型企業最重要的業務系統,其基本架構和知識管理系統比較相似,也是Apache+Tomcat。但是,有兩個重要的差異導致目前沒有實現SSO。Windchill部分頁面上有Java Applet,這些Applet會通過RMI訪問服務器上的Java服務。而其連接中使用的是基本驗證方法。這導致Applet一定必須獲取到一個明文的用戶名和密碼;Windchill的Tomcat層需要訪問方法服務器,使用的也是RMI方式。所以,也必須使用明文的用戶名和密碼。
在典型的ADFS的SSO方案中,Application把用戶身份驗證的職責委托給了ADFS WEB AGENT插件,其本身不需要明文的密碼。因此,如果要實現真正安全的SSO方案,需要解決兩個難點:用戶密碼問題。一個用戶在登錄Windows后,然后訪問ADFS兼容應用系統時,應用系統上安裝的Web Agent插件會把用戶請求重定向到ADFS服務器。ADFS服務器通過KERBEROS/NTLM驗證過用戶后,再重定向到應用系統。重定向的請求中包含用戶信息的令牌(Token),插件解碼令牌,把用戶信息傳遞給Apache或者Tomcat。上述過程中,用戶的密碼沒有在網絡中傳輸過,所以無論是ADFS還是應用系統的Web Agent插件都沒有用戶的密碼。如果我們要復制類似的過程到Windchill,那么RMI的調用就會出現問題。用戶信息同步問題。AD中的用戶和Windchill的用戶是需要統一的。否則,AD驗證過的用戶在Windchill中不存在,顯然是不能訪問的。
針對上述難點,具體通過以下方案解決:Windchill上開發程序,將AD中的標注為Windchill用戶的AD賬號同步到Windchill系統。同步的目的地包括LDAP,也包括PLM內部的用戶數據庫。這個過程是批量運行。在Windchill系統中,開發密碼重置模塊。對于所有的非系統用戶,把用戶的密碼改為一個計算的密碼。計算的過程大致是根據一個唯一標識用戶的信息(用戶名,SID等)通過加密得到一個值,在編碼成字符串后作為密碼。開發Windchill的Web Agent,在用戶通過AD的驗證后,根據驗證過的用戶名計算得到密碼。插件將用戶名和密碼傳遞給Tomcat。
2.4 SAP的SSO應用
吉利研究院的SAP系統,主要模塊都將通過SAP的統一前端SAPgui登錄,而SAP本身是基于IBM小型機和AIX平臺。因為SAP是一個非常成熟的成品,從SAPgui到服務器端都已經有了大量的SSO成功案例,其ADFS SSO的架構類似,關鍵點在于開發一個安全驗證模塊,替換SAPgui默認的模塊,同時在SAP服務器端實現AD身份驗證。
3 總結
企業在經歷信息系統從無到有后,會面臨從單體應用到集成整合的問題,SSO給企業解決的是最基礎的身份驗證和系統登錄的問題,在這一問題解決后,才能進行更深層次的系統應用集成,比如跨系統的數據交互、統一權限管理、統一業務流程等都是基于SSO進行的企業信息化應用。
企業的SOA使信息系統變得更加靈活,并適應業務帶來的改變,信息系統既可以利用現有業務系統的功能,又可以準備在將來做一些變更來滿足業務和系統之間交互的需要,企業要最終實現SOA,SSO是必經之路。
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/
本文標題:企業應用系統的SSO