摘要:通過闡述基于Sun Java System Access Manager(簡稱AM)的單點登錄解決方案,介紹了單點登錄系統的系統原理、體系架構,以及實現的技術。
關鍵詞:單點登錄;統一身份認證;認證接口
中圖法分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2008)05-10871-04
1 引言
伴隨著數字信息化程度的提高,企業、政府、學校和研究機構中運行的應用子系統越來越多。雖然各系統的功能有別,但都需要鑒別使用者的身份,這樣就帶來了一個突出的問題:眾多用戶面對多個系統要重復輸入帳號、口令等信息,不僅煩瑣,更重要的是容易出現口令丟失,一旦口令泄漏不僅會造成不可估量的損失。
鑒于此,在一個企業或者學校的范圍內,可以使用統一身份認證系統。統一身份認證系統對身份認證數據規定統一的格式,便于擴充和修改;采用統一的身份信息數據庫,避免了各個應用系統的身份信息數據庫的數據更新,同時增加了數據安全性;采用統一的身份認證機制和接口,避免了各種應用系統的重復開發,便于應用系統的集成。
統一身份認證中要解決的一個重要問題是:各應用系統用戶名和口令不統一,期望提供一套方便、安全的口令認證方法,讓用戶只要一套用戶名和口令就可以使用網絡上他有權使用的所有業務系統,即滿足用戶的單點登錄(SSO)。
2 系統原理與體系架構
單點登錄系統的根本原理是保持用戶的會話(session)狀態。用戶經過一次認證就可建立單點登錄會話,每個單點登錄會話對應于一個令牌(token),用戶訪問應用系統時向應用系統傳遞單點登錄令牌,應用系統能夠根據令牌識別用戶的認證狀態,從而使一次認證能夠被多個應用系統認可,避免了重復認證。
本文將采用Sun Java System Access Manager(簡稱AM)作為實現單點登錄的底層技術平臺。
根據上述原理,AM對單點登錄提供的SDK級別的支持,其中包括單點登錄令牌的創建與驗證。以WEB應用的單點登錄為例:用戶通過AM的認證頁面進行認證,認證通過之后,平臺為該用戶創建一個單點登錄令牌,并將該令牌的ID通過cookie返回至用戶瀏覽器;當用戶訪問WEB應用系統時,單點登錄令牌ID自動通過cookie傳遞至WEB應用系統,WEB應用系統可以通過單點登錄令牌ID還原單點登錄令牌,并向Access Manager驗證單點登錄令牌是否有效。如果有效,則應用系統可以從單點登錄令牌獲取用戶身份信息,而不再需要用戶進行再次認證。對于C/S結構的應用,單點登錄過程是類似的,只是單點登錄令牌ID的傳遞方式不同。

圖1 單點登錄SDK的體系結構圖
單點登錄會話的初始狀態是無效,表示單點登錄會話雖然已經創建并被分配給用戶,但用戶尚未通過有效認證。無效的單點登錄會話也通過一個單點登錄會話令牌身份,并存儲在用戶瀏覽器的cookie中。當用戶認證成功之后,單點登錄會話變為有效狀態。該單點登錄會話仍以同一個單點登錄會話令牌身份,用戶瀏覽器中的cookie不變,只是服務器維護的會話狀態變為有效。單點登錄會話可以因為以下原因而銷毀:
(1)客戶端空閑時間達到最大空閑時間;
(2)會話時間達到最大會話有效時間;
(3)由于用戶登出而顯式銷毀會話。
會話銷毀之后,客戶端cookie中保存的單點登錄會話令牌身份仍然存在,只是與該令牌相關的會話信息已經在AM中刪除。
單點登錄會話的生命期由AM進行管理,會話的生命期特性可以通過配置選項進行定制。在AM中,與單點登錄會話相關的屬性是通過“會話”服務(session service)進行管理的,這些可配置屬性均為動態類型的屬性,可以針對組織、角色和服務配置,并可被繼承。
3 認證方式設計
單點登錄系統采用認證方式與登錄方式分層的設計,可平滑擴展多種登錄方式,如用戶名口令、證書、智能卡等,支持多級登錄認證機制。
為防止暴力破解,提供附加圖像碼的方式增加安全性。

