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