1. 程式人生 > >SSO(單點登入)解決方案實施經驗介紹

SSO(單點登入)解決方案實施經驗介紹

        單點登入(SSO-Single Sign On),是目前企業應用系統整合的一種流行的解決方案,主要解決的是在多個應用系統中,使用者只需要經過一次登入認證,就可以訪問所有相互信任的應用系統。很多軟體廠商都提供了SSO解決方案,主要有IBM、SUN、ORACLE、HP等。我實際接觸到的是yale大學的一個開源專案CAS做的單點登入,目前由JA-SIG組織開發(可參看http://developer.jasig.org),使用它作為單點登入元件的應用還是比較廣泛,論壇也很活躍,網上文章也很多,CAS在不斷版本升級,已經非常成熟,現在CAS的SSO最新版本為3.4.11。CAS主要包含兩部分:CASServer服務端、CASClient客戶端
CASClient支援很多的客戶端(這裡指單點登入系統中的各個 Web 應用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。
      我在一個集團公司工作期間,有許多產品、專案、子系統,需要單點登入整合,我們基於CAS原始碼二次開發產生的SSO元件,在集團內的各個專案中做實施。其中遇到了許多問題,通過不斷探索和解決問題,也積累了許多經驗,不斷成熟完善。對單點登入也有了更深入一些的認識。

        有些人認為單點登入就是隻是解決登入問題、或者只是解決認證問題。這樣認識是片面的,單點登入看起來功能很單一、明確,其實在進行應用系統整合的SSO整合時往往遇到應用系統個性化的登入認證功能(如不同客戶端語言、不同的認證方式等),各子系統有不同的身份認證信任關係(如不同產品線下的子系統的單點登入、聯邦單點登入等解決方案),還有其他應用系統延伸的需求(如統一使用者管理、子系統許可服務管理等),這些因素影響下在整合整合時,要根據具體情況統一考慮,往往要對應用系統進行一些改造,帶有一定的侵入性,SSO往往作為作為嵌入的元件,它的穩定性、可用性、易用性直接影響到應用系統的架構及功能,因此SSO整合是很重要的。作為一個完善的SSO元件,應當是輕量級的、對應用系統侵入性小、可以靈活擴充套件的。考慮應用系統的不同情況,有些應用系統執行多年,已經有比較成熟的登入認證模式,有些可能應用系統的邏輯中對認證邏輯耦合過緊,有些應用系統是不同語言寫的,這樣在做單點登入整合時,考慮到不同的應用系統特點。在SSO整合時,我們看看以往的工作,往往召集各應用系統專案主要技術人員,開會研討解決方案,有時要協調不同的SSO需求,綜合考慮SSO整合方案,這樣大包大攬的整合、異構系統異構解決(如外掛)等方式,有時由於整合時出現一些問題,導致干擾了應用系統的正常執行,對應用系統改造耦合過緊,增加了實施的難度、維護的工作量。理想的SSO元件應當是怎樣的?我認為應當是能夠在應用系統中無縫整合,提供一個即插即用的SSO解決方案,對應用系統改造或影響非常小,甚至讓使用者感覺不到使用了單點登入元件,只需要進行簡單的配置,即可擁有SSO應用功能。