圖2 單點登錄會話的生命周期
3.1用戶認證方式
單點登錄系統提供了多種內置的登錄方式。
(1)LDAP認證方式:是單點登錄系統提供的缺省認證方式。使用LDAP認證方式,用戶名與口令是存儲在指定的LDAP目錄中。當一個用戶登錄時,提供的用戶名與口令若與該LDAP目錄中指定子樹中某一個用戶記錄的用戶名與口令相同,則認證成功,登錄者具有LDAP目錄中該用戶記錄對應的身份。
(2)數字證書認證方式:使用X509v3數字證書,只要客戶端可以提供X509v3數字證書,系統允許其登錄。可以配置用戶的個人數字證書必須和目錄服務器中存儲的證書相同,并與證書回收列表(CRL)比較以確保個人證書是有效的。
(3)RADIUS認證方式:系統利用外部的撥號認證系統作為本身的認證機制,如果用戶通過了外部撥號認證系統的認證,系統則認為此用戶認證通過。
(4)UNIX認證:系統利用所安裝UNIX環境的認證系統作為本身的認證機制,如果用戶通過了UNIX認證系統的認證,系統則認為此用戶認證通過。
(5)Microsoft Windows/NT 域認證:系統利用一臺Windows 域認證系統作為本身的認證機制,如果用戶通過了它的認證,則認為此用戶認證通過。
(6)多因子認證:除了上述內置的認證方式之外,平臺也提供了服務提供者接口來開發定制的認證方式。
3.2用戶認證界面
用戶認證界面是單點登錄系統與最終用戶的接口,它負責向用戶顯示登錄表單,搜集用戶認證信息,并傳回服務器端;服務器端通過調用平臺的認證API進行認證,并為通過認證的用戶創建單點登錄系統的單點登錄會話。單點登錄系統提供了基于WEB的用戶認證界面,該用戶認證界面是由單點登錄系統動態生成的,提供了平臺中所有認證模塊的用戶界面。
單點登錄系統的用戶認證界面的URL是:
http://
通過向該URL傳遞各種參數,可以顯示個性化的用戶認證界面。
單點登錄系統的用戶認證界面是基于JATO(J2EE Assisted Take-Off)WEB應用框架創建的,它通過JSP和XML為用戶提供圖形化界面的交互方式。對用戶認證界面的常見客戶化工作包括對認證界面上的文字信息和圖片進行客戶化,以及對用戶認證界面進行本地化。
認證界面是基于一組JSP模板和XML文件動態生成的。JSP模板定義了認證頁面的布局, XML文件是認證模塊的配置資源文件。缺省JSP模板和XML文件均位于位于IS_Root/SUNWam/web-apps/services/config/auth/default目錄下。這些文件均可修改,使得不同的組織、子組織、地區、服務/應用、客戶端類型具有不同的認證界面。
4 認證接口設計
單點登錄系統提供了公共的認證服務架構,對外提供多種認證接口,以及認證服務的擴展接口。基于統一的認證服務的應用系統間可以實現單點登錄。
4.1 認證服務架構
單點登錄系統提供的認證服務是基于JAAS(Java認證與授權服務)框架的。JAAS是Java 2平臺標準版(J2SETM) 1.4規范的組成部分,它提供認證與授權服務的應用編程接口與服務提供者接口。
單點登錄系統的認證模塊是以插件的方式實現的,多種認證模塊通過JAAS服務提供者接口與單點登錄系統相連。這種基于插件的認證模塊實現方式使得單點登錄系統能夠支持已經廣泛應用的各種標準認證方式,也支持客戶自行定制的認證方式。
4.2 應用認證接口
SUN AM系統提供Java和XML/HTTP兩種應用認證接口。Java認證接口可以在本地或遠程調用。在本地調用Java編程接口直接與JAAS認證API交互,在遠程調用Java編程接口則實際通過XML/HTTP與認證平臺的認證服務交互。XML/HTTP認證接口提供了與語言和平臺無關的方式對認證服務進行遠程訪問。對基于Java的應用系統(包括基于JSP的WEB應用系統和基于Java的應用程序)可以使用Java編程接口;對于非Java的應用系統,可以使用XML/HTTP編程接口或C/C++編程接口。
如果僅使用SUN Access Manager API接口,存在諸多限制:
(1)操作系統限制:C/C++接口目前只能穩定的運行在solaris系統中,其他主流的UNIX/Linux沒有辦法支持;
(2)XML解析復雜:對于非Java和C/C++開發的系統集成來說,集成應用需要編寫了解復雜的XML結構,編寫XML解析程序;
(3)集成系統開發工作量大:集成系統采用API模式集成時不但要完成SUN API復雜的過程配置,還需要進行通訊多線程的處理,在雙機環境下還需要大量的編程支持動態切換;
(4)平臺升級困難:直接采用SUN API集成,每個集成應用都與底層平臺緊密耦合,當平臺升級時,需要每個應用重新進行修改,無法保證整個系統的平滑升級。
為了解決這些問題,單點登陸系統采用ICE中間件平臺自主開發各類認證接口。ICE是一種面向對象的中間件平臺,采用了一種用于使對象接口與其實現相分離的基礎性抽象機制,為構建面向對象的客戶-服務器應用提供了工具、API 和庫支持。在客戶機與服務器之間建立合約,描述應用所使用的各種類型及對象接口。這種描述與實現語言無關,所以編寫客戶所用的語言無需與編寫服務器所用的語言相同,很好的解決了豐富的多語言集成環境。
其架構圖如圖3所示:

圖3
ICE認證接口是架設在集成應用和統一身份認證平臺之間的中間件,支持大多數的主流Unix/Linux平臺與MS Windows平臺,集成應用系統開發人員無需面對復雜的XML解析,只需要一個對象(類)就可以完成所有認證相關操作,ICE認證接口API是線程安全的,開發人員無需額外的付出就可以獲得高效的多線程功能。在架構上ICE接口的存在使得各個集成應用和統一身份平臺是非緊密耦合,在代碼層統一身份平臺的對外接口升級變化將不會影響到各個集成應用,增加了整個系統的穩定和擴展性。同時ICE也支持統一身份認證平臺的雙機熱備模式,能夠動態進行切換,集成應用無需付出額外工作考慮平臺狀態問題。
5 結束語
現在,隨著應用系統在企業、政府、學校和研究機構部門中的廣泛建設,對于實現各應用系統間單點登錄的功能需求也會越來越高。上面所描述的單點登錄解決方案,都是建立在同一個廠商提供的平臺的基礎上,實現跨系統的單點登錄。在現有的企業、政府、學校中,有可能會有來自于不同廠商的網絡身份管理方案;另外,企業、政府、學校也不可避免地需要和本單位外的應用系統交互,跨域聯盟認證解決方案還有待于進一步的研究。
參考文獻:
[1] 李愛華 徐立臻 基于ICE技術的身份認證交互模型 計算機應用[J/OL].2005.
[2] 吳曉斌 張月琳 基于LDAP 的校園網統一身份認證系統設計[J/OL].華中科技大學學報,2003.
[3] M. Henning et al ,A New Approach to Object-Oriented Middleware[EB/OL].IEEE INTERNET COMPUTING 2004.
[4] M. Henning et al., Distributed Programming with Ice[EB/OL].http://www.zeroc.com/Ice-Manual.pdf. 2004.