应用J2EE技术构建稳健的电子商务平台

来源:岁月联盟 作者:李尤 时间:2010-07-01
摘  要  本文简介了J2EE技术,重点讨论了J2EE架构的不同层面(包括Web层,EJB层,EIS层),给出了利用J2EE技术构建安全稳健的商务平台的方法,并且分析了J2EE在构建电子商务平台上的优势。     关键字  J2EE;电子商务;安全 

1  引言

    如何进行电子商务的应用开发,高效,安全地构造电子商务应用系统已经成为一个急需研究的课题。Sun 公司推出的J2EE技术恰好提供了这样一种机制,它与传统的互联网应用程序模型相比有着无可比拟的优势。

2  J2EE简介

    J2EE 是一整套技术的总称,包括建立企业应用系统的各个方面,使用J2EE技术能够快速建立可移植、多用户、安全和标准的电子商务应用系统。在J2EE 平台,中间层商业逻辑是由EJB( Enterprise JavaBeans) 组件实现的,这些EJB 组件使电子商务开发者从烦琐的系统设计中解脱出来,将精力主要放在商业逻辑上,提高了应用的质量和加快了开发的速度,而让EJB Server 处理底层复杂的各种系统级任务,如事务处理、组件的生命周期、状态维持、并发控制、安全检测、资源共享等。需要这些服务的代价并不高,不用编程,只需通过对遵循J2EE规范开发的J2EE应用服务器(如Weblogic,WebSphere)进行一定的配置就行了[1]。图1[3]是一个典型的基于J2EE的电子商务系统架构。


图1  基于J2EE的电子商务系统架构

3  J2EE构建安全电子商务平台

    下面就从J2EE架构的不同层面讨论它可以采用的安全措施:

   

3.1.1 设置Web层资源的访问    我们可以通过指定安全约束来保护Web层的资源。安全约束决定了谁被授权访问Web层的资源。安全约束可以用部署工具来定义。    如果一个未授权的用户试图访问受保护的Web资源,Web容器将对他进行认证。容器仅仅接受那些通过容器身份验证并且被授予了权限的用户提交的请求。    可以用应用程序部署工具,如deploytool设置安全约束,也可以直接在部署描述符<security-constraint></security- constraint>的标签中,编辑相关信息。要定义一个安全约束,需要做如下事情:①设定登录认证方式;②添加一个安全约束;③添加一个Web资源集;④定义和添加授权的安全角色;⑤确定约束的URL模式;⑥确定约束的http方法(如get或post方法);⑦指定数据在客户端和服务器之间传送的时候,使用怎样的保证机制(如, CONFIDENTIAL等)。3.1.2  认证用户    Web客户端通常通过http协议来请求Web服务器端的资源,这些Web资源通常包括html网页、jsp(java server page)文件、java servlet和其他一些二进制或多媒体文件。在企业环境中,企业的某些资源往往要求只允许某些人访问,有些资源甚至是机密的或安全敏感的。因此对企业中各种Web资源进行访问控制是十分必要的。为了满足企业中的不同安全级别和客户化的需求,J2EE提供了三种基于Web客户端的验证方式:    1)HTTP基本验证(HTTP Basic Authentication)    HTTP基本验证是HTTP协议所支持的验证机制。这种验证机制使用用户的用户名和密码作为验证信息。这种验证方法并不对用户密码进行加密,而只是对密码进行基本的base64的编码。而且目标Web服务器对用户来说也是没有验证过的。不能保证用户访问到的Web服务器就是用户希望访问的。可以采用一些安全措施来克服这个弱点。例如在传输层上应用SSL或者在层上使用IPSEC或VPN技术。    2)基于表单的验证(Form-Based Authentication)    基于表单的验证使系统开发者可以自定义用户的登录页面和报错页面。用户在表单中填写用户名和密码,而后密码以明文形式在网路中传递。因此在使用基本HTTP的验证方式和基于表单的验证方法时,必须确定这两种方式的弱点对你的应用是可接受的。
    3)基于客户端证书的验证(Client-Certificate Authentica tion)    基于客户端证书的验证方式要比上面两种方式更安全。它通过HTTPS(HTTP over SSL)来保证验证的安全性。安全套接层(Secure Sockets Layer)为验证过程提供了数据加密,服务器端认证,信息真实性等方面的安全保证。在此验证方式中,客户端必须提供一个公钥证书,你可以把这个公钥证书看作是你的数字护照。公钥证书也称数字证书,它是被证书授权机构(CA)——一个被信任的组织颁发的。这个数字证书必须符合X.509公钥体系结构(PKI)的标准。如果你指定了这种验证方式,Web服务器将使用客户端提供的数字证书来验证用户的身份。

[3]

    当设计一个企业Bean的时候,应该想到有哪些用户会访问这个Bean。例如,一个Account Bean,可能被用户、银行出纳员和支行经理访问。每个这种用户类型都称为一个安全角色,一个抽象的逻辑分组,这是由集成应用的人员所定义的。当一个应用程序被部署时,这些角色将被映射成运行环境中的相应的安全身份。图2很好的展现了J2EE用户、组和角色之间的关系。


