J2EE安全服务的研究与设计

时间:2022-10-11 04:36:48

J2EE安全服务的研究与设计

摘 要:首先介绍了基于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.

上一篇:一种多模雷达信号分选方法的研究 下一篇:如何抑制直接耦合放大电路中零点漂移