J2EE体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求[10]。通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持Enterprise JavaBeans,有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。
然而,近年来,随着J2EE的实际应用,人们越来越多地发现,传统的J2EE架构方案得到的结果常常无法让人满意:过于复杂的应用程序、令人失望的性能、难以测试、开发和维护成本高昂等。为了克服传统J2EE架构的弊端,轻量级J2EE应运而生。
轻量级J2EE构架拥有众多优秀的轻量级框架,如JSF,Struts,Mybatis,Spring等,都取得了巨大的成功。这些众多的轻量级J2EE架构具有以下共同特点:易用性、兼容性、封闭的对象调用及可扩展性和标准化。使用轻量级J2EE架构并不意着放弃了传统的J2EE架构,开发者仍可以继续使用其API来完成所需的功能。
从本质上讲,J2EE就是一大堆标准化的企业级服务[1]。J2EE对这些服务的标准化可以使企业级应用开发更为高效和可扩展。
2.1 RBAC模型
2.1.1 RBAC模型简介
基于角色的访问控制RBAC作为传统访问控制(DAC,MAC)的有前景的代替受到广泛的关注。在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色。角色可依新的需求和系统的合并而赋予新的权限,而权限也可根据需要而从某角色中回收。用户通过角色访问资源,建立这样一种映射关系,大大提高了管理的效率,减少授权管理的复杂性,降低管理开销,而且还能为管理员提供一个比较好的实现安全政策的环境。
2.1.2 RBAC模型的特点
RBAC支持三个著名的安全原则:最小权限原则,责任分离原则和数据抽象原则。最小权限原则之所以被RBAC所支持,是因为RBAC可以将其角色配置成其完成任务所需要的最小的权限集。责任分离原则可以通过调用相互独立互斥的角色来共同完成敏感的任务而体现,比如要求一个计帐员和财务管理员共参与同一过帐。数据抽象可以通过权限的抽象来体现,如财务操作用借款、存款等抽象权限,而不用操作系统提供的典型的读、写、执行权限。然而这些原则必须通过RBAC各部件的详细配置才能得以体现。
RBAC模型支持数据抽象原则和继承概念。由于目前主流程序设计语言都支持面向对象技术,RBAC的这一特性便于在实际系统中应用实现。模型中概念与实际系统紧密对应。RBAC模型中的角色、用户和许可权等概念都是实际系统实际存在的实体,便于设计者建立现存的或待建系统的RBAC模型。
RBAC模型仍素具访问控制类模型,本质是对访问矩阵模型的扩充,能够很好的解决系统中主体对客气的访问控制访问权力的分配与控制问题,但模型没有提供信息流控制机制,还不能完全满足信息系统的全部安全需求。虽然也有人认为可以用RBAC去仿真基于格的访问控制系统(LBAC),但RBAC对系统内部信息流的控制不是直观的,需要模型外的功能支持。
RBAC模型没有提供操作顺序控制机制。这一缺陷使得RBAC模型很难应用关于那些要求有严格操作次序的实体系统,例如,在购物控制系统中要求系统对购买步骤的控制,在客户未付款之前不应让他把商品拿走。RBAC模型要求把这种控制机制放到模型外去实现。