图2
 3.2.1 声明方法权限[4]    当定义了安全角色以后,可以定义Bean的方法权限。方法权限指明哪些角色可以调用哪些方法。可以用如下不同的方式定义方法权限:    (1)第一种形式是授权整个Bean的所有方法,就如下面的部署描述符:    <method>    <ejb-name>EmployeeService</ejb-name>    <method-name>*</method-name></method>        (2)第二种形式是授权Bean中的指定方法。如果Bean中包含了以相同名字重载的多个方法,那么这种形式会授权用相同重载名的所有方法。例如,如下的方法会授权EmployeeService bean的home接口或其他接口中的所有create方法。<method>    <ejb-name>EmployeeService</ejb-name>    <method-name>create</method-name></method>    (3)第三种形式是授权相同重载名的方法集合中的其中一个方法。调用该方法时,所有参数类型必须完全匹配[5]。例如,如下的<method>元素就授权可以访问EmployeeService bean's home 接口的create(String firstName, String lastName) 方法。<method>    <ejb-name>EmployeeService</ejb-name>    <method-name>create</method-name>        <method-params>            <method-param>java.lang.String</method-param>            <method-param>java.lang.String</method-param>        </method-params></method>

3.3  EIS层安全

    J2EE提供了一种称为JNDI(Java Naming and Directory Interface)的技术。它能使应用程序通过使用逻辑名称获取对象和对象提供的服务,从而使JDBC应用程序可以避免使用与提供对象的机构有关联的代码。    在JDBC2.0工具包中定义了javax.sql.DataSource接口来描述这个概念,如果用户希望建立一个数据库连接,只要通过查询在JNDI服务中的数据源,可以从数据源中获取相应的数据库连接,这样用户就只需要提供一个逻辑名称给相关人员,而不是数据库登录的具体细节情况。    因此,合理地使用Java中的命名和目录服务接口技术就可以彻底消除上述问题所带来的隐患,保证数据源的安全性。同时,因为消除了程序代码中与具体数据库相关的因素(如数据库驱动程序的名称,数据库服务器地址,端口号等),因此增强了程序代码的可维护性和可移植性。

商务平台上的其他优势

    (1)保留现存的IT资产:由于企业必须适应新的商业需求,利用已有的企业信息系统方面的投资,而不是重新制定全盘方案就变得很重要。J2EE架构可以充分利用用户原有的投资,可以使用 BEA Tuxedo、Weblogic等中间件集成现有系统。由于基于J2EE平台的产品几乎能够在任何操作系统和硬件配置上运行,现有的操作系统和硬件也能被保留使用。    (2)支持异构环境[5]:J2EE能够开发部署在异构环境中的可移植程序。基于J2EE的应用程序不依赖任何特定操作系统、中间件、硬件。因此设计合理的基于J2EE的程序只需开发一次就可部署到各种平台。这在典型的异构电子商务平台环境中是十分关键的。    (3)可伸缩性:基于J2EE平台的应用程序可被部署到各种操作系统上。它可被部署到高端UNIX与大型机系统,这种系统单机可支持64至256个处理器。(这是NT服务器所望尘莫及的)J2EE领域的供应商提供了更为广泛的负载平衡策略。能消除系统中的瓶颈,允许多台服务器集成部署,实现可高度伸缩的系统,满足电子商业系统应用的需要。    (4)稳定的可用性:一个电子商务平台必须能全天候运转以满足公司客户、合作伙伴的需要。因为Internet是全球化的、无处不在的,即使在夜间按计划停机也可能造成严重损失。若是意外停机,那会有灾难性后果。J2EE可以部署到可靠的操作环境中,如健壮性能很好的操作系统Sun Solaris、IBM OS/390等。这是实时性很强电子商务系统理想的选择。

5  结束语

    随着机技术和技术的飞速,基于Internet 的电子商务正日益成为社会主要的商务交易方式,如何更快、更好地开发出满足企业需求的电子商务系统已成为人们关注的焦点之一,而J2EE恰好提供了这样一种机制。采用基于J2EE 体系结构的实现方案,可以使开发出来的电子商务平台具备高可靠性、高伸缩性、高可用性、高度透明的分布性、高度异构性和易维护性,从而能够适应企业间纷繁复杂、不断变化的商业逻辑和业务流程。相信随着时间的推移,J2EE在开发电子商务系统方面将会越来越显示出它的优势和勃勃生机。

[1] Jing Tan,Katherine Tyler,Andrea Manica.“Business-to-business adoption of eCommerce in China”, [J].Information & Management, Vol. 44, no. 3, pp 332-351, 2007[2] David M Arnow,Scott Dexter,Gerald Weiss.Introduction to Programming Using Java: An Object-Oriented Approach,[M].北京:清华大学出版社,2004[3] Kathy Sierra, Bert Bates.Head First EJB, [M].东南大学出版社, 2006[4] 曾陈萍,李怀杰.“Analysis of Framework Based on J2EE of Realizing E - Commerce”[J]. 西昌学院学报(版), no.3, pp 03-10, 2006[5] Li Yanhui and Zhu Siming, “Competitive dynamics of e-commerce Web sites [j]”,Applied Mathematical Modelling, Vol. 31, no. 5, pp 912-919, 2007