摘 要:首先介紹了基于J2EE的應用服務器的體系結構和安全需求,并以此作為基礎,給出了其安全模型。之后詳細討論了模型的主要組成部分,提出一種基于JAAS可擴展的J2EE安全服務設計方案,并給出了主要部分的實現。該方案解決了J2EE應用服務器的主要安全問題,滿足了J2EE的安全需求。
關鍵詞:J2EE; 安全模型; JAAS; 設計方案
中圖分類號:TN713.1 文獻標識碼:B
文章編號:1004-373X(2010)13-0107-03
Research and Design of Security Server Based on J2EE
YIN Feng-she,JIAO Lei
(Sh
nxi Polytechnic Institute, Xianyang 712000, China)
Abstract: The architecture and security demands of an application server based on J2EE are introducd. The security model of J2EE application server is presented. The main parts of the security model is discussed in detail. A design scheme of the scalable J2EE security server based on Java authentication and authorization service (JAAS) is proposed. The major security issues of J2EE application server were solved to meet the security requirements of J2EE.
Keywords: J2EE; security model; JAAS; design plan
J2EE應用服務器安全模型的核心是安全服務,安全服務為容器和組件提供安全認證、授權和審計服務,本文討論了安全服務的架構,并給出了安全服務的主要部分:認證服務、授權服務、安全會話管理器和審計服務的設計。
1 安全服務架構
安全服務由以下幾個主要部件構成:認證服務、訪問控制服務、用戶信息目錄、安全策略庫、審計服務、會話管理器、安全服務管理接口、安全服務管理控制臺和安全服務客戶。J2EE安全服務通過認證器、訪問控制器和審計器3個接口向外界提供安全服務,而安全服務的安全元信息保存在用戶信息目錄和安全策略庫中[1]。
為了讓安全服務成為一個通用的客戶無關的服務,安全服務獨立于J2EE環境運行,這樣可以為不同類型的應用服務器和應用程序提供訪問控制機制。
2 認證器和用戶信息目錄
認證器[2]的目的是將外界提供認證信息的用戶映射為系統平臺內部的用戶,通過認證信息標識用戶的身份。為了保證認證機制的可擴展性和靈活性,認證器在設計時有以下原則:
(1) 認證器需要具備對不同類型認證機制的潛在支持,如密碼認證、證書認證。
(2) 認證器對同一種認證機制必須能夠支持多種不同類型的用戶信息目錄。
(3) 必須提供對一個用戶多種認證方式的支持。
(4) 必須支持現存遺留的用戶信息目錄和認證機制。
由于JAAS[3]實現了標準Plugable Authentication Module(PAM)框架的可插撥認證機制,采用JAAS作為認證服務的實現機制,將JAAS的不同認證域映射為認證服務的不同認證機制,而將JAAS認證域中的LoginModule 映射為不同的用戶信息目錄認證支持。
認證器對不同認證機制的支持可以采用對象模型方式建模[4],對象模型如圖1所示。
認證器Authenticator 的接口定義如下:
public interface Authenticator{public SessionToken authenticate(Principal principal, Credential credential) throws AuthenticationException;}
認證器的Authenticate()方法完成用戶認證功能,不同的認證機制傳入不同類型的Principal和Credential 值,認證器根據傳入Principal 和Credential 的類型,自動選擇適合的認證方式,映射到JAAS認證域,并使用JAAS進行認證。同時通過將LoginModule 的標志設置為sufficient,保證必須至少有一個用戶信息目錄認證通過才能通過系統認證。系統應該提供一個基礎的LoginModule 基類,用于收集所有必須的用戶信息,從而提供構造適合的令牌需要的用戶信息。
圖1 支持多種認證機制的對象模型
用戶信息目錄中的用戶信息包含用戶認證需要的特定認證的信息以及其他的信息,這些信息和一個特定的系統用戶關聯,系統用戶通過一個全局惟一的用戶標識符ID來標識。用戶認證完成之后,訪問系統的用戶被映射為系統中惟一標識的用戶,該用戶標識和用戶認證信息在建立安全會話過程中與安全會話建立關聯。
3 安全會話和安全會話管理器
當用戶認證之后,用戶認證狀態的安全持久保持和驗證通過安全會話進行,認證器認證用戶后會使用會話管理器建立一個安全會話,將所有用戶的安全信息和會話綁定。會話管理器[5]負責統一管理所有用戶認證之后的安全會話,會話管理功能可分為兩類:操作型和管理型。會話管理對象模型如圖2所示。
圖2 安全會話管理對象模型
用戶認證完之后,安全會話管理器給用戶建立一個安全會話,安全會話通過返回給用戶的會話令牌標識,會話令牌包括的信息有:認證方式、認證方式相關信息、用戶標識符、認證Principal和Credential 等,安全會話上下文由用戶獲得的安全令牌表示。
在用戶退出系統時,會話管理器撤銷用戶會話,并刪除所有用戶登錄后生成的信息。在用戶訪問控制過程中,用戶相關的安全信息可以通過用戶會話的會話令牌獲得。
4 訪問控制器和訪問控制策略
訪問控制器的目的是提供對多種不同類型資源各種級別的訪問控制,它使用認證之后用戶的標識和安全策略庫中的安全訪問控制策略元信息來判斷登錄系統的用戶有無對特定資源的特定的訪問權限,它所采用的是聲明式訪問控制機制。
為了提供訪問控制服務的可擴展性和靈活性,訪問控制器的設計必須遵循以下原則[6]:
(1) 能夠擴展支持多種不同類型的訪問控制策略,如基于角色的訪問控制、基于規則的訪問控制;
(2) 必須能夠提供對不同類型策略庫的支持,如基于XML 文件的策略庫和基于LDAP 的策略庫;
(3) 必須能夠提供對各種不同類型的資源進行訪問控制,提供對各種定制權限和定制資源的管理;
(4) 訪問控制機制必須獨立于認證器所采用的認證機制,即與用戶的認證方式無關。
訪問控制機制的核心是訪問控制策略,參考文件系統的訪問控制策略[7],將資源使用目錄結構按名字空間以層次型結構組織,并對層次結構中的所有的節點配置各種類型的安全訪問控制策略,這樣,安全訪問控制策略按照資源的層次組織方式為基礎進行組織。可以將資源或者按資源的類型,或者按資源所屬的應用程序包劃分為多個名字空間。
資源通過系統惟一的統一資源標識符URI標識,URI的名字組織方式采用資源層次結構中的資源層次名字統一組織,這樣在安全策略庫中每一個資源都有特定的標識符來惟一表示。
與資源相關的還有權限問題,不同的資源其可訪問的權限是不一致的。對于Web資源,可訪問的權限限于幾種標準的HTTP方法,但是對于EJB資源[8],不同的EJB組件可以被外界調用的方法是不一致的。為了使安全訪問控制系統支持不同類型的權限,提供權限的擴充,圖3給出針對不同類型資源的權限模型。
圖3 權限的抽象模型
Right 抽象了所有的權限,各種不同類型資源的特定權限通過擴展Right 插入安全服務系統中。所有與特定資源類型相關的權限信息被封裝在特定類型的Right 擴展類中。
訪問控制器AccessController 完成對資源訪問的授權檢查,它通過使用當前的安全會話、需要訪問的資源對象和需要的權限對訪問策略檢查完成。訪問控制器的接口定義如下:
public interface AccessController {public void check(SessionToken token,Resource resource,Right right) throws AuthorizationException; }
5 安全審計
安全審計[9]的目的是對用戶的認證過程、認證之后的安全活動、對資源訪問控制的安全授權過程以及管理員對安全策略庫的管理過程等所有涉及到安全的活動進行記錄。
安全服務支持各種類型的審計策略,通過標準的接口,可以按照訪問的用戶、被訪問的資源或者進行的操作進行審計的控制,審計器使用安全服務上的審計策略來控制和實施審計過程。審計日志記錄了所有的審計信息,通過安全管理接口,可以瀏覽系統所有安全相關的審計記錄。通過一個標準的接口,安全服務支持各種類型的審計日志實現。審計機制的對象模型如圖4所示。
圖4 可擴展的審計模型
6 安全管理接口和安全管理控制臺
安全管理的目的是提供對認證機制、授權機制和審計機制的相關信息進行配置和管理。對認證機制的配置和管理主要涉及JAAS域認證映射、用戶信息目錄配置、用戶信息管理,其目的是提供針對不同應用需求為用戶定制認證機制和用戶信息目錄。
為了提供上面提到的對認證、授權和審計機制的管理目標,安全服務管理應該能夠提供如下的功能:
(1) 獲得某資源相關的所有安全訪問控制策略;
(2) 添加和刪除安全訪問控制策略;
(3) 獲得某資源的所有可能的權限;
(4) 對被管理資源添加和刪除權限;
(5) 添加新的資源類型;
(6) 添加、刪除用戶;
(7) 添加、刪除審計策略。
由于所有的認證策略、訪問控制策略和審計策略都存儲在安全策略庫中,安全管理的過程實際上就是對安全策略庫的管理。安全管理接口通過安全策略庫接口對各種遵循標準接口的安全策略庫進行統一管理。安全管理對象模型[10]如圖5所示。
圖5 安全管理對象模型
PolicyManager包裝了所有的安全管理相關的操作,通過PolicyManager接口可以對策略庫進行操作完成上面提到的功能。
把對安全策略庫及其他安全信息的管理功能包裝成一個API接口,其優點是可以對這些API的訪問設置安全策略,如授權策略、審計策略。這樣系統的安全控制機制就可以控制和跟蹤管理員對系統的安全管理過程。
7 結 語
安全訪問控制是中間層應用服務器提供給運行時組件的重要功能,這里提出的J2EE應用服務器安全機制的架構解決了J2EE應用服務器的主要安全問題,滿足了J2EE的安全需求。同時,該安全架構從設計上具有可移植、通用性、可擴展性和靈活性。
參考文獻
[1]Taligent Inc.. Building object-oriented frameworks[ M] . [ S.l.] : Taligent Inc., 2005.
[2]PERRONE Paul J.J2EE構建企業系統專家級解決方案[ M] .張志偉,譚郁松,張明杰,譯.北京:清華大學出版社,2001.
[3]LI Gong.Java 2平臺安全技術——結構、API設計和實現[ M] .王韻凱,石磊,譯.北京:機械工業出版社,2000.
[4]Jamie Jaworski.Java安全手冊[ M] .邱仲潘,譯.北京:電子工業出版社,2007.
[5]LAI Charlie, LI Gong, KOVED Larry, et al. User authentication and authorization in the Java(TM) platform[ C] //CSAC. Processings of the 15th Annual Computer Security Applications Conference. AZ: CSAC, 2008: 51-59.
[6]WOLFGANG Pree. Design patterns for object-oriented software development[ M] . [ S.l.] : Addison-Wesley Publishing, 2008.
[7]VOGEL Andreas. Enterprise application for the net with EJB, CORBA and XML[ M] . [ S.l.] : Inprise Corporation,2005.
[8]Tanenbaum A S.分布式操作系統[ M] .陸麗娜,伍衛國,劉隆國,等譯.北京:電子工業出版社,1999.
[9]WU Jie.分布式系統設計[ M] .高傳善,譯.北京:機械工業出版社,2001.
[10]WAHL M, HOWES T, KILLE S. RFC2251: Lightweight Directory Access Protocol[ S] . [ S.l.] : Network Working Group, 1997.