您好,欢迎来到尚车旅游网。
搜索
您的当前位置:首页基于XML的安全通信-XML Engine

基于XML的安全通信-XML Engine

来源:尚车旅游网
    本文由hillmickey贡献    pdf1。

    电子科技大学 硕士学位论文 基于XML的安全通信-XML Engine 姓名:邓彦杰 申请学位级别:硕士 专业:计算机软件与理论 指导教师:周明天 20041201    基于XML的安全通信平台一一XMLEngine    摘要

    学科名称:计算机软件与理论

    论文名称:基于XldL的安全通信一m    硕士研究生:邓彦杰    导

    Engine    师:周明天

    随着Web Service技术的流行,作为Web Service基础协议的XML变得越来

    越重要。同时,X_ML作为一种事实上的数据表示标准,越来越多的公司在通过 网络传输结构化数据时采用XML,XML文档的安全性变得愈加重要。 XMLEngine(基于XML的安全通信平台)是出于对XML消息安全功能的

    设计考虑,为将来网络中基于XML信息的Web服务提供了安全而有效的信息保

    障。

    本课题设计并实现了基于XML的信息安全通信平台。首先我们提出了 XMLEngine(中文名称XML引擎)这个基本概念,介绍了研发的技术背景,在 XMLl.0规范和SOAP规范1.0.2版本的基础上,总体描述了在开发过程中所涉

    及到的XML、SOAP、Web Service、应用密码学及XML安全的基本知识,从而 给出了XMLEngine体系结构的模型,并在LINUX平台下详细阐述了实现 XMLEngine的方法和步骤。

    在本项目中,本人承担了构建Web Service典型应用的任务,该应用是基于 J2EE设计和实现的,应用完成后经过测试完全达到了设计要求,本文详细给出

    了该应用的设计和实现过程。

    关键词XML安全XML引擎加密/解密签名/验证Web Service应用

    基于XML的安全通信平台一一xMLEngine    Abstract    With

    the popularization of

    Web Services,XML,which is    the basic protocol of    as a

    Web Services,    facto

    becomes more and more important.At the same time,XML

    data presentation,more    de

    standard of

    and more company    the security    adopts of    XML when

    transmitting

page 1

    structure

    data tbroulgh network,SO    ever

    XML document

    becomes more important than    before. Security

    XMLEngine(XML—based Information    the

    secure

    platform)is designed    on    to

    provide

    and effective

    guarantee to the    Web Services based    XML in

    the Internet.    The research    security

    subject accomplished

    the design and implement of the infomlation    on

    communication    platform    based    XML    The    are    basic

    conception    of

    XMLEngine and the technical background of the subject

    the basic principle

    presented firstly.Then,

    ofXML、SOAP、Web Services、applied cryptography and XML

    security involved in the    subject    are

    described.In addition,the thesis introduces the method

    XMLEngine architecture and explaines the implement XMLEngine    In the under LINUX    alTl    and    step    of

    platform.

page 2

    Web Services application    project,I

    responsible for the development of

    which adopts J2EE architecture.Now,the application achieves the requirement of

    design    and    the

    thesis

    illustrates    the

    process    of    the

    application    design    and

    implementation in detail.    Keywords

    XMLSecurity XMLEngine

    Encrypt/Decrypt Signature/Verify    Web Service    独创性声明

    本人声明所呈交的学位论文是本人在导师指导下进行的研究工

    作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地    方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含

    为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。    签名:望垒囊、玉 ” 】    日期:≯Ⅳ眸,三月,』日    关于论文使用授权的说明

    本学位论文作者完全了解电子科技大学有关保留、使用学位论文    的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁    盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文    的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或

    扫描等复制手段保存、汇编学位论文。 (保密的学位论文在解密后应遵守此规定)

    签名:    耸参立一

    导师签名: 日期:    ?w

    基于XML的安全通信平台~一xML    Engine    第一章引言

    1.1.课题背景 1.1.1作为Web Service基础的XML的安全性越来越重要

    构建大型应用时,通常要在不同计算机上进行并发工作,这样更加有效,甚    至可能是必需的。强大的计算机和网络带来了分布式计算的现象,把计算分布在 网络上,而不是只在计算机上进行。N层应用程序把应用程序分布在多台计    算机上。例如,三层应用程序可能把用户界面放在一台计算机上,把业务逻辑处 理放在一台计算机上,数据库放在一台计算机上,它们在应用程序运行时进行交

page 3

    互。

    为了让分布式系统正确工作,整个网络中不同计算机上执行的应用程序组件    (通常包装成编程对象)要进行通信。许多公司和组织开发了自己的分布式组件 问通信技术。对象管理组织OMG的公用请求代理体系结构(Common 0biect

    Request    Broker

    Architecture,CORBA)、微软公司的分布式组件对象模型    (Distributed Component Object    Model,DCOM)、Sun公司的Internet对象请求

    Invocation/internet Inter.ORB System Object

    代理间协议上的远程方法调用(Remote Method

    Protocol,RMI/IIOP)和IBM公司的分布式对象模型(Distributed

    Model,DSOM)等,这些技术的每一个都能使不同语言、不同实现版本和不同地

    点运行的程序能够像在同一计算机上一样进行通信。 但是,这些技术的相互之间的互操作性(与不同厂家和平台的软件之间共享

    数据和相互通信的能力)非常有限。例如,两个最流行的技术DCOM和CORBA 就很难相互通信。DCOM和CORBA组件通常通过COM/CORBA桥进行通信

    如果DCOM与CORBA的基础协议发生改变,则编程人员必须修改这个桥,反

    映所作的这些改变。另外,这些分布式对象协议在Intranet环境下工作得很好,

    而将其用于公共的Internet就会有很多问题,为了解决安全问题,许多组织都在 其公共的Web服务器和访问这些服务器的大众之间架设一道防火墙。由于防火 墙的存在影响了分布式对象协议的使用。这些问题影响了分布式计算帮助业务过 程集成与自动化的能力。

    基于这些原因出现了Web Service技术,Web Service技术解决了互操作性有

    限的问题,从而提高了分布式计算的功能。与DCOM和CORBA不同的是,Web

    茎5-XML的安全通信平台一--XMLEngine

    Service用开放的标准(非专属标准)进行操作。理论上,web Service可以让任 何两个软件组件相互通信,不管组件用什么技术生成,放在什么平台上。另外,

    基于web Service的应用程序也更容易调试,因为Web Service用基于文本的通

    信协议而不是DCOM与CORBA采用的二进制通信协议。 随着web Service技术的流行,作为w曲Service基础协议的XML变得越来

    越重要。同时。由于XML是数据事实上的表示标准,越来越多的公司在通过网    络传输结构化数据时采用XML,XML文档的安全性变得愈加重要。    1.1.2传统的信息安全不能满足XML安全的需要

    象其它任何文档一样,可以将XML文档整篇加密,然后安全地发送给~个 或多个接收方。例如,这是SSL或TLS的常见功能,但是更令人感兴趣的是

    如何对同一文档的不同部分进行不同处理的情况。XML的一个有价值的好处是    可以将一整篇XML作为一个操作发送,然后在本地保存,从而减少了网络通信 量。但是,这就带来了一个问题:如何控制对不同元素组的授权查看。商家可能 需

page 4

要知道客户的名称和地址,但是,无需知道任何正在使用的信用卡的各种详细 信息,就像银行不需要知道购买货物的详细信息一样。可能需要防止研究人员看 到有关个人医疗记录的详细信息,而管理人员可能正好需要那些详细信息,但是

    应该防止他们查看医疗历史;而医生或护士可能需要医疗详细信息和一些(但不 是全部)个人资料。

    XML语言的强项之一是,搜索是明确的,无二义性的:DTD或Schema提

    供了相关语法的信息。如果将包括标记在内的文档的一部分作为整体加密,就会    丧失搜索与那些标记相关的数据的能力。此外,如果标记本身被加密,那么一旦 泄漏,它们将被利用对采用的密码术进行纯文本攻击。 XML是因特网以及近来Web服务持续增长和开发的主要支持者。但是,在实 现XML语言的全部能力之前,还有许多与安全性相关的工作要做。目前,加密

    整个XML文档、测试其完整性和确认其发送方的可靠性是一个简单的过程,但    是,越来越有必要对文档的某些部分也使用这些功能,以便以任意顺序加密信息 和认证鉴别不同用户或发起方:同时与HTML相比,XML的出现也使得数字签 名的实施与安全传送能够得以实现。在与XML相关的安全性领域方面的开发规    基于XML的安全通信平台一一xML    Engine

    范中最重要部分是XML加密、XML签名、XACL和SAML等。    1。2.作者的主要工作

    作者首先对XML引擎(XMLEngine)系统所涉及到的XML及SOAP规范、 应用密码学知识和W3C有关XML安全的标准进行简要介绍,对PKI的基本知 识进行概要说明,并在此基础上提出一个完整可行的XMLEngine模型,并在

    LINUX平台上实现这一模型,对具体的实现步骤和细节进行详细描述。作为一

    个新产品应该与具体的应用结合起来,为此我们专门设计和实现了一个网络数字 社区一网上书店,将XMLEngine服务器明的部署到网络中,对其中诸如用户信

    用卡号和密码等敏感信息进行加密和签名,以体现充分体现XMLEngine的特点

    和优势。

    在整个过程中作者主要从事其中的XML解析器、典型应用模块的需求分析、    概要设计、详细设计、代码编码和测试工作,与小组成员一起参与XMLEngine

    整个项目的总体设计和规划,最后的总体测试和部署。应该来讲基于XMI.的应用 越来越多,但针对XML的安全提出的时间不长,虽然国内外对其的研究已经不少, 但针对其开发的应用产品还不多见。在XML安全的标准和一些关键问题上一方面 仍有广阔的研究空间,另一方面XMLEngine作为一个大型系统,它的相关标准庞

    杂,涉及多方面的知识和技术,在有了第一阶段的产品后还有进一步完善和扩展。

    1.3.各章节安排

    第一章,引言。主要介绍课题的来源和背景,作者的主要工作,文章的章节安排 等。

    第二章,XML概述。介绍了XML概念、语法、格式、解析、显示等相关理论    知识。

    第三章,Web Service概述。介绍了Web Service概念、SOAP、WSDL、UDDI、 等相关理论知识。 第四章,XML安全和SOAP

page 5

安全基础。本章在第二章、第三章的基础之上,主

    要是针对W3C所提出的有关XML加密和解密、XML签名和验证的规范,进行

    详细介绍。

    第五章,XML安全平台一一XMLEngine的设计。首先给出XMLEgnine相关的 定义,然后介绍了XMLEngine服务器的结构、应用环境和处理流程,从系统架

    构角度分析了XMLEngine的应用和部署等。 第六章,构建Web Service典型应用一一数字书店,用以测试XMLEngine在实    茎±墨塑L的安全通信平台一~xMLEngine

    际应用中的功能和效果。首先介绍了本应用使用的技术:MVC设计模式概念、    JAX--RPC概念、SOAP工具包AXIS概念等。然后介绍本应用在系统中的地位、

    作用、设计目标、功能等。最后从两个方面(一个方面是客户和服务器端;另一    个方面是MVC的M、V、C三部分)详细给出设计和实现步骤,并通过抓包的 方式测试应用的设计效果和XMLEngine服务器的工作状况。 第七章,今后的工作。本章中作者阐述了系统存在的不足以及系统未来的发展思    路。

    1.4.小结

    本章介绍课题的研究背景,作者在课题中所做的主要工作,以及全文的章节 安排。下几章将对开发XMLEngine产品过程中所涉及到的相关基础概念体系、 技术框架以及研究应用现状做一个综述。

    基于XML的安全通信7r台一一XMLEngine    第二章.XML概述    2.1什么是XML

    XML是Extensible Markup Language的简写,是一种扩展性标记语言。XML

    并不是标记.语言。它只是用来创造标记语言(比如HTML、化学标记语言CML、

    数学标记语言MathML)的元语言。

    XML来源于SGML,SGML全称是“Standard    Generalized    Markup

    Language”

    (通用标记语言标准)。它是标志语言的标准,也就是说所有标记语言都是依照    SGML制定的,当然包括HTML。SGML的覆盖面很广,儿是有一定格式的文 件都属于SGML,比如报告,乐谱等等,HTML是SGML在网络上最常见的文

    件格式。

    而XML就是SGML的简化版,只不过省略了其中复杂和不常用的部分。那 么有了HTML,为什么还需要用XML?XML是可扩展的,而HTML是静态的    有限的标记集无法满足日益增长的数据描述要求,XML大大丰富了HTML的描

    述功能,可以描述非常复杂的Web页面,如复杂的数学表达式,化学方程式等, 而HTML只能描述数据的显示样式,没有语义,因此在电子数据交换、查询数 据库中的数据等方面存在极大不足。HTML中数据与其显示样式完全混在一起 的,数据的可重用性差,如果要换显示形式你不得不重新编码所有这样的HTML

    文件。XML是结构化的,好处是使XML文件易于被程序处理,便于数据共享

page 6

    2.2格式良好的XML文件一XML语法

    在XML中,“格式良好”有着明确的标准,即是要遵守XMLl.0规范中的    语法规则。XML必须符合规范,才能被正确解释处理。 一个XML文件最基本的构成是:

    XML声明(也是处理指示的…种) ?处理指示(可选) ●XML元素    苎i£羔ML的安全通信平台一--XML Engine    2.2.1    XML声明

    一个XML文件,最好以一个XML声明作为开始。之所以说“最好”,是因 为XML声明在文件中是可选内容,可加可不加,但W3C推荐加入这一行声明。    一个完整的XML声明是这样的:    <?xml version

    2”1.0”standalone=”no”encoding=”GB2312“’>

    version属性:指明所采用的XML的版本号 standalone属性(缺省为yes):这个属性表明该XML文件是否和一个DTD文件 文件配套使用。

    encoding属性(缺省为UTF一8):编码标准。如下是几种常见的编码:简体中文 码:GB2312、繁体中文码:BIG5、西欧字符:UTF一8。如果标签是用中文来写

    的,就要用encoding=”GB2312”。    2.2.2XML元素

    元素是XML文件内容的基本单元。从语法上讲,一个元素包含一个起始标    记、一个结束标记以及标记之间的数据内容。其形式是: (标记)数据内容(/标记)

    元素中还可以再嵌套别的元素。一个XML文档有且只有一个根元素。起始 和结束标记之问出现的所有合法字符都是数据内容,都被忠实地传给XML处理 程序。比方说:

    (格式> 一段文字 </格式>    B

    <格式>一段文字叫格式>    A

    上表中左边和右边所列出的元素标签及内容均一致,但二者却是不同的,因 为B中多了两个换行符,在屏幕上显示的时候分成了三行,所以象换行、回车 这类不可见字符也是作为XML文档中的有效字符来处理。

    1、字符引用 为了避免把数据内容和标记中需要用到的一些特殊符号相混淆,XML还提

    苎王XML的安全通信平台一--XMI.Engine

    供,T--@NN的字符引用。字符引用实际上也是实体引用(后面介绍)。常见的 5种字符引用如下表所示:    字符    实体引用    >    &gt    <    &

    &amp    &quot    &apos

    这样,如果我们需要在“示例”这个元素中出现文本“<姓名>张三</姓名>

page 7

’’ 正确的写法应该是:

    (示例)&1t;姓>张Z</姓名&舀;(/示例)    2、标记

    所有符号“(”和符号“)”之间的内容都称为标记。基本形式为: (标记名 (属性名=“属性取值”))

    XML对于标记的语法规定要比HTML要严格得多。标记必不可少,任何一 个形式良好的XML文件中至少要有一个元素。大小写有所区分,在HTML中, 标记(HELLO)和(hello)是一回事,但在XML中,它们是两个截然不同的标    记。

    要有正确的结束标记,结束标记除了要和开始标记在拼写和大小写上完全

    相同,还必须在前面加上一个斜杠“/”。为了简便起见,空标记直接在开始标 记的最后惯以斜杠“/”来确认。 标记与标记之间要正确嵌套,Lk,女rl:<b><i>sample</b></i>是错误的,正确    基于XML的安全通信平台一一xML    Engine

    写法是:<b><i>sample</i></b>。标记命名要合法,一般标记应该以字母、下划

    线“一”或冒号“:”开头,后面跟字母、数字、句号“.”、冒号、下划线或连字

    符“.”,但是中间不能有空格,而且任何标记不能以“xml”起始。另外,最好

    不要在标记的开头使用冒号,尽管它是合法的,但可能会带来混淆。在XMLl.0

    标准中允许使用任何长度的标记,不过,现实中的XML处理程序可能会要求标 记的长度在一定范围内。

    对于标记中的属性,是指对标记的进一步描述和说明,标记中可以包含任意    多个属性。在标记中,属性以名称/取值对出现,属性名不能重复,名称与取值    之间用等号“=”分隔,且取值用引号引起来。例如:

    <author SeX=”male”>Alex</author>    用属性“sex”来指明“author”的性别是“male”。

    XML中属性是自己定义的,虽然属性使用比较方便,但是有时候属性不易 扩充和被程序操作,所以凡是用到属性的地方也可以用子元素来代替,例如上面 的代码可以改成这样:

    <author>Alex

    <sex>fernale</'sex>    </author>    2.2.3处理指示

    处理指示是用来给处理XML文件的应用程序提供信息的。也就是说,XML 分析器可能对它并不感兴趣,而把这些信息原封不动地传给XML应用程序。然 后,这个应用程序来解释这个指示,遵照它所提供的信息进行处理,或者再把它

    原封不动地传给下一个应用程序。正如我们前面看到的,XML声明就是一个处    理指示。

    所有的处理指示应该遵循下面的格式: (?处理指示名处理指示信息?)

    由于XML声明的处理指示名是“xml”,因此其它处理指示名不能再用“xml”。

    例如,我们使用一个处理指示来指定与这个XML文件配套使用的样式单的类型    基于XML的安全通信、F台一一XMLEngine    及文件名

page 8

    <?xml一stylesheet type=”text/xsl’1 11ref-”mystyle.xsl’’?>    2.2.4实体

    实体主要是用来代替字符数据的,它可以节省大量的录入工作。实体同样必 须要格式良好。假如你为你的信件署名定义了一个实体lettersign,它代表下面这

    一大段文本:    张三

    某网络公司销售部门

    北京市海淀区中关村88号,100000 那么以后当你的XML文件中出现“信件”元素时,就可以这样写:    (信件)

    (收件人)李四(/收件人) (主题)hello《/主题)    (正文)hello!&lettersign:(/正文)    (/信件)

    1、实体的类型 实体包括两种类型:一般实体和参数实体。 ?一般实体 定义一般实体的格式如下: <!ENTITY实体名”文本内容”)

    另外,你也可以指定一个实体代替一个外部文件的内容,此时要使用SYSTEM

    这个关键字    。

    例如<!ENTITY    lettersign    SYSTEM

    ”http://www.mydomain.com/lettersi舀a xml”)

    参数实体 与一般实体相同,参数实体既可以是内部的也可以是外部的。不过,参数实

    体只用在DTD中。参数实体的格式与一般实体很类似,只不过中间要加卜“%”

    符,例如:

    基十XML的安全通信平台一--XML    Engine

    <!ENTITY%实体名”文本内容”)

    2、实体的使用 实体的使用包括两部分:实体声明和实体引用。    ●实体声明

    对于实体的声明应该放在文件类型DOCTYPE中。DOCTYPE一般放在文件 头(即XML声明和DTD)之后,XML元素之前。g-f4--来,XML文件就变为

    下面的形式:

    <?xml version=”1.0”?’

    <!DOCTYPE文件根元素名[实体声明部分】>    <文件根元素名> 具体数据内容    </文件根元素名>

    实体引用 实体引用指的是引用一个在实体声明中已经声明过的一个实体,实体引用的

    形式很简单:&实体名。实体引用一般有如下几点规则: ?在引用XML实体之前,必须已经在XML文件中对此实体进行过声明; ?在实体引用中不能出现空格。也就是说,&lettersign;的用法会引起错误。 ?尽管在一个实体中可以再引用其它实体,但是不能出现循环引用。也就是说, 一个实体不能引用它自己;同样,也不能出现实体A引用实体B,然后实体 B再反过来引用实体A的情况。    实体引用不能在DOCTYPE声明中出现。

page 9

    实体引用的文本必须是形式良好的XML。    完整的实体声明和实体引用的例子:

    <?xml version=”1.0”?>

    <!DOCTYPE联系人列表『 <!ENTITYA公司地址“北京市五街1234号”>

    <!ENTITY

    B公司地址“上海南京路9876号”)    ]> <联系人列表>    O

    基于XML的安全通信平台一一×ML    Engine

    <联系人> <姓名>张三</姓名>    <公司>A公司</公司>

    <地址>&A公司地址</地址>

    </联系人> <联系人> <姓名醇;李四</姓名>    <公司>B公司</公司>

    <地址>&B公司地址(/地址) </联系人> <联系人> <姓名>王五叫姓名>

    <公司>B公司</公司>

    <地址>&B公司地址(/地址)    </联系人> 叫联系人列表>

    从这个例子中可以看出,一旦哪个公司搬家了,只须改变实体声明中有关该    公司的地址,所有这个公司的联系人的地址也就都改过来了。    2.3有效的XME文档

    格式良好的XML不一定是有效的XML文件,比如    联系人列表> <联系人> <姓名>张三</姓名>    <ID>001</ID> <ID>002</ID>    <公司>A公司</公司>    </联系人>

    <联系人> <姓名>李四</姓名>    <ID>002</ID>    <公司>B公司</公司>

    基于XML的安全通信平台一一xML Engine    </联系人> <,联系人列表》

    这个XML文档是格式良好的,但烧不是有效的,因为:ID号被赋予两个公 司、而且两个人的ID号是一样的,冲突了。这就是结构良好的XML文档没有 语义匏润蘧,DTD帮Schema藏是簿决这个阉熬熬。    2.3.1

    l、D 4l。I:)    DTD翻Schema

    文件类型描述DTD(DocumemTypeDefinition)怒用来掐述一个标igN言的

    语法秘溺汇表,也就楚定义了文蛙竣繁体缝梭以及文佟的语法;DTD翘定了一    个解析器为了解释一个“有效的”XML文件所需要知道的所有规则的细节;…    个畜效兹xml文件不兔诲接爱任意兹标淀。使瘸豹任何括记都藜在DTD内声翻,

    而且必须以DTD允许的方式使用。所以DTD就是用求解决这类有效性问题的。 2、使溺DTD静方法

    ①内部DTD(standalone=“yes”) 在XML文件的序言部分加入一个DTD描述,加入的位置是紧接在XML处

page 10

    理指示之后。

    <?xml version=”1.0”encoding=”GB2312”standalone=’’yes”9>    <!DOCTYPE棂元素名【    元素描述

    爹 文件体……

    ②步}部DTD(standalone="no”)    写一个DTD文俘,就可以被多个飙文件掰引用。    <?xml

    外部DTD的好处是:它可以方便高效地被多个XML文件所共事。你只要    XML声明中必须说明这个文件不是自成一体的,即standalone穗性的属性

    值是no。同时,在DOCTYPE声明中,应该加入SYSTEM属性:    version=”1.0”encoding=”GB2312”standalone=”n0”》

    <!DOCTYPE根元素名SYSTEM”外部DTD文件的URL”>    ③公用DTD

    外部DTD一个系统内可共享的DTD。目前,已经有数量众多的写好的DTD    2

    墨±兰坚兰塑窒竺望!童±堕二二苎坚生星!!!竺

    文件可以利用。针对不同的行业和应用,这些DTD文件已经建立了通用的元素    和标签规则。你不需要自己重新创建,只要在他们的基础E加入你需要的新标识。

    这就需要公用DTD。两个相同行业不同地区的人使用同一个DTD文件来作为文

    档创建规范,那么他们的数据就很容易交换和共享。引用公共DTD的形式为:    <!DOCTYPE根元素PUBLIC”DTD名称””外部DTD的URL”>

    3、Schema

    DTD最大的局限是不能对元素内容提供足够的控制,例如,DTD无法指定 <today>09/01/2000</today>有效而<today>Eggs,Toast,Coffee</today>无效。相 对于DTD,我们总结Schema的优势有如下几条:    一致性

    实际上DTD是XML体系中的异类,    它的书写结构和XMI。文件的结构仿

    佛有着天壤之别,后者清晰直观,前者复杂晦涩。Schema建立在XML之上,

    本身也是一种XML,使用者不必再为了搞懂DTD而去重新学习;另一方面,它

    可以被现有的XML编辑制作工具所编辑、被XML语法分析器所解析、被XML

    应用系统所利用,既有投资得到了最大程度的保护。    ●扩展性

    虽然DTD中也定义了一些数据类型,但那都是针对属性类型而定义的,而 且类型非常有限。没有数据类型,无形之中大大增加了程序员的开发难度和工作 量。何况电子交易过程中不可避免地会出现大量的数据转换,整型、实型、布尔

    型、日期型的数据层出不穷,DTD显然招架不住。Schema对DTD进行了扩充,

page 11

    引入了数据类型,很好地解决了这一问题。

    ●易用性 XML Schema取代DTD的另一个原因要归结于DOM和SAX(关于DOM

    和SAX的概念将在后面章节中详细论述)。作为一种XML API,DOM和SAX 只是对XML实例文档有效,对于DTD则为力,你不可能期望通过DOM或

    SAX来判定一个元素的属性类型或者某个元素的子元素允许出现的次数(当然, 这都是XML分析器的本职工作)。但是,一旦有了Schema,这个问题便不复存

    在,因为此时对于XML文档结构的描述已变成为Schema-一一种“格式良好

    的”XML文档,用DOM和SAX去访问当然不在话下啦。 ●规范性    基于XML的安全通信平台一一xMLEngine

    同DTD一样,Schema也提供了一套完整的机制以约束XML文档中标记的 使用,但相比之下,后者基于XML,更具有规范性。Schema利用元素的内容和 属性来定义XML文档的整体结构,如哪些元素可以出现在文档中、元素间的关 系是什么、每个元素有哪些内容和属性、以及元素出现的顺序和次数等等,一目 了然

    2.4

    XML文件的解析

    处理XML文档的应用程序都需要一个XML解析器,XML解析器的作用是:    文档中提取实际的数据,然后创建一系列的事件或者是新的数据结构

    解析器也能够检查文档是否是格式良好的,也就是说是否严格的遵守了XML 规范,而这是处理XML文档之前就必须进行的工作

    解析器还应该能够判断一个文档是否是有效的(如果该文档有一个    DTD/Schema的话)    当前比较常见解析器有:IBM    Sun

    XML4J、Apache    Xerces、

    Project X、Microsoft MSXML(IE5.0以上版本已经集成了MSXML解析器)、 Java以及James    Clark

    Oracle XML Parser for    XP等。    2.5

    XML文件的显示

    XML文档本身是重内容而不重形式。XML的显示~般用样式单来描述文档    的显示效果。样式单是一种专门描述结构文档表现方式的文档,它既可以描述这 些文档如何在屏幕上显示,也可以描述它们的打印效果,甚至声音效果。样式单 一般不包含在XML文档内部,而以的文档方式存在。W3C给出了两种样式 单语言的推荐标准,一种是层叠样式单CSS(Cascading 可扩展样式单语言XSL(eXtensible IE打开的未有样式单简单的例子:    Stylesheet Style    Sheets),另一种是

    Language)。如图2.1就是一个用

    基于XML的安全通信平台一一xMLEngine    图2.1用IE打开的没有样式单的XML文档    2.6应用程序接口

    处理XML文档是由解析器来完成的,应用程序要创建、访问和操作一个 XML文件就需要一个XML解析器的接口,W3C和XML—DEV邮件列表成员分 别

page 12

提出的两个标准应用程序接口:DOM和SAX。 DOM和SAX在应用程序开发过程中所处地位可以用下图2.2来表示:    图2.2DOM和SAX

    从图中可以看出,应用程序不是直接对XML文档进行操作的,而是首先由    茎士兰竺!塑室全婆堕兰笪二二苎竺!墅型兰 XML分析器对XML文档进行分析,然后,应用程序通过XML分析器所提供的 DOM接13或SAX接口对分析结果进行操作,从而间接地实现了对XML文档的 访问。    1、DOM

    DOM的全称是DocumentObjectModel,也即文档对象模型。在应用程序中, 基于DOM的XML分析器将一个XML文档转换成~个对象模型的集合(通常 称DOM树),应用程序正是通过对这个对象模型的操作,来实现对XML文档数 据的操作。通过DOM接121,应用程序可以在任何时候访问XML文档中的任何 一部分数据,因此,这种利用DOM接口的机制也被称作随机访问机制。 DOM接151提供了一种通过分层对象模型来访问XML文档信息的方式,这些 分层对象模型依据XML的文档结构形成了一棵节点树。无论XML文档中所描 述的是什么类型的信息,即便是制表数据、项目列表或一个文档,利用DOM所 生成的模型都是节点树的形式。也就是说,DOM强制使用树模型来访问XML 文档中的信息。由于XML本质上就是一种分层结构,所以这种描述方法是相当 有效的。    2、SAX

    SAX的全称是SimpleAPIsforXML,也即XML简单应用程序接口。与DOM 不同,SAX提供的访问模式是一种顺序模式,这是一种快速读写XML数据的方 式。当使用SAX分析器对XML文档进行分析时,会触发一系列事件,并激活 相应的事件处理函数,应用程序通过这些事件处理函数实现对XML文档的访问, 因而SAX接口也被称作事件驱动接口。 3、DOM和SAX的比较 DOM树所提供的随机访问方式给应用程序的开发带来了很大的灵活性,它 可以任意地控制整个XML文档中的内容。然而,由于DOM分析器把整个XML 文档转化成DOM树放在了内存中,因此,当文档比较大或者结构比较复杂时, 对内存的需求就比较高。而且,对于结构复杂的树的遍历也是一项耗时的操作。 所以,DOM分析器对机器性能的要求比较高,实现效率不十分理想。不过,由 于DOM分析器所采用的树结构的思想与XML文档的结构相吻合,同时鉴于随 机访问所带来的方便,因此,DOM分析器还是有很广泛的使用价值的。

    基于XML的安全通信平台一一XMLEngine

    SAN分析器在对XML文档进行分析时,触发了一系列的事件,由于事件触发 本身是有时序性的,因此,SAX提供的是一种顺序访问机制,对于已经分析过的 部分,不能再倒回去重新处理。SAX之所以被叫做”简单”应用程序接V1,是因为 SAX分析器只做了一些简单的工作,大部分工作还要由应用程序自己去做。也就 是说,SAY分析器在实现时,它只是顺序地检查XML文档中的字节流,判断当 前字节是XML语法中的哪~部分、是否符合XML语法,然后再触发相应的事件, 而事件处理函数本身则要由应用程序自己来实现。同DOM分析器相比,SAX分 析器缺乏灵活性。然而,由于SAX分析器实现简单,对内存要求比较低,因此实 现效率比较高,对于那些只需要访]h]XML文档中的数据而不对文档进行更改的 应用程序来说,SAX分析器更为合适。

    基于XML的安全通信平台一~XMLEngine    第三章.Web Service概述    3。1    基本概念

    Web Service是能够基于网络,尤其是基于万维网(World Wide w曲)直接调

    用的能够处理离散任务或连续任务的软件模型。目前较为流行的应用是,由一家    公司对其专有数据进行封装,提供Web Service,然后其它公司就可以通过Internet 来动态使用这些在线服务。这为未来全球的电子商务发展提

page 13

供了新的标准和架    构。

    Web Service是的、模块化的应用,能够通过因特网来描述、发布、定位 以及调用。在Web Service的体系架构中包括三个角色:服务提供者(Service

    Provider)、服务请求者(Service Requestor)、服务注册器(Service Registry)。角色问

    主要有三个操作:发布(Publish)、查找(Find)、绑定(Bind)。

    图3.1清楚的描述了三种角色,以及角色之间的作用关系。    图3.1Web Service关系图

    Web服务是位于应用程序代码和应用程序之间的一个接口。它的作用相当于    一个抽象层,将应用平台与编程语言相关的细节(如怎样调用应用程序代码)等 分隔开。这个标准化的抽象层意味着任何支持Web的服务的编程语言都可以访    问应用程序提供的功能。Web服务是以一种与平台无关的方式提供了这种跨平台

    的互操作性。

    基于XML的安牟通信平台一一xMLEngine    平台和编程 语言相关的    图3.2

    Web服务在应用程序客户和应用程序代码之间提供了一个抽象层    崎一

    Web服务 语言未知的 Protocol的缩写,是一种基于XML的不依赖    3.2

    Web Service协议标准

    3.2.1简单对象访问协议(SOAP)    sOAP是Simple Object    Access

    传输协议的表示层协议,用来在分散或分布式的应用程序之间方便地以对象的形 式交换数据。在SOAP的下层,可以是HTTP/HTTP,也可以是SMTP/POP3,还 可以是为一些应用而专门设计的特殊的通信协议。 SOAP是序列化调用位于远程系统上的服务所需信息的标准方法,这些信息 可以使用一种远程系统能够读懂的格式通过网络发送到远程系统,而不必关心远 程系统运行于何种平台或者使用何种语言编写。SOAP以XML格式提供了一个 简单、轻量的用于在分散或分布环境中交换结构化和类型信息的机制。SOAP本 身并没有定义任何应用程序语义,如编程模型或特定语义的实现;实际上它通过 提供一个有标准组件的包模型和在模块中编码数据的机制,定义了一个简单的表 示应用程序语义的机制。这使SOAP可用于联合各种现有的网络协议和格式,包 括HTTP、SMTP和MIME,并可被用于消息传递到RPC的各种系统。 SOAP解决了通过防火墙传送往返于远程应用程序的消息的问题。除了通过 某些预先设定的作为特定用途的端口,防火墙通常禁止通过其它端口进行远程通 讯。这就出现了一个问题,大部分分布式协议不使用分配的端口,而是动态地选 择端口。微软SOAP技术实现的解决方案是通过HTTP的80端口传送对远程进 程的调用。这个远程调用使用XML定义消息请求或响应的格式,把调用附加到 HTTP协议的顶部。这个技术的优点之一就是降低通过防火墙传送消息的复杂 性。但是80端口通常还用来作为Web通信之用,所以可能会降低其效率。 SOAP可以用来解决因特网应用程序的交互性问题。你可以使用一种平台无    基于XML的安全通信平台~一xMLEngine

    关性方式在远程(或本地)服务器上访问对象和服务。现在的互联网世界由不同 的操作系统、不同的防火墙、不同的产生远程过程调用的方法和平台组成。为了 跨因特网交互,客户机和服务器都需要了解彼此的安全类型和信任、服务部署模 式和实现细节以及平台语言。使用SOAP,这种平台特定性的混乱局面就会结束。 基于已

page 14

被业界广泛接受的HTTP标准和XML标准,SOAP也可与其竞争对象RPC 技术连通,并提供用于任何操作系统、程序语言和平台的轻量级消息格式。 在SOAP体系结构有四个主要的部分: SOAP信封(envelope),用于描述消息内容和处理方法。 一个SOAP消息包含一个信封(envelope),信封可以包含一个可选的标题 (header)和一个必需的正文(body),如图3 3所示。

    图3.3 SOAP消息结构

    SOAP编码规则:定义了一个编码机制用于交换应用程序定义的数据类型的 实例。

    SOAP

    RPC表示,定义了一个用于表示远程过程调用和响应的约定。

    SOAP绑定,定义了一个使用底层传输协议来完成在结点间交换SOAP信封    的约定。

    简单的说,SOAP提供了使用完全于平台的访问服务、对象和服务器的    基于XML的安全通信平台一一XML    Engine

    技术。通过SOAP,你将能够查询服务、调用服务、与服务通讯并处理服务,而 不用去关心远程系统的位置、所在的操作系统或平台到底是什么样的。 3.2.2

    Web Service描述语言(WSDL)    Description

    wsDI。是Web Service

    Language的缩写,该语言将网络服务定义

    成一个能交换消息的通信端点集,为分布式系统提供了帮助文档,同时也可作为 自动实现应用间通信的解决方案。    Web服务定义语言(Web

    Services Definition    Language,WSDL)是一个建议性

    标准,用于描述Web服务的技术调用语法。WSDL定义了一套基于XML的语 法,将Web服务描述为能够进行消息交换的服务访问点的集合,从而满足了这    种需求。WSDL服务定义为分布式系统提供了可机器识别的SDK文档,并且可

    用于描述自动执行应用程序通信中所涉及的细节。WSDL的当前版本是1.1,规

    范可以从趣p;£凸强盟巡3:Q£g厦基丛!监获得。

    WSDL就是描述XMLWeb服务的标准XML格式,WSDL由Ariba、Intel、

    IBM和微软等丌发商提出。它用一种和具体语言无关的抽象方式定义了给定Web 服务收发的有关操作和消息。就其定义来说,你还不能把WSDL当作一种对象    接口定义语言,例如,CORBA或COM等应用程序体系结构就会用到对象接口 定义语言。WSDL保持协议中立,但它确实内建了绑定SOAP的支持,从而同    SOAP建立了不可分割的联系。 WSDL服务描述是一个XML文档,它与WSDL模式(schema)的定义一致。

    WSDL文档并不是完整的服务描述,而只包括了服务描述任务的较低层次,即: 服务接口的原始技术描述。WSDL是Web服务的接口定义语言IDL(Interface DefinitionLanguage,),本质上,WSDL描述说明的是Web服务的以下三个基本    属性:

    服务做些什么一服务所提供的操作(方法)。 如何访问服务一数据格式详情以

page 15

及访问服务操作的必要协议。

    服务位于何处一由特定协议决定的网络地址,如URL。    3.2.3统一描述、发现和集成协议(UDDI)

    UDDI(统一描述、发现和整合)是一套基于Web的、分布式的、为Web    Service

    提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的    Web Service注册,以使别的企业能够发现的访问协议的实现标准。    2

    基于XML的安全通信平台一一XMLEngine

    通过使用UDDI的发现服务,企业可以单独注册那些希望被别的企业发现的    自身提供的Web服务。企业可以通过UDDI商业注册中心的Web界面,或是使 用实现了”UDDI

    Programmer。s

    API标准”所描述的编程接口的工具,来将信息加

    入到UDDI的商业注册中心。UDDI商业注册中心在逻辑上是集中的,在物理上 是分布式的,由多个根节点组成,相互之间按一定规则进行数据同步。当?个企 业在UDDI商业注册中心的一个实例中实施注册后,其注册信息会被自动复制到 其它UDDI根节点,于是就能被任何希望发现这些Web服务的人所发现。    基于XML的安全通信平台一一xML    Engine

    第四章XML安全和SOAP安全基础

    XML是保证数据的可移植性的一种有效可行的技术,XML安全是将“应用 安全”运用到XML结构上去的应用,是把数据保密和认证应用到XML结构上 去的应用。 SOAP是用于数据交换的轻量级的以XML为基础的协议。它促进了由远程 过程调用和Ⅱ向应产生的数据传送。它设计成用于分布式和远程应用程序中,并日 它是Web服务的主要组件。SOAP提供了包含消息及其处理信息的信封。由于 这个信封内容很机密,所以安全性就是您必须解决的问题。XML加密对此问题 提供了无缝的解决方案。 SOAP本身是XML,它让您使用XML加密以任何合适的方式随意处理加 密问题。例如,您可以决定对整个SOAP主体加密,也可以对部分主体加密。 本论文中所有有关XML的技术都源自由W3C所提出的标准,W3C提出了 多种互操作技术(许多规范、指南、软件和工具等等)来引导Web充分发挥它 的潜能,即作为W3C一种用于信息、商务、交流和共同理解的论坛。目前W3C 中与XML安全直接有关的主要包括XML签名、XML加密和XML密钥管理规 范(XKMS),本项目也主要是围绕前两个方面进行研发的。    4.1

    XML签名和验证过程简介

    依照RFC,设计的XML签名带有多个目标,可提供“对任何数据类型的    完整性、消息认证、或签名者认证服务,无论是在包括该签名的XML内部还    是在别处。”

    4.1.1什么是XML签名

    XML签名其实是特定的语法,用于表示对任意的数字内容的数字签名,XML 签名本身就是一个XML文档,它具有规范化XML文档所具有的一切特性。XML 签名的高层生成过程是生成一个签名清单的规范化形式的HASH值,并通过一 个强单向变换把签名清单的内容与一个钥联系在一起。 1、Xb'lL签名与一般的数字签名的区别

    基于XML的安全通信平台一一xML    Engine

    XML签名是具有结构化的、特定于上下文的和可扩展的特性。而一般的数 字签名是分段的、与上下文无关的和严格的。

page 16

    2、X卜1L签名类型

    XML的签名类型一般包括以下三种结构类型: ●被封装(Enveloped Signature)的签名:

    这一类型的特点是:原始文档是<Signatwe>的父元素    ●封装式(Enveloping Signature)的签名    这一类型的特点是:原始文档是<Signatllre>的子元素    分离式(Detached Signature)的签名

    这一类型的特点是:原始文档平1]<Signature>之间没有父子关系    4.1.2签名过程简介

    生成和验证XML签名需要两步,签名生成的过程是核心生成,签名验证的    过程是核心验证

    1、XML签名的结构    <Signature>    <Signedinfo>

    <SignatureMethod/> (<Reference(URl=)?> (<Transforms>)? <DigestMethod>    24

    基于XML的安全通信平台一一xML    Engine

    <DigestValue>

    </Reference>)+72 1

    </Signedinfo> <SignatureValue>    (<Keylnfo>)? (<Object>)+    </Signature>    注:。:表示零个或者多个出现    +:表示一个或者多个出现    ?:表示零个或者一个出现

    2、元素描述 <Signature>:该元素标识了一个特定上下文环境中完整XML签名。在单个文件 上下文环境中存在多个<Signature>实例的情况下,可以增加可选的Id属性来作 为一个标识进行区分了。它一般包括两个实体:一个原始的文档或者原始文档的 集合(<Signedinfo>)和一个实际的签名值(<SignatureValue>) <Signedinfo>:包括实际签名的的所有信息,即签过名的信息 <Reference>:是XML签名的核一15,部分,是描述如何获得资源,如何在可能的情 况下变换资源以生成被摘要的数据,随后又把数据签发成<Signedlnfo>元素的一    部分

    <Transforms>:是一个或多个<Transform>元素的容器,<Transform>说明实施变

    换的类型,是以抽象的方式描述怎样获得被摘要的数据。它的工作原理是层叠的,

    是从一种变换输出,然后再输入到下一种变换,每下降一步就要应用一种新的变    换,直到数据到达接收器

    <DigestMethod>:是一个必须的元素用来指明将被用于签名对象的摘要算法 <DigestValue>:存放摘要的编码值,一般摘要总是使用Base64编码

    <SignatureValue>:用于放置经过Base64编码后的数字签名实际值 <Keylnfo>:包括用来验证XML签名的具体信息,它能使接收者验证签名,而 没有必要直接查找验证密钥 <Object>:是一个通用容器,包含其它有用的元素

    基于XML的安全通信平台一一xMLEngine

page 17

    ———————————————————_____—————_—’——————————_—-—●-——_—__-——————____--—一    2、核心生成过程

    图4.1 XML签名的过程

    至主兰坚兰堕窒金望堡兰堕二二兰竺生兰堕塑!

    流程图4.1大致地描述了一个XML签名的过程,对于核心生成包括两个方    面:引用元素的生成和对Signedlnfo签名后SignatureValue值的生成,它们的步    骤分别描述如下:

    ①引用生成 对于每一种要被签名的资源:    引用变换(如果存在)

    计算变换后资源的摘要值 创建<Refernece>元素。这包括可选属性、变换及表示摘要算法的标识符和实际    摘要值    ②签名生成

    使用在引用生成中形成的引用元素,和指定的签名方法和规范化方法一起产尘    Signedlnfo元素

    对SignedInfo元素进行规范化操作,然后对Signedlnfo元素按照Signedlnfo中指 明的算法进行计算等到SignatureValue元素的值

    完成上述工作后,将得到的包括SignedInfo、Object(s)、Keylnfo(女N果存在)和

    SignatureValueg等构造成Signature元素    4.1.3核心验证步骤

    与签名相对应,验证也有类似的几个方法和步骤:    1、引用验证

    首先,必须对<SignedInfo>元素进行规范化。对于每一个要验证的    <Reference>,都有如下步骤: ●通过对每一个<Reference>元素的URI属性引用解析来获得要待计算摘要的 数据流。如果不存在任何URI属性,那么应用就应该知道数据源的位簧。最 后要待计算摘要的数据是可先选的层叠变换的结果。 ?对第1个步骤中得到的数据流计算摘要,此过程使用<DigestMethod>元素中 指定的HASH函数来处理当前的<Reference>元素

    ●将第2步骤中计算出来的摘要值和当前正处理的<Reference>元素中的

    基于XML的安全通信平台一一xML    Engine

    <DigestValue>元素的内容作比较,如果这些值不匹配,则引用验证失败。

    2、签名验证

    从<Keylnfo>元素或具体应用的密钥源中得到验证密钥。使用

    <SignamreMethod>的规范化确定正使用的签名算法,并对规范化形式的 <SignedInfo>元素计算签名值。把签名值和<signedInfjValue>元素内的值作比较。    如果这些值不匹配,则签名失败。    4.2

    XML的加密和解密

    4.2.1基本概念及特点

    XML加密(XML Encryption)是使用XML句法定义的一种过程,用于加密

    数据和结果的表示。XML加密为需要结构化数据安全交换的应用程序提供了+

page 18

    种端到端安全性。 XML加密与传统的SSL/TLS的不同之处在于,它涉及到了两个重要领域,

    即:加密交换数据的一部分和多方(不止两方)之间的安全会话。象其它任何文    档一样,可以将XML文档整篇加密,然后安全地发送给一个或多个接收方。 例如,这是SSL或TLS的常见功能,但是更令人感兴趣的是如何对同一文档 的不同部分进行不同处理的情况。XML的一个有价值的好处是可以将一整篇 XML作为一个操作发送,然后在本地保存,从而减少了网络通信量。 与传统的加密方式相比,XML可对远程WEB资源、本地文档,以及XML

    中的元素及元素内容分别进行加密;另外XML可以对同一文档中的不同部分采    用不同的密钥加密,而普通的加密方法只能用单个密钥对整个明文进行加密。    4.2.2

    XML加密的方式

    根据XML加密原理和规范,总结XML加密的方式有如下几种情况: XNL使用XNL加密对整个文档加密 加密前的原始数据是XML类型的文件,    并且IANA对XML的正式类型    基于XML的安全通信平台~一xML    Engine

    定义是:http://www.isi edu/in—notes/iana/assignments/media—typeshexffxml。    ?xml versiOn=’1.0’?>    EncryptedData

    xmlns-’http://www.w3.org/200I/04/xmlenc#’ ype=’http://www.isi.edu/in—notes/iana/assignments/media—types/text    xml>

    对单个元素加密

    此时Type属性的值应该是http:Hwww.w3.org/200I/04/xmlenc#Element,这 里不再使用IANA类型了,相反,我们使用XML加密己指定这个类型

    ?xml version-’1.O’?>    Root—Element>

    <original—document>    </original_document>    <EncryptedData    xmlns=i

    http:|f㈣?w3.org/200I/04/xmlenc#:

    Type=’http://www.w3.org/200I/04/xmlenc#E1ement’>

    </EncryptedData>

    说明:){]<EncryptedData>来替换好加密的单个元素

    加密元素的内容 Type属性的值应该是:http://www.w3.org/200I/04/xmlenc#Content

    ——————————————!旦2堡些—些望堕!鱼二二兰坚!!!!!登    ?xml version:’1.0’?>

    Root—Element> <original_document>    </original document>    <encrypted_document>    <Encrypt edData

page 19

    xmlns=’http://www.w3.org/200I/04/xmlenc#’ Type=’http://www.w3.org/200 I/04/xml enc#Content,>    </EncryptedData>

    </encrypted_document>    cryptedData>

    说明:<encrypted—documenp是待加密的元素标签,,匪J<EncryptedData>替换    元素的内容。

    ●加密非XML数据

    Type属性值应该是:Type=http://www.isi.edu/in.notes/iana/assignmentsp/”。 比如加密一个JPEG图片文件,此时Type属性的值就应该设置为: Type=。http://www.isi.edu/in—notes/iana/assignments/media—types/j

    peg,其中加密方式是将按字节序列对整个JPEG文件进行加密,并将作为    CipherValue元素的内容出现。

    ?xml version=’1.0’?> EncryptedData    xmlns=’http://www.w3.org/20叫/04/Xmlenc#’

    ype=:http:}I㈣.isi. edu/in    >

    notes/iana/assignments/media—types/jpeg

    <CipherData>    <CipherValue>    </CiDherValue>    </CipherData>    4.2.3加解密过程简介    1、XML加密的结构

    茎兰兰坚!堕茎全望堕!鱼二二兰坚!!!!!兰    <EncryptedData Id?Type?>    <EncryptionMethod/>?    <ds:Keylnfo>

    <EncryptedKey>?

    <AgreementMethod>?    <ds:KeyName>?

    <ds:RetrievalMethod>?    <ds:+>?

    </ds:KeyInfo>?

    <CipherData> <CipherValue>?    <CipherReference URI?>?

    </CipherData> <EncryptionProperties>? </EncryptedData>

    注:+:表示零个或者多个出现 +:表示一个或者多个出现 ?:表示零个或者一个出现

    2、元素描述:

    EncryptedData:是XML加密句法中的基础元素之一 EncryptionMethod:主要功能是识别加密算法和可能的辅助参数,比如密钥长度、 填允模式(针对非对称密码),或是加密模式。加密算法一般用URI标识符来表

page 20

    不

    KeyInfo:描述了如何获得密钥从而对<CipJerData>元素的内容解密

    EncryptedKey:可以被用来从一个发送者和一个已知的接收者之间传递加密密 钥。它可以作为一个单独的XML文档使用,也可以加在应用程序中,或者是包

    含在元素<EncryptedData>d?,作为ds:Keylnfo的一个子元素。 AgreementMethod:用来在数据加密时进行共享密钥的协商

    KeyName:表示一些类型,它可能包含有接收者的名称等内容,目的是认证解密

    密钥的公开持有者(无论解密密钥是对称的,还是非对称的) RetrievalMethod:是为了用特定的<ds:Keylnfo>;元素把远程的验证密钥关联起来,

    基于XML的安全通信平台一一xML    Engine

    它指向解密密钥,尤其是指向<EncryptedKey>元素,为这一特定的 <EncryptedKey>元素提供一种功能上的关联

    CipherData:主要功能是以某种形式存储加密后的数据,如果是充当封装作用,

    那么就会有<CipherValue>子元素,它包含Base.64编码的密文数据;如果是充当 引用作用,就会有<CipherReference>元素,它引用的是密文数据(加过密的) CipherValue:存储加密后的数据    CipherReference:引用密文数据(加过密的)

    EncryptionProperties:它包括一个或者多个<Encr),ptionProperty’子元素,这些了    元素可以包括任何命名空间中的任意元素。    标识符:

    Type=http://www.w3.org/200I/04/xmlenc#EncryptionProperties,可以被元素

    ds:reference中使用来识别引用的类型。有关元素EncryptedData和EncryptedKey

    产生时的附加信息项也可以放在一个EncryptionProperty元素中,如:时间/日期    戳等。    ——

    苎主茎坚!塑塞全垩堕!鱼=二兰翌!!!!尘1    4.2.4加密器处理过程流程图    图4.2加密器处理过程流程图    33

    ——茎主!竺!:塑塞全望堕!鱼二二兰坚!!!!塑1    4.2.5解密器处理过程流程图    图4.3解密器处理过程流程图    34

    基于XML的安垒通信平台一一xML    Engine

    第五章XML安全平台一一xML Engine的设计

    简单一段安全程序或代码是无法与实际的应用相结合的,在如今应用为王的    时代,即使国家将继续支持国内安全产业,但是链路级产品的市场仍然非常有限,

    并且受制于用户、运营商和集成商等,仅仅提供的应用模块是非常危险的布 局,也不能最大限度的发挥作为一个安全产品所应起到的安全作用。 因此我们确立

page 21

了最终要立足于为用户提供系统安全服务和解决方案的目标和内

    容,只有这样才能使公司实现较大的利润增长点,因此我们的产品应该是与应用    系统整合在一起的、对用户是完全透明的、应用程序几乎不用作什么改动就能实 现预定目标的整体解决方案。 在此我们提出了“IT安全化”和规模化的方案,对于企业来讲,盈利的方 式表现为面向最终用户,才能做到规模化,但必须提供低成本的产品,这点比较 困难;面向面对大量最终用户的行业客户,如电信、银行,以点带面,提供“规 模化”产品,最终用户可以由行业客户“赠送”,通过“服务”和行业客户的服 务端产品获得收入:面向运营商,这类似于有大量最终用户的行业客户;面向有 良好客户关系的集成商,它能将公司产品销售到这些客户身上。但是,应用安全    所面I临的问题是:应用千差万别,最终用户自身的要求也千差万别,很难一个产

    品满足所有这些用户的要求,这势必增加产品的成本,而且面临没有好评的结果:

    行业客户能提出自己的确定需求,但不会很多,需要公司先有方案,让其认可,    再实施;但这样面临方案被抄袭给其他关系户的可能,带来不公平竞争和方案、    产品的复制;应用掌握在集成商手里,用户也没办法左右,安全很难增加到现有    的应用中。

    我们提出的开发以Web Services应用提供消息级安全支持的XMLEngine产 品,该产品研发成功后,能够应用于所有以XML为基础的应用环境,为这些环

    境提供可定制、可动态插拔的消息级安全服务。

    ——一兰王兰坚!塑窒全望堕!鱼二二圣竺!墅!!鉴    5.1定义

    EC:XML ES:XML

    Engine Client Engine Server    XML Parser..XML文档解析器    5.2典型应用环境

    为体现XML Engine的典型应用和应用价值,我们设计并实现当前典型应用 结构的Web Services应用环境“基于Web Services的数字社区应用”,并在应用

    环境中实现购物系统和网上银行系统。目前,Web Services应用环境有两种不同

    的拓扑结构,如图5 1所示,图5.1a是目前常见的结构,所有Web Services请求 由www服务器代理发出;图5.1b是Web Services今后的主要应用情况,Web Services请求由浏览器直接发出。    基于XML的安全通信平台一一xMLEngine    瓢甏《

    L.2链奄基    品    艄雒

    n ∥l一《自5{t    \∥    \∥

    厂、 除一小镕{;l{    B    蚺锚    ;

page 22

    =:Ⅲ,    蠡    @固    一    j    固9

    a.应用服务器发SOAP包    b.浏览器直接发SOAP包

    图5.1基于Web Service的数字社区应用

    如图5.1所示,在“基于Web Service的数字社区应用”中,用户访问的大

    致流程是: ●用户访问“数字社区www服务器”,该服务器的作用类似于门户(Portal),

    返回用户下一步操作需要的网页,这些网页包含访问不同Web Services服务

    (如一般商品购买、网上银行等)所需的逻辑; ?用户根据自己的需要填写网页上的内容,比如购买一般商品则填写购买商品 的名称、数量,以及用户的银行帐号信息等等,然后通过点击“确认”按镉

    触发相应的Web Services调用;

    图5.1a:wwW服务器(tomcat)根据户输入的相关信息,构建SOAP消息,

    向合适的w曲Services服务器发送请求,如果是购买一般商品则向“一般商 品”服务发送SOAP请求;Web Services服务器经过处理,发回结果数据;

    www服务器(tomcat)将结果形成网页文档发回用户浏览器;    ●

    图5.1b:浏览器根据网页上所包含的逻辑,以及用户输入的相关信息,构建    ——一

    回结果数据;

    苎±兰竺兰塑塞全望堕兰鱼二二兰竺生垦!!璺!

    SOAP消息,向合适的Web Services服务器发送请求,如果是购买一般商品 则向“一般商品”服务发送SOAP请求:Web Services服务器经过处理,发

    ●用户通过浏览器可以看到Web Services调用的操作结果。 ?其中购物系统主要用于过滤模块的演示,包括商品查询、商品列表、购物车、 广告等功能;网上银行系统主要用于加密和签名模块的演示,包括用户余额 查询、用户明细账查询、用户转账等功能以及管理员余额查询、管理员明细 账查询等功能。    为了全面测试XMLEngine,该应用设计注意以下几点:    正常的进行SOAP请求和应答。以便进行整个系统流程的测试。

    包含大量数据的SOAP包的传送。以便测试系统处理大数据的性能。 ●包含复杂结构数据的SOAP包的传送。以便测试系统处理复杂逻辑的性能。 ?SOAP包中的标签和内容都应该包含需要过滤的字符串,以便测试系统过滤    功能

    典型应用环境作为XML Engine项目的演示和测试附加功能,完全于项    目。

    5.3基本设计概念和处理流程

    在图5 1中,步骤①使用常规的浏览器和www服务器之间的数据交换,使 用HTML表达数据,并且其内容是任何人都可以查看的,不涉及任何用户的私 有数据,这部分连接不需要XML Engine的保护。 而步骤③中则涉及了用户的交易数据,包括用户购买商品的种类、数量,银 行账号等信息,这些需要保护的数据在缺

page 23

乏安全措施的情况下,很容易被窃取。 我们的XMLEngine正好可以在这里大显身手。 图5.1中用户浏览器和网上商店等Web Services服务可以抽象成SOAP的客 户端和服务端(图5.2a),使用了XML Engine的部署示意图(图5.2b):

    薹王XML的安全通信平台一一XML    Engine

    图5.2 XMLEngine部署

    由于位于SOAP客户端和服务端的XMLEngine处理不同,因此我们将XML Engine也分为XMLEngineClient(简称EC)和XMLEngineServer(简称ES), 分别和SOAP客户端和服务端部署在一起。

    5.4 XML

    Engine部署和使用的大体流程

    用户根据已有的XMLEngine组件情况(加密、签名、过滤等)和安全策略, 形成“安全管理配置”。 安全管理配置文件被存放在ES中,并通过使用配置管理员签名保护配置文 件的完整性。 在每一个session开始的时候,EC下载对应Es的配置文件,并检查其签名, 确定安全管理配置文件的完整性,得到“安全管理配置”。    SOAP

    CLIENT发出的XML消息被EC截获,EC分析该XML消息,并根    据“安全管理配置”进行处理(例如对指定标签加密、签名,对指定内容进行过 滤),形成新的经过安全处理的XML消息。

    EC将经过安全处理的XML消息通过公共信道发往ES,如果这时的数据已    一

    董主茎坚兰塑窒竺望堕三!三堕二二兰坚兰兰堡!望

    滤),形成新的经过安全处理的XML消息。 EC将经过安全处理的XML消息通过公共信道发往ES,如果这时的数据已 经根据用户需求进行加密操作,就可以保证消息的机密性。 Es收到EC发来的XML消息,对其中的内容进行逆变换(比如,对加密的 部分解密,对签名的部分进行验证),如果这时验证签名的结果正确,则能够确 定用户所发的消息是完整的。 Es将已经经过还原处理的XML消息(在有的情况下,这时的消息并不完 全等同于SOAP Client所发出的原始消息,比如经过过滤的消息)发往SOAP    Server。 SOAP

    Server按照其原有方式处理SOAP中所包含的应用请求,形成“结果    消息”,发往ES。 ES这时执行步骤4中EC所进行的操作(比如加密、签名、过滤等),对结 果消息进行安全处理。并通过公共信道发往EC。 EC收到ES发来的结果消息后,执行步骤6种ES的操作(比如解密、验证 等),如果EC验证通过,则可保证消息确实是希望的ES发出的。最终还原结果 返回给用户端的SOAP Client,这样,SOAP Client所看到的结果消息和XML Engine未部署时相同(在有的安全组件存在时,可能会有不同,比如过滤组件存 在时,可能对结果消息进行了过滤)。 在XMLEngine的设计中,注重了对原有应用的保护:在部署时几乎完全不 用修改应用,用户只需要安装XML Engine,配置安全管理组件,就可以对应用 进行很好的安全保护。有一个细节必须指出来,就是原有应用还是需要做细微的 改变,即将SOAP Cliem发出的SOAP请求通过代理的形式发往EC。在浏览器作为SOAPCIiem的情况下,配置浏览器代理是非常容易的。 需要说明的是,EC和ES并不是一一对应的关系,每一个EC都可能和多个ES 连接,同样,每一个ES都可能接收多个EC的连接,这种情形,和浏览器与Web 服务器的关系是相似的(如图5-3所示)。    ——一董±兰兰!堕耋全望堕兰鱼二二!坚!!!型竺    ◇◇◇ 国眍囝w国

    图5 3多个EC和ES的连接示意图    国黯国

page 24

    5.5

    XMLEngine的结构 XML Engine总体结构    5.5.1

    XML Engine总结构如图5.4所示

    ————————————————』壁王型!箜塞垒望堡!鱼二二兰坚!墅!塑!

    图5.4 XML Engine总结构图 安全管理配置 用户配置部分起着将用户安全策略转换为XMLEngine配置的重要作用,其主要 任务是: ?对配置管理员的身份认证; ●友好的用户配置界面: ?对新安装的系统,配置并生成新的配置文件; ●对已经配置的系统,装入并修改配置,形成新的配置文件; ●对配置文件完整性的保护; ●将配置文件明文上传到ES。 需要说明的是安全配置管理是比较的一个模块,它和其它模块的联系就    42

    ——墨士兰竺!塑室全望堕兰鱼二二兰坚!!矍虫!

    是安全策略配置文件:Config.xml,图5.5是安全管理配置模块的部署示意图。    岛户配谶终蠛

    安全策略 配鼍服务器    函◇国    足

    x砒L £ngljl8 sERyER

    图5.5安全配置管理部署示意图 图5.6表示了“安全管理配置”的流程示意图,其中有用户标记的表示需要 用户输入。配置界面的内容根据用户安装的安全组件确定。    <

    开始配置)

    7涮,<nt通眵1<耋器。) 隹凰,◇肴@    1输:譬擀8|1    f7一夏n否。    \ /    广L    蛰    国    叠

    图5.6安全管理配置流程图 当经过签名的配置文件送达ES之后,如果ES正在运行,需要通知ES重新 读取新的配置文件(一般来说,需要ES重新初始化一次)。

    5.5.2

    XML Engine运行结构

    当XMLEngine接收到数据后,内部处理过程如图5.6所示    基于XML的安全通信3卜台一一xML    Engine

    理,否则直接将数据送到出连接; ?基础平台使用“XML格式驱动”解析XML文档(即SOAP报文),并将结 果保留在内存中,以便今后安全模块的处理:    ●

    “安全功能驱动”检查已经装入的安全模块,逐一调用这些模块,并将已经 解析的X'ML文档传给这些模块;

    在需要“流程控制”的模块,由流程控制负责模块中安全功能的使用; ?不需要流程控制时,由安全功能驱动直接调用相应的安全模块: 所有的安全模块执行完毕后,基础平台再次使用“XML格式驱动”,这一次 将处理过后的XML文档重组起来,并通过出连接发送出去。

    图5.7 XML Engine内部处理过程

page 25

    5.5.3基本平台

    整个项目通过引擎平台组织在一起,平台将各个组成部分结合起来,协调其 运行,并提供良好的架构。具体来说,平台的任务有:    基于XML的安全通信平台一一xMLEngine    5.5.3基本平台

    整个项目通过引擎平台组织在一起,平台将各个组成部分结合起来,协调其 运行,并提供良好的架构。具体来说,平台的任务有:

    构建良好的可升级的架构,构成一个完整的安全系统,并提供模块化的快速 升级能力;

    提供可插拔的扩展模块机制,使安全模块可以方便的加入和卸出系统;    ●

    处理多进程、线程运行的管理,为系统各部分分配任务; 提供XML Engine公共功能支持:连接支持;XML文档的处理,包括解析和 重组:配置文件的获取和完整性验证。

    完成系统平台其它底层支撑功能,如统一的日志管理、出错管理等等。

    图5.8基本平台与XMLEngine其它部分的关系 1、连接支持 正是由于处于Web Services客户端和服务端XML Engine连接支持部分的不 同,导致了XMLEngine分为EC(客户端)和ES(服务端)。除此之外,EC和 ES几乎没有区别。 连接支持部分负责XMLEngine最外层的接口,换句话说,产品实现之后, 应用从外部看到的就是这部分。具体地,连接实现分为客户端和服务器端两部分。    45

    基于XML的安全通信平台一一xMLEngine    KMLEngine    gMLEngine    黑客户端    割    客户端    匿    露 隧    r器祷匿    筐

    服务器端    一    翻

    图5.9基本平台连接支持示意图 按连接方向划分,连接有两稀:麓昕(受责签瞬远端赘逡接请求)积发送请 求(负责向远端发送避接请求)。 按与矫部应用的关系翔分,连接也是两种:应用逐接(连缓应用的客户端和 服务器端)和安全连接(连接XMLEngine,在这种连接下,信息交流鼹安全的)。 由于客户端和服务器端各自不同的处理流程,谶接实际上有八种不同的形 式,这八静形式的连接实现有各鱼的特性,共同完成XML Engine之越酾与应用 之间的连接交互。 2、基本乎台对配置文释戆处疆 在Es中,基本平台对配鼹文件的处理比较简单:在平台初始化的时候,从 指定缀霍读窭驻置文臀,验程箕有效瞧,经过处理放入肉存,戳覆安全功能鞣动 模块能高效地进行处理。

    在EC中,基本平台对蹴置文件的处理瓣复杂…些:当新韵Web    Services

    session到来的时候,EC需要从这个session中褥到需疆连接的ES的位置,劳从 该位溉下载配踅文件。然后验证其有效性,经过处理放入内存。 设计中存在ES秘EC中酝置文爨二不一致的帻况:当ES爨菠配鬟屡,EC只 有等到下一个session才能更新其配鼹文件。但是如果每一次连接都臻求EC到 基s耋耘下载酝萋文馋,这会产生严耋麴效率润嚣,考虑至l鬣溪文停蠖矮兹整需 要进行验证,每一次连接都要求重新下载配鼹文件悬不能接受的。由于每个 sessio

page 26

n蒋续对滴都在分锌薮嬲,这静不一致应该是可以簇受豹。 3、安全功能驱动 安全功能驱动提供对安全模块的捅拔支持,并在安全模块插入盾,自动探知 它的存在,为其调入酝置文件,并在对XML文档的处理流程中使用该安全模块 进行处理。    熬于XML的安全通信平台一一xMLEngine

    4、×HL格式驱幼 XML格式驱动系担嚣对XML文档处理的繁~遴处理工序,它将XML文搂 中的数据提取出来,组织成树状结构,并且提供DOM接口,以便后续模块操作。 XML格式驱动弱主器餐务是: ?解析XML文档在内存生成DOM树 ●对XML祷上静每个节点述彳亍操作 ●生成XML文档(XML文档生成器) 对于每种任务,对殿的大致处理流程如图5.10所示:    解析XML竞档    譬    是

    +‘。。V‘●1……●_V _h^ ^……一    1返回xmlDoc指针|    节点臻干罄

    生成空的XML文档返I鱼l xmtdoc指§}    l

    生戏囊抟X材L文握 生成根节点并添加刻XML文档中    圈5.10Ⅺ证L格式驱动蒸本搡侉    47

    基于XML的安全通信平台一一XMLEngine    5.5.4流程控制

    XML操作顺序流程控制模块的主要任务是: ?将配置XML文档中的配置信息config.xml提取出来 ?与实际应用的XML文档进行比较,以得到实际应用的XML文档中需要进 行加密、签名操作的标签以及内容 ?根据已经配置好的对实际应用的XML文档进行加密、解密和签名、验证操    作的处理工序;

    调用相应的加解密、签名验证接口函数,完成指定的操作。 整个模块的设计遵循“先子后父、先签后密、签名内嵌、加密替换”的算法    原则。其主要任务可由以下的流程处理示意图简要说明:    验证并读取XML配置文 件:    解析遍历XML应用文    件:

    基于XML莳安全通信平台一一xMLEngine

    比较找出XML应用土件中节点 Tag名称与配置信息中廿点 Contej]t相同的节点

    根据配置信息操作XML    nu密悠名,

    解密,骆iiF’ 加南, 簦名 日用相应的自u密,签名接u 披照从队尾到队击的顺序 完成加密,簦名操作 解密, 验u1    应用文件:

    目用相应的解密/验证痿口 按照从趴卫到队尾的顺序 完成解密,验证操作    图5    11

    XML操作顺序流程控制    5.5.5

    XML加/解密和签名/验证

    XML加/解密和签名/验证是不同的两个模块,用户可以根据需要选择其巾一 个或者两个进行使用。存设计角度看,这两个模块有很强的联系,事实上,两个 模块任鼹初设计时属丁同个模块。其处理过程有许多相似之处c XML加,解密和签名/验证总体的设计结构框架如罔5.12所示:    图5.12

page 27

    XML加,解峦和签名胜证模块示意图

    基于XML的安全通信平台一一XMLEngine

    XML加/解密和签名/验证模块处理过程魁: ?XMLSec甥始化:对鸯羹密楚名运舞瑟纛要戆算法、内存分聚、数攥缝穆及全 局变量等进行初始化。

    稔造XML热密或签名模投基予XML懿元素鸯珏警帮签名,技照W3C孛赣关 规范,是在原有的XML文档内容中嵌入相应的加密或签名元素节点,例如: 对于签名,是以<Signature>为元豢名称及特定的名字空间为父元索的一系列 元素节点集,其内容包括搬明所使用的密钥类型、所采用的规范性算法、摘 要算法,当然还包括签名的密文以及用户证书(可选)等等。在进行具体运 算前首先构造这播一个除撼要值积签名密文的节点作为横扳,提供绘下一步 进行操作。

    热缌密秘签名验逶运篓:这一步将按照上一+步雳产生露摸叛中我豢定篓法送 行具体运弊,并将运算结果写入到模板中相应的位置。 i、XNL和,熊密模臻 加解密包括普通用对称密钥直接对元素进{亍加解密、用Session密钥的方式 加解密和碡数字信封瀚方式掬解密三稀: ①对称加解密 ?加密:根据用户在配置文件中的需求,按指定的加密密钥和加密算法对XML 文档中的元素进行加密,采用明文替换的方式 ?解密:使用用户在加密时所使用的密钥对已经加密的元素进行解密 ②媛Session密锾数方式加舞寮 ?加密:根据用户在配置文件中的需求,按指定方式产生~对称Session密钥, 搿该密锈对对XML文档中豹元素送行翔密,然蠡再霜焉户豢定豹对称密绸 对该Session密钥进行加密后,封装在已经加密的XML文档中,采用明文替 换的方式 ●解密:使用用户在加密时对Session密钥进行加密的密钥解密封装在XML文 档中的Session密钥,然后再用该Session密钥对XML文档进行勰密 ③用数据信封如方式热解密 ?加密:根据用户在配置文件中的需求,按指定方式产生一对称Session密钥, 爨该密镄对对XML文挡孛馥元素送行热密,然螽秀羯雳户PKI诞书中的公 钥或者公钥文件对缓Session密钥避}行加密后,封装在已缀加密的XML文档    璺璺ML的安全通信平台一一XMLEngine

    中,采用明文替换的方式 ●解密:使用搬密Session蜜镪程对应瓣爆户私镅簿密越装在XML文档中弱 Session密钥,然后再用该Session密钥对XML文档进行解密

    2、XML签名/验证模块 ?签名:禳据麓户在甏鬣文{孛孛豹需求,镬弱麓户私锾采瑁给定豁鬣范亿算法 以及签名和摘要算法对指定的元素进行签名,签名内容内嵌到待签名元素内 部,可以对一个元素进行多次签名,同时也霈求用户提供私绸相对应的PKI 证书,:并任务签名中的~个元素一起发送出去 ●验证:需要提供~证书路径来验证收到的XML文档中的证书是否合法有效, 然蜃瓣验{正签名是否正确,如果是则删除该签名元索节点,恢复XML文魈 的原始信息

    3、内容过滤 本模块实褒鏊本豹内容过滤功能,提供基予标签名鞫文本关罐字遘滤熬麓 ∞、 ●基予标签名的过滤:主要嗣予对应蹋功麓方露鑫勺控翻。院鳓,在网上购物应 用中,如果我们不希耀用户访问诸如“成人用品”的内容,可以通过殴置过 滤adnltProduct标签,来控制是否允许成人溺品内容的通过。 ●基于文本关镳字过滤:主要嗣于对内容方蕊的控制。比如,我们如巢不希望 出现“”的字眼,可以通过设置,过滤该关键字。 当过滤功能找到基撂,处理熬方式有多穆选择,髫前提供鼹萃孛处理方式: ?替换:对目标数据进行替换,说明已经被过滤。被替换的内容可能楚整个标 签酶内容,嘏可麓楚整个文麓。 ●删除:删除目标数据所在的标签或者整个文档。

    基于XML的安全通信平台一一xMLEngine

    第六章.构建Web Service典型应用一一数字书店    6.1典型应用介绍

    6.1.1典型应用要达到的目标

    该应用是一个集成部分网上银行功能的网上书店的例子,开发这个应用目的 是在本系统商业化过程中的测试和演示系统,因此本应用是XMLEngine项目能否

    商业化的关键,该应用必须达到以下要求:

page 28

    ? ? ?

    网上比较流行的基于Web Service的应用系统模式 正常的进行SOAP请求和应答以便进行整个系统流程的测试: 包含大量数据的SOAP包的传送,以便测试系统处理大数据的性能 包含复杂结构数据的SOAP包的传送,以便测试系统处理复杂逻辑的性能;

    SOAP包中的标签和内容都应该包含需要过滤的字符串(在含有过滤模块的    情况下,由于本论文主要是针对XML的安全方面的,所以凡是与过滤模块    的相关的本论文都不予讨论),以便测试系统过滤功能。

    系统技术应该先进,架构应该合理,可扩展性要强,如果需要作为商业应用, 能够在该系统的基础下快速扩展。

    基于以上要求,典型应用采用J2EE技术开发,Web容器用Tomcat,表示层 框架用struts,Web Service工具包用Apache    Axis。

    6.1.2系统功能

    本数字社区系统包含两部分:购物系统和网上银行系统。 购物系统主要用于过滤模块的测试,包括商品查询、商品列表、购物车、广告等

    功能;网上银行系统主要用于加密和签名模块的测试,包括用户余额查询、用户    明细帐查询、用户转帐等功能以及管理员余额查询、管理员明细帐查询等功能。    基于XML的安全通信平台一一XMLEngine    6.1.3技术实现

    6.1.3.1物理部署图    soAP请求 Web    Service    >

    湘密后的SOAP请求    XML

    englBe    >    请求    XML

    engine    Wjb

    Service    SOAP应答    客户端    <、一

    解密后SOAP    应答    客户端    <

    0¨密后SOAP应答    服务端    服务器端

    图6.1 SOAP物理部署图

    本测试系统构建在J2EE基础上,整个系统的体系结构分为四层,各层主要 功能为:客户端主要采用浏览器(如IE);应用服务器层(TomCat、Servlet等) 主要完成整个系统的业务逻辑处理、接收浏览器的请求、向Web Service服务器 请求服务、接收Web Service服务器返回的数据等,最后向浏览器返回处理后的 数据。Web Service服务层(TomCat)提供计算、数据存取等各种服务。数据库 层(数据库用MySQL)实现数据的存储

page 29

    6.1.3.2详细设计

    网上银行流程图:图6.2是个简单的网上银行模拟流程    图6.2网上银行数据处理流程图

    顾客网上商店购物顺序图如图6.3所示    基于XML的安全通信平台一--XML    Engine    客户端

    网上购书中心    网上银行

    图6.3顾客网上商店购物顺序图 ?功能介绍 ①会员注册 为了便于系统对网上商店购买者的管理,本系统采用免费的注册会员制度。 如果首次来访,建议您注册为会员,点击页面导航条上的“会员注册”,根据提 示填写完整的注册表单后,您就成为此网上商店的一名会员了。另外,也可在选 购好商品后去收银台时,在会员区再注册。 会员注册申请表单包括三部分: 会员资料录入部分。可根据提示输入会员代号、会员密码,以及查询密码问题、 查询密码答案等,作为取回密码的条件。其中会员代号及会员密码和会员登录时 的登录名及密码是一致的。 个人资料部分。为了确保用户得到更好的服务,此部分务必详细真实地填写如姓 名、电话、电子邮件地址、邮编、地址等项,作为保证能联系到你的主要依据。 特殊服务信息区。在此要填写用户身份证件号码及详细地址,便于核实发款人及 收货人的真实可信性,并且明确送货的地址。 注册成功系统会提示您注册完成的时间,并提示您通过返回首页来选购商品。    篓于XML的安全通饼平台一一XML ②订攀鸯诲    Engine

    订单查询必须通过会员登录,所以必须是会员才可能查询订单。订单查询功 能搀供了两耱蠢谗方法;1)按嚣鬻及订单获态鲞诲。鼯输入~个订摹区闯或逸 择一种订单状态,即可蠢出。2)按订单号查询。根据购物系统给出的订单号裔 滢。这鼹穆方法只疑使鹅一耱,不可弱辩使爱。 查询结果会简要列出订单信息,如订单号、金额、付款方式、遴货方式、订单状 态、下擎时趣等。絮暴想查看谤单详纲售惑,可以逯过点击订攀号,系统会绘如 此订单中所购商品的详细信息,如:商晶名称、商店名称、单价、数量、价格小 诗等。至蘧,购买者豹嬲上鹦秘过程即告结京。 ③会员髓录 在本系统中,所有注册会员题物订单,系绞中都有勰录且购物金额有一定的 继承性,为了对会员信息保密及系统安全考虑,系统设鬣必须通过用户登录才能    燕询订肇或查麓赝属购物优惠级别等等。

    注册会员后,可通过会员登录蠢看所属组别、所有员组及相应的购物优惠比例。 会员登激可以通过两哥申方法: 在首页中的“会员登录”图框中直接输入会员弩及密硝即可: 通过系缆导航楼中的会员登录项,转入“会员黢录”页面来登慕。 ④会员资料修改 会员的注册资料难免会有所变化需要修改,会员可以修改除了”会员代号”以 外的所有资辩。

    要修改会员资料,您只需点击页底的“修改注册信息”设置,通过会员登录后, 就可良在“会员信患修浚”页瑟透行修改。繇有修改缀保存后方有效。 ⑤进入购物区

    系统蔷页为慧韵麓秘区,髂可臣奁诧浏览、撬逸或有磊静静查询莱类商晶, 本系统设置以下四种方式浏览商品。 ③选魏囊晶 通过不同的方式浏臆、查询各种商品,将所要购买的商品投入购物车。在购 穆车设遴中会罗l毒繇魏巍鑫豹各王委谊惑,妇瑟熬编号、藏晶名称、衰鑫肇徐、选

    购数量、会员价格小计等等。在购物车中可以修改购买数量或取消商晶的购买。    翔暴还要遥魏可j蘧过“遨嚣继续麴魏”按锰寒实璃,或遂过“网土银行嚣鼓”按

    钮付款结帐来结束选购商品。 ⑦嚣款键媛    宜接通过网上银行转帐给商店。 ③其它设墨

page 30

    基于XML的安全通信平台一一xMLEngine

    当然,购物过程中或购物后还会出现类似客户不知道该如何购物怎么办?没 有购买到所需商品、查看选购的物品或要求退换购买的物品、对此网上商店有疑 议、或要查看购物订单等一系列问题。本系统也同时提供了这些功能,如查询密 码、购物指南、缺货登记、购物车、售后服务、客户投诉、新闻动态以及帮助信 息等等。    ●

    应用的主界面如图6.4:    图6.4主界面    6.2客户端设计    6.2.1    MVC设计模式

    MVC最初是在Smalltalk.80中被用来构建用户界面的。M代表模型Model,V 代表视图Ⅵew, C代表控制器Controller。MVC的目的是增加代码的重用率, 同时也使得软件可维护性,可

    减少数据表达,数据描述和应用操作的耦合度。 修复性,可扩展性,灵活性以及封装性大大提高。

    单用户的应用通常是以事件驱动的用户界面为组织结构的。开发人员用一个 界面工具画了一个用户接口界面,然后编写代码根据用户输入去执行相应的动 作,许多交互式的开发环境鼓励这么做,因为它强调先有界面然后再有功能。一 些软件设计模式策略是这样的,然后经常将固定后的代码融入最后的系统当中。 导致的结果就是,程序组织围绕用户界面元素和用户在那些界面元素上的动作, 数据的存储,应用的功能以及用来显示的代码都杂乱无章的缠绕在一起。在单用    基于XML的安全通信平台一~XMLEngine

    户的系统里代码结构是可以这样的,因为系统需求不会频繁变化。但是对一个大 的系统如大型Web系统,或电子商务系统来说就不太适用了。 通过把数据模式从各种可以被存取和控制的数据中分离出来可以改善分布 式系统的设计。MVC设计模式由三部分组成。模型是应用对象,没有用户界面。 视图表示它在屏幕上的显示,代表流向用户的数据。控制器定义用户界面对用户 输入的响应方式,负责把用户的动作转成针对Model的操作。Model通过更新 View的数据来反映数据的变化。三者关系如图6.5:    —————■方法涌用    ………一一■攀件

    图6.5:MVC组件的类型和功能 对MVC关系图的理解    模型M    分 工    视图V

    抽象数据表达 表示针对用户的数据 维护与Model数据的一致性    控制器C

    抽象用户和系统的事件 的语义殃射 把用户输入翻译为系统 事件 根据用户的输八和上下 文情况选择合适的显示    数据

    抽象系统应用的功能 封装系统的状态 提供使用系统功能的方法和路径 管理数据的存储和一致性 当数据发生变化时通知相关部分 当他改变系统数据时通知View 能够被View检索数据 提供对Controller的操作途径    协

    把Model表征给用户 当数据被相关Model改变时更 新表示的数据 把用户输入提交给Cotroller

    把用户输入转变成对 Model的系统行为 根据用户输入和Mode 的动作结果选择合适的    View    f作

    图6.6MVC的分工与协作 模型部件是软件所处理问题逻辑在于外在显

page 31

示内容和形式情况下的内

    垫t羔ML的安全通信平台一一XMLEngine

    在抽象,封装了问题的核心数据、逻辑和功能的计算关系,他于具体的界面    表达和I/O操作。

    模型包含了应用问题的核心数据、逻辑关系和计算功能,它封装了所需的数 据,提供了完成问题处理的操作过程。控制器依据I/O的需要调用这些操作过程。    模型还为视图获取显示数据而提供了访问其数据的操作。 这种变化?传播机制体现在各个相互依赖部件之间的注册关系上。模型数据

    和状态的变化会激发这种变化一传播机制,它是模型、视图和控制器之间联系的    纽带。

    视图部件把表示模型数据及逻辑关系和状态的信息及特定形式展示给用户。 它从模型获得显示信息,对于相同的信息可以有多个不同的显示形式或视图。

    视图通过显示的形式,把信息转达给用户。不同视图通过不同的显示,来表达模 型的数据和状态信息。每个视图有一个更新操作,它可被变化.传播机制所激活。    当调用更新操作时,视图获得来自模型的数据值,并用它们来更新显示。

    在初始化时,通过与变化一传播机制的注册关系建立起所有视图与模型间的 关联。视图与控制器之间保持着一1对一的关系,每个视图创建一个相应的控制器。    视图提供给控制器处理显示的操作。因此,控制器可以获得主动激发界面更新的    能力。

    控制部件是处理用户与软件的交互操作的,其职责是控制提供模型中任何变    化的传播,确保用户界面于模型问的对应联系;它接受用户的输入,将输入反馈    给模型,进而实现对模型的计算控制,是使模型和视图协调工作的部件。通常一 个视图具有一个控制器。 控制器通过时间触发的方式,接受用户的输入。控制器如何获得事件依赖于 界面的运行平台。控制器通过事件处理过程对输入事件进行处理,并为每个输入 事件提供了相应的操作服务,把事件转化成对模型或相关视图的激发操作。 如果控制器的行为依赖于模型的状态,则控制器应该在变化一传播机制中进 行注册,并提供一个更新操作。这样,可以由模型的变化来改变控制器的行为,    如禁止某些操作。

    模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用 户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都

    应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通    知所有的视图,导致显示的更新。这实际上是一种模型的变化.传播机制。    6.2.2    MVCl

    为了解决Web应用中的MVC问题,gill3公司提出了MVC l模式    基于XML的安全通信平台一一xML    Engine

    Model 1结构如图6.7所示    ……’”    ——    \\    、

    席卜。剥    ,/    多=≮、

    图6.7Model结构图    model

page 32

    1是一个以JSP文件为中心的模式,在这种模式中JSP页面不仅负责

    表现逻辑,也负责控制逻辑。专业书籍上称之为逻辑耦合在页面中,这种处理方 式,对一些规模很小的项目如:一个简单的留言簿,也没什么太大的坏处,实际    上,人们开始接触一些对自己来说是新的东西的时候,比如,用JSP访问数据库

    时,往往喜欢别人能提供一个包含这一切的单个JSP页面,因为这样在一个页面 上他就可以把握全局,便于理解。但是,用Model 1模式开发大型时,程序流向 由一些互相能够感知的页面决定,当页面很多时要清楚地把握其流向将是很复杂 的事情,当您修改一页时可能会影响相关的很多页面,大有牵一发而动全身的感 觉,使得程序的修改与维护变得异常困难;还有一个问题就是程序逻辑开发与页

    面设计纠缠在一起,既不便于分工合作也不利于代码的重用,这样的程序其健壮    性和可伸缩性都不好。 6.2.3    MVC2

    为了克服Model 1的缺陷,人们引入了Model 2,如图6.8所示    盖参㈤

    j。C&on州tro“ller,k    I( )卜

    /7 \\ ,/歹=心    、J

    I<JSP>∥\一/7 w”’    i

    图6.8    /

    Model2结构图

    基于XML的安全通信平台一一XMLEngine

    不再直接送给一个处理业务逻辑的JSP页面,而是送给这个控制器,再由控制器 根据具体的请求调用不同的事务逻辑,并将处理结果返回到合适的页面。园此,    这个servlet控制器为应用程序提供了一个进行前一后端处理的中枢。~方面为输

    入数据的验证、身份认证、日志及实现国际化编程提供了一个合适的切入点;另    一方面也提供了将业务逻辑从JSP文件剥离的可能。业务逻辑从JSP页面分离后, JSP文件蜕变成一个单纯完成显示任务的东西,这就是常说的View。而出来 的事务逻辑变成人们常说的Model,再加上控制器Control本身,就构成了MVC

    模式。实践证明,MVC模式为大型程序的开发及维护提供了巨大的便利。 6.2.4

    struts

    6.2.4.1struts概述

    Struts就是一种具体实现MVC2的程序框架。它的大致结构如图6.9所示

    口 百Js习p(vlew)(.--    I    {    蜜    :使用    幽6,9

    Stmts结构图

    图6.9基本勾画出了一个基于Struts的应用程序的结构,从左到右,分别是 其表示层(view)、控制层(controller)、和模型层(Model)。其表示层使用Stmts 标签库构建。来自客户的所有需要通过框架的请求

page 33

统一由叫ActionServlet的 servlet接收(ActionServlet Struts已经为我们写好了,只要您应用没有什么特别

    的要求,它基本上都能满足您的要求),根据接收的请求参数和Struts配置

    fstruts.config.xml)中ActionMapping,将请求送给合适的Action去处理,解决由 谁做的问题,它们共同构成Struts的控制器。Action则是Struts应用中真正干活

    的组件,开发人员一般都要在这里耗费大量的时间,它解决的是做什么的问题,    它通过调用需要的业务组件(模型)来完成应用的业务,业务组件解决的是如何    做的问题,并将执行的结果返回一个代表所需的描绘响应的JSP(或Action)的

    ActionForward对象给ActionServlet以将响应呈现给客户。

    基予XML的安全通信平台一一xMLEngine

    ActionForward对琢给ActionServlet以将响应呈现给客户。 过程如潮6.10所示:    Action    业器逻辑

    ActionMap ing, ,◇粼铸误!    ,一一主生譬l |    产奎    蕊I

    ,—_==蠹:—、    l

    一j 厂素一1 L———广J    执行

    ActionForward    L二≥=√    l    l    一|

    8xcn“o

    L一 叫墨苎兰兰,    掺    ,,    l。    r

    透两 | } 1 AetionForward{    ±塑

    L~兰竺一,)    图6.10

    Struts对请求的处理流程

    这墅诿特剐滋明一下瓣是:麓是Action这令类,上舔基经落到了它是Struts 中真正干活的地方,也是值得我们高度关注的地方。可怒,关于它到底怒属于控

    臻《层还慧属于摸燮垂,存在嚣静不目的焱见,~瓣认力它属于模囊层,癸~些则

    认为它属于控制层。显然,将业务对象从Action分离出来后有利于它的重用,

    同时也增强了应援程序款健壮憋积设计戆灵活性。因此,它实际上可以罨捧是 

page 34

Controller与Model的适配器,如果硬要把它归于那一部分,它应该是Controller 蕊部分,换句话说,它不应该包含过多的业务逻辑,稳应该只烃麓单域收集业 务方法所需要的数据并传递给业务对象。实际上,它的主要职费是:

    ●校验藏提条传或者声明 ?调用需要的业务逻辑方法    61

    基于XML的安全通信平台一一XMI,Engine    ●检测或处理其他错误 ?爨鑫控《劐相关税强

    上面这样简单的描述,初学者可能会感到有些难以接受,下面举个比较具体 涎攒予寒进一步帮助我囊理磐。露:缀设,我翻骰翡蹩令电予赛务程序,瑗在疆    序要完成的操作任务燧提交定单并返回定单号给客户,这就是关于做什么的问    题,应该出Action类完残,餐具体怎么获霉数据瘁逡接,捶入定蕈数据到数据

    库表中,又怎么从数据库表中取得这个定单号(一般是自增数据列的数据),这    ~系列复杂斡润题,这部是鼹决怎么{蔽数阂题,则应该}羹一个(缀设名巍orderBo)

    业务对象即Model来完成。orderBo可能用…个返回憋型值的名为submitOrder

    螅方法来做这传事,Action则是先校黢定单数援是否正确,以免常说魄垃圾遴垃

    圾出:如果正确则简单地调用orderBo的submitOrder方法来得到定单号;它还

    要处理在调用过程中可能出现任侮错误;最后擞握不粥的情撮返回不阅舱结暴绘    客户

    6.2,4.2为什么要使用Struts框架

    首先,它怒建立在MVC这种公认的好的模式上的,Struts在M、v和C上 都有涉及,但它主要慰提供一个好的控制器和一套定制的标签库上,也就是说它 的羞力点在C和v上,西魏,它天譬三旒有MVC掰带来的一系列优点,如:结    构层次分明,商可重用性,增加了程序的健壮性和可伸缩性,便于开发与设计分    工,畿供集中统一赘投陵控裁、校验、国舔纯、强恚等等;箕次,它怒个开漾颈 目得到了包括它的发明者Craig R.McClanahan在内的一些程序大师和高手持续 嚣细心静嚼护,著且经受了实黢蕊检验,使其功髭越来越强大,体系也疆臻宠善; 最后,是它对麒他技术和框架显示出很好的融合性。如,现在,它已经与tiles 薤为一俸,可黻曩望,它缀狡赫会与JSF等融会在一起。当然,帮荬铯任餐搜零 一样,它也不是十全十美的,如:它对类和一毖属性、参数的命名显得有些随意, 绘瞳趱繁寒一磐不便;还舂热Action炎execute方法骢只§§接收一令ActionForm 参数等。但瑕不掩瑜,这些没有影响宦被广泛使用。    6.2.5应用视图(MVC中的V)的设计

    MVC中的v,含义是表示逻辑,视图。主臻由JSP生成页丽完成视图,Struts 提供丰富的JSP标签摩:Html、Bean、Logic、Template等,这有利予分开表示 逻辑和程序逻辑。

    ——.茎三茎坚!塑塞全望堡!鱼二二兰坚!!!!堡1    6.2.5.1    JSP页面设计

    adminLogin,jsp

    该页面是网上银行管理员的登录页面 adminQuery.jsp 该页面是网上银行管理员查询客户资料页面

    allUserAccount.jsp    该页面是显示网上银行客户资料页面

page 35

    bankindex.jsp 该页面是网上银行主界面 banner.jsp    该页面是每个页面的页眉

    等相关链接 copyrightdsp

    提供Logo、主页名称以及银行、购物车、登录    该页面是每个页面的页脚    left.jsp    显示版权信息

    该页面是左栏,显示“精品推荐”栏目,以及相关书籍链接

    login.jsp 该页面是网上书店客户登录页面 mainMenu.jsp 该页面是网上书店显示书籍列表的页面

    newAccountdsp 该页面是网上书店新客户注册页面 orderdsp 该页面是网上书店显示客户订单页面    payjsp

    该页面是在网上书店购书的客户向银行付款的页面    rightdsp

    该页面是右栏,显示“TOPTEN…‘最近销售排行”栏目,以及相关书籍链接

    showSortnamejsp 该页面是网上书店显示书籍分类列表的页面    successdsp

    该页面是客户付款后显示购书交易成功的页面 userQuery.jsp    基于XML的安全通信平台一一XML    Engine

    该页面是网上银行用户查询余额的页面    userSum.jsp

    该页面是网上银行显示用户余额的页面 需要指出的是,由于使用了struts框架,以上所有页面中都实现了零代码,显示

    和逻辑交错混杂的情况不复存在,这有利于美工和逻辑设计人员的分工合作,这    也是MVC设计模式要达到的目标之一    6.2.5.2

    ActionForm的设计

    ActionFonn类被用作从HTML表单捕获用户输入的数据,然后传输给Action

    类。由于HTML输入组件并非自身具有输入缓冲器,而用户经常会输入非法的    数据,web应用程序也需要途径来临时存储数据,意思可能出错时重新显示出来,

    Action.Form扮演着~‘个缓冲器的角色,在检验用户输入数据时,它保存着用户

    输入的状态。在应用程序中,ActionForm类同时也扮演“防火墙”这样的角色, 有助于在检验规则进行检验的时候,防治业务曾出现可以的或者非法的输入。 ActionForm也被用作将数据从Action类回传给HTML表单,由于HTML表单总 是从ActionForrn中获得数据,这样也使得HTML表单更具有一致性。 本应用有一下九个ActionFoma类(图6.11):    NewUserActionFor    r    m

    j《如ddr {l轴mail i l勘password l鼯passwordConfi rm l }鼹phone ≈postalCode ;露realName 鼯usedD

page 36

    :    !

    [二二一.:二二二 ●……一一    J

    RemoveBookA    f

    |:委』鲫铀二一脚l。颐舢…一 鐾篓要窭一    ~一 一~一~ 一~ 一

    l ctionForm i l固争booklsBNID『    I 11’11……‘。。‘1’1_J

    图6.11本应用的ActionForm类    loginActionFonn

    该ActionForm类接收网上书店用户登录的输入信息    苎王兰竺!塑窭全通信平台~~XMLEngine    addBookActionFOrlTl

    该ActionForm类接收网上书店用户向购物车添加书籍的输入信息    orderActionForm

    该ActionForm类接收网上书店用户购物订单的总金额、书籍、确认信息

    newUserActionForm

    该ActionForrn类接收网上书店新用户注册信息    payActionForm

    该ActionForm类接收网上书店用户付款信息    showBooksortActionForm

    该ActionForm类接收网上书店用户选择书籍分类信息    adminQueryActionForm

    该ActionForm类接收网上银行管理员查询输入信息    adminLoginActionForm

    该ActionForm类接收网上银行管理员登录输入信息    removeBookActionFOrm

    该ActionForm类接收网上书店用户删除购物车上的书籍的输入信息    一旦创建了由ActionForm派生而来的类,就需要在struts配置文件 struts-config.xml中配置它。本应用的配置如图6.1 2:

    <form-beans> <form-bean name2”loginAetionForm”type2”edu    sjtu.ebookstore    sjtu

    action LoginActlonForm”,)

    ≮f011Tl—bean name=“addBookActionForrn”type=“edu <form-bean name=”orderActionForm”type=“edu <form-bean

    ebookstore action AddBookActionForm。’/)

    sjtu

    ebookstore action OrderActionForm。。,) ebookStore action.NewUserActionForm’’b PayActionForm。。,>

    name=”newUserActionForm“type="edu sjtu

    <form-bean name2”payActionForrn”type2”edu

page 37

    sjtu.ebookstore action    sjtu

    <forrTl-bean name=”showBooksortActionForm”type=”edu <form—bean

    ebookstore action ShowBooksortActionForm”/>

    name=”adminQueryActionForm”type=”edu.sjtu

    ebookstore action

    AdmlnQueryAcllonForm”,>    <fo唧?bean

    name2”adminLoginActionForm”type2”edu sjtu ebookstore action AdmlnLogmActlonForm”,>

    <form—bean name=”showBooksortActionForm”type=”edu <form-bean ngrl01e=”removeBookActionForm”type=”edu    sjtu.ebookstore

    action ShowBooksortActionForm“/>    sjtu ebookstore

    action RemoveBookActionForm’。/>    <,form.beans>

    图6.12 struts配置文件中配置ActionForm

    类型字段的值必须为ActionForm派生而来的Java类名全称。一旦定义好了

    form-bean,就能在一个或者多个action中使用它。多个action可以共享同,个

    ActionForm。

    基于XML的安全通信平台一一XML Engine    6.2.6应用控制器(MVC中的C)设计

    MVC中的C,含义是程序的控制器。控制器组件负责检测用户的输入,又可能    也会更新域模型,为客户端选择下~个视图。控制器有助于把模型的表示层和实 际的模型分离开来。在struts中,默认的情况下承担MVC中的Controller角色的 是一个Servlet,叫ActionServlet。ActionServlet是一个通用的组件。这个控制组 件提供了处理所有发送到struts的HTTP请求的入口点,它截取和分发这些请求

    到相应的动作类(这些动作类都是Action类的子类)。另外控制组件电负责用相

    应的请求参数填充ActionForm,并传给动作类。动作类实现商业逻辑,它可以 访问javabe趼或者调用EJB(本应用中调用Web Service)。最后动作类把控制权 传给后续的JSP文件,后则生成视图。所有这些控制逻辑利用Struts—config.xml    文件配置。    6.2.6。1    Action类设计

    本应用中的Controller由默认的ActionServlet和Action类共同担任,每个 Action类都代表一个客户端的业务操作,包括访问Web Service。本应用有以下 十四个Action类:    AddBookAction    向购物车添加书籍

    AdmiIlLoginAction管理员登录

page 38

    AdminQueryAction管理员查询    LoginAction    用户登录

    LogoffAction    NewUgerAction    用户退出 新用户注册    生成订单 付款

    OrderAction PayAcfion

    RemoveBookAcfion从购物车取出书籍

    SearchAction ShowBookAction    查找书籍

    显示书籍 显示经典书籍 显示书籍种类 用户查询    ShowBookRandomAction    ShowBooksoltAction    UserQueryAction

    基于XMI,的安全通信平台一一xML Engine    6.3服务端设计

    6.3.1 JAX.RPC

    基于XML的远程过程调用的Java API    for

    XML(JAX—RPO简化了w曲服务的创

    建过程(Web服务本身就合并了基于XML的PRC)。它定义了Java类型和XML 类型之间的映射(序列化),目的是为了隐藏XML的细节,提供一种熟悉的方法

    调用范例。JAX—RPC完全包容了Web服务的异构性。它允许一个JAX—RPC客 户端与另一个部署在不同平台上的,用不同语言编写的Web服务进行对话。 JAX.RPC提供了一系列规范,包括调用模式、客户端生成、参数模式、Java到 WSDL和WSDL到Java的类型映射、以及调用Web服务的客户端APIs。 怎样把一个Java对象序列化?一个简单的例子: 对于Java接口:

    public interface Hello    {

    public String

    sayHelloTo(String name);    )

    客户程序在调用sayHelloT00方法时提供了一个名字,它希望从服务器接收到一

    则个性化的“Hello”信息。

    必须串行化方法调用,并把消息发送给服务端。 假设要模拟sayHelloTo(“Deng”)调用,

    <?xml version=“1.0”?>    <Hello> <sayHelloTo>    发送的请求可以是:

    <name>Deng</name>    </sayHelloTo>    </Hello>

    在这里,接口的名字作为根结点。方法名字和参数名字都当作节点。

    6.3.2 Apache Axis 我们使用Apache Tomcat-Axis来发布Web服务    Apache

    Tomcat—Axis组合提供一个JAX—RPC 1.0兼容的运行时引擎,它具有客户

page 39

    基于XML的安全通信平台一一XMLEngine

    端和服务器端库以及部署工具。图6.13详细阐述了标准的同步请求一响应模式的 Web溅务调用撰袈。封装了Web鼹务客户瑞的Applicationl镁用JAX.RPC运行 时环境执行一个远程过程调用请求封装了Web服务服务器端的Application 2的 公共方法。客户端使粥运舒时库把Java对象序列化成一个SOAP消感,然后逶 过HTTP协议把该消恩发送给Web服务端点。当部署在ApacheTomcat上的Web 服务接收到这个请求时,服务器端的JAX—RPC运行时痒把SOAP消患反序歹《化 为Java类型,并且调用Web服务上的方法,撩着对Application 2进行调用。在    处理完请求后,Web服务以类似的方式把响应发回给客户端。    丑

    Web鼹务客户遮 豳6.13    Web羰务骚务器端

    Web Service请求响应模式

    6.3.3应用模型(MVC中的M)的设计

    如前所述,MVC中的M代表糟模型。一个应用的模型组件对于该应用来讲是最 有价僚的较件部分。模型包含稽商韭实体以及如何管瑷访离帮修改鼗据的蕊剡。 这些工作在一个特定的场所完成,以缀护有效数据的完整性,减少冗余,增强可 重用穗,这十分重要。 模型具有不同的含义,最普通的含义是表示事物的面貌+模型可以表示一个买卖髓 翰豹鬻瘩,可以表示一褰方法,谣以表示房蓬等等。在本应焉中,模垄袭示一个整 合部分银行功能的数字书店。    8.3。3.1开发概念横型

    在问题域的分析中,概念模型应该基于问题域的真实实体来开发的。在概念 模型中懿实俸与系统较l孛无关,悉与瑷实中鳃那些髂残犍务爨蒸本l主援夔实俘骞 更多的关系。概念模型通常说明概念、概念间的关联以及每个概念所固有的属性 等,在该模型中对予行为不俘攒述。缀念摸型仅有系统震铡藤来,其爨的在予毒 助于识别那些在设计阶段很有可能成为类的实体,同时也为了更好地理解问题 域。强6。14攫示应鼹的概念模型。

    ——————————————』型:!!坠堕茎全望堕兰鱼二二圣坚!!!£虫!

    User

    ;渤userlD 。◇bookList    器一

    图6 14本应用的概念模型

    在图6.14中,注意到只有实体的关系和属性被显示出来,没有表示行为的方 法。该图清晰地展示了问题域中所用到的实体。每个模型的意义如下: Account:网上书店的注册用户信息。 Ueser:在线用户信息 Order:订单 Book:库存书籍Booksort:库存书籍分类 BankuserAccount:网上银行客户 Admin:网上银行管理员 通过检查概念模型,发现系统构件的问题,早期进行修改,对今后我们的系 统开发很有好处,越晚期的更改,将付出越大的代价。

    6。3.3.2建立业务对象

    在概念模型的基础上创建业务对象是很方便的事情,业务对象包括数据和行    量±兰些塑窒全堡墅鱼二二兰竺堕垫塑兰—————————————一    为。该对象也是数据库表中一条条记录的具体表示。    Bookso[t

    (from beans)

    BankuserACCOLInt

    esortname String 口sonld int ●'Booksonfl

    ”_—一

    (from bearts)

page 40

    ocardld    int    一———一    String    osum:int

    .ebankUserName:String    ◆Booksort()    嘏jrade。String

    4》bankUserPassword    奄postalCode,String    ◆getSortname()

    ●setSonname(1 ●getSortld0 ’setSortld()

    ’'BankuserAccount() ◆BankuserAccount()

    ◆getCardld() ◆setCardld()    1…一二一一一“    800k

    (from besns)

    ’'getAiIBooksort0

    ●'getBookWithsortld(    ’getSum0    ’'setSum0

    ◆口etBankUsemame()    ’'setBanklJsername0

    4.1SBNID:String 夸name:Stnng oauthor:Stfing ,》pdce String    ‘'getGrade{)

    .setGmde() ’getBankUserPassword() ~setBankUerPassword0    昂sortld:Stnng    ●'Book0

    ’isExist()

    ◆cardldisExist()

    ●Book0 ’'getlSBNID0

    ’.setISBNID0 。ll'getName0 ◆setName()    {"●getAIIUserAccount()    Admln

    ●'getAuthor()    ●setAuthor0    ●l'getPrice0    ’'setPrice0

    ~etAIIBook() ~etBcokWithlSBN0

    ●getBookWithname() %3etBookWithRandom0

    ◆getSorttd0    41,setSortld0

    图6.15本应用的业务对象 可以看到,业务对象已经具有了处理数据的方法和规则。主要方法: Account类:boolean isExist(String 是否合法

    void userlD,String accountPadssword)

page 41

    判断该用户

    newAccount(String    user/]9,String    password,String    ernail,String

    realName,String address,String postalCode,String phone)    建立新用户    档案

    void void

    loadAccoum() saveAccount()    供用户调用档案查看 用户修改档案后存储档案

    order类:void saveOrder(StringISBNID,StringuserlD)存储用户订单 adminPassword)判断管理员 Admin类:b。。lean isExist(string adminname,String

    基于XML的安全通信平台一一xMLEngine

    是否合法 Book类: BookHelp[]getAllBook()throws SQLException查询所有书籍,返回 一个包含所有书籍的对象数组

    BookHelp

    getBookWithISBN(String ISBN)通过书刊号查询书籍,

    返回包含一本书信息的对象 BookHelp[】getBookWithname(String bookname)通过书刊名查询书 籍,返回对象数组 Booksort类:BookHelp[]getBookWithsortld(int sortld)通过书类型号,返回所有    该类型号书籍的对象数组

    BankuserAccount类:boolean cardIdisExist(int cardld)判断银行卡是否合法 BankHelp[]getAllUserAccomat(im lcardId,im hcardId)管理员查询 卡号范围内的所有客户信息,返回对象数组    6.3.3.3建立数据库

    与业务对象相对应,我们建立以下数据库和数据表 网上书店数据库名:ebookstore 表格名    Account

    表格说明 网上书店 的注册用 户信息表    表格字段    userID

    字段描述 唯一主键。唯一标识用户的字符    串。    限长20

    password email

    用户密码 用户电子邮箱 用户真实姓名 用户地址 用户邮政编码 用户电话 唯一主键。唯一标识书籍的整 数。 限长为20。    realName

    address postalCode ohone Book    网上书店 库存书籍 信息表    indexID

    ISBNID Naine Authot    书刊号

page 42

    书名    作者

    基于XMI。的安全通信平台~一XML    Engine

    Price sortld

    价格 书籍类鏊号,与ebooksort表中 的sortld荚联    Ebooksort

    鼹上书癌 库存书籍 类型表

    Sortname sortId

    书籍类受名称 为一主镶。唯一表示书籍类型号    Yourorder    用户订单 表

    usedD IS8NlD    prlce

    用户名噍一标识 书刊号 书籍价格 书籍数量    Nuilq

    表6-1刚上书店数据表说明 网上锻幸亍数据痒名:bank 表格名    Admimable

    表格说明 网上锻行 管理员衷    表格字段

    Adminname

    字段描述 啦一主键。唯一标识管理爨的字 符串。 隈长20    password Hsumtable

    管理员密码 啦一主镶。唯一标识银行客户卡 号豹整数。    限长为20。    网上银行 客户表    cardlD

    Sum Username Gfade Password IS8NlD    price

    暇户余额 客户姓名 客户缓掰 客户密码 书嗣号 稍籍价格 书籍数量    Num

    表6—2网上银行数据袭说明

    数爨箨建立盔孑磊,藏哥以把盈努对象浚楚弱数据疼,可隧有多莓孛途径,篦魏对象

    一关系映射框架,直接用JDBC调用。由于我们的演示程序数据不复杂所以这恩 镬T蓦;静是壹接JDBC调霜。

    苎±兰塑!塑塞全通信平台一一XML Engine    6.3。3。4发布服务

    M构建好后需要把业务对象发布成Web Service,…旦发布成功,业务对象 的方法和属性就可以被远程客户访问和调用。这个发布工作我们使用Apache Axis来自动进行。从Axis提供的控制台上我们可以看到业务对象及其方法已经 发布成Services(如图6.16):

    And now.一.SOITIO ServiCeS    Booksod也业    o    13

    aetSortname setSortname getSortld setSortld getAnBooksort getBook^Aflhsortld

    o o 1:9 o    Account蛊龇    o o o D o o o

page 43

    aetAddre嚣

    setAddres¥: getUserlD setUserlD getACGOLImPassword setAOCOUntPassworel a时Email

    图6.16在Axis控制台上查看Web Service片段

    从图6.16中,我们注意到,每个发布成Web Service的对象都产生一个WSDL 文件,如前所述,WSDL是描述Web服务的技术调用语法,WSDL描述说明的 是Web服务的以下三个基本属性: 服务做些什么一服务所提供的操作(方法)。 如何访问服务一数据格式详情以及访问服务操作的必要协议。 服务位于何处一由特定协议决定的网络地址,如URL。 图6.17是Account类的WSDL文件片段:

    <wsdl:service nallle=”AccountService’’>

    <wsdl:port binding=”impl:AccountSoapBinding”name=”Account’1>    <wsdlsoap:address

    location=”http://localhost:8080/DigitalComWS/services/Account’’b    <]wsdl:port>

    </wsdl:service>

    图6.17 Account类的WSDL文件片段    基于XML的安全通信平台一一xMLEngine

    图6.17清楚的说明了服务位于何处。 由于本应用没有UDDI使用,因此客户对Web Service的查找是通过对WSDL 文件的导入来完成的,通过对WSDL文件的导入,客户可以找到Web Service, 并且能够按照WSDL的描述调用其方法。在本应用中,对应于六个业务对象, 一共有六个WSDL文件。如图6.18:

    图6.18在Axis控制台查看本应用的WSDL文件    6.4典型应用在XML Engine上的运行效果

    为了说明本应用达到了设计时的目的,我们分别在不使用XML Engine和使用 XMLEngine的情况下截获网络上的SOAP包,进行对比    6.4.1不使用XML Engine时的SOAP包

    以网上银行管理员查询客户信息的操作为例,得到的SOAP包片段如下(片段    6.1):

    基于XML的安全通信平台一一×MLEngine    <multiRef    id=”id0”

    goapenc:root=…0    t

    soapenv:encodingStyle=”http://schemas xmlsoap.org/soap/encoding/” xsi:type=”ns3:BankHelp”

    xmlns:soapenc。’http://schemas.xmlsoap.org/soap/encodin∥”

    xmlns:ns3=”http://helps.ebookstore.sjtu

    <bankUserNarne    edu’’>

    xsi:type="xsd:string”></bankUserName>

    <bankUserPassword xsi:type="xsd:str

page 44

ing”xsi:nil=”true’’/> <cardId xsi:type=”xsd:int“>10000</cardld> <grade xsi:type="xsd:string”>manager</grade> <sum xsi:type=”xsd:int”>100</gum> </multiRef> <multiRef id=”idl 8”    soapenc:root=…0    t

    soapenv:encodingStyle="http://schemag.xnfisoap.org/soap/encoding/’’

    xsi:type2”ns4:BankHelp”xmlns:ns4=”http://helps.ebookstore.situ.edu”

    xmlns:soapenc2”http://schemas.xmlsoap ore,/soap/encoding/”>

    <bankUserName xsi:type=”xsd:string”></bankUserName> <bmkkUserPassword xsi:type2”xsd:string’’xsi:nil=”true’’/> <cardld xsi:type=''xsd:int”>1 0007</cardld>

    <grade xsi:type=”xsd:string”>leader</grade>

    <sum xsi:type=”xsd:int’’>800</sum> </multiRel>    <multiRef    id2”idl5”

    soapenc:root=”0”

    soapenv:encodingStyle=''http://schemas.xmlsoap.org/soap/encoding/”

    xsi:type=”ns5:BankHelp”xmlng:ns5=”http://helps,ebookstore.gjtu.edu”

    xmlns:soapenc2”httlcl://schemas.xmlsoap.org/soap/encoding/”> <bankUserName xsi:type="xsd:string”></bankUserName>

    <bankUserPassword

    xsi:type="xsd:string”xsi:nil=”true”/>

    <cardId xsi:type=”xsd:int”>10004</cardld> <grade

    xsi:type=”xsd:string”>manager</grade>

    <guin xsi:type=”xsd:int”>500</sum>    </mualtiRef>

    片段6.1不使用XMLEngine时的SOAP包片段    75    ——一

    兰王兰坚兰塑塞皇望堕!鱼二二兰坚兰曼!!虫!

    从片段6.1可以得出结论,本应用达到了设计要求:SOAP包正常,上面的片段 是一个复杂结构数据的SOAP包的传送,该片段包含三个卡号的信息:10007、

    10004和10000。用户可以任意的指定加密对象,比如:卡号10004的所有信息、

    grade为manager的所有卡的信息、金额在800元以上的所有卡的

page 45

信息等等。

    6.4.2使用XML Engine后的SOAP包

    同样的,我们以网上银行管理员查询客户信息的操作为例,但是我们在用户配置 文件中配置为对卡号10007加密,得到的SOAP包片段如下(片段6.2):    <multiRef    id=”id0”    7’

    soapenc:root=”0

    soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/” xsi:type=”ns3:BankHelp” xmlns:soapenc=”http://schemas.xmlsoap.org/soap/encoding/” xmlns:ns3=”http://helps.ebookstore    sjtu.edu”’

    <bankUserName xsi:type2’’xsd:string’’></bankUserName>

    <bankUserPassword xsi:type2”xsd:string”xsi:nil=’’true’’/>

    <cardId xsi:ty-pe2”xsd:int’’>10000</cardld> <grade xsi:type=”xsd:sla-ing。’>manager</grade>

    <sum xsi:type=”xsd:int”>100</sum>    </multiRe侈

    <EncryptedData

    xmlns=”http://www.w3.org/200I/04/xmlenc#”

    Type=”hap://www.w3.org/200I/04/xmlenc#Content”>

    <EncryptionMethod

    Algorithm=”http://www.w3.or∥200I/04/xmlenc#tripledes-cbc”/>

    <Keylnfo xmlns2”http://www.w3.org/2000/09/xmldsig#’’>

    <KeyNmne>/tmp/Cert/Zhang/Private/deskey.bin</KeyName>

    </KeyInfo> <CipherData>

    <CipherValue>q/FfW793qirDSlXPcXEHdXf596S8xs6+EWfe3LuVqvEJvneKzgWP    szFcZ6/otLKI

    OCCnKy/6SghRVqdNiycdisE6A4+HZ38/zCNHAC5FsitpHNiKcn】Hiuq0QVUtDO    VY

    WOeecqoydc8GqN48CvwljG98KaCrNdl86Ga/rJL+NQk27qJqkDyqox0WW8yAWh    30    76

    ——————————————堑.茎坚!塑塞全望堕!鱼二二兰坚!!!!垫1

    5cXWIPmuZiVfcE6F9ybfmeJtjjcbM7/JmpOi+5ZZVOTIoZGwpIfwwgM5k2VGiTU    m

page 46

    x0XHojSXTpMZz6FARV6VHjkSozEyTJfzmWAgwgVnOIsC45TtZ9fJHnNsPbxlsV    3e

    FKEP884nfLRZ+aWknZ9u70QepnIZyGQxM3rn/j7RulGbtFLKZeWgN/v+k2X8ZS    aG

    uP4sCAIObqYZc4QFeM6UITCyOMl8Dvxi l QolIYSV3/SQ8+YOiCaSpdP2vCuXQ 1SM tokCLrXzlC8ebLZNMb727htwE6h/ApRG26KgdpQ3UdAQmFlaDmpAt7A2vyJFnf    8A

    J1Xwz8KUlwd4X4f+Hx0Q4+LJzH0monUK51XwWdYuowpyqpUKmHSo 1 3mVuGg    +olaT

    qUkdD4tyh+TEDGdFMyv59/Uy2RxPCVQlKMs8kMqY7Igkrlk5WW03hnq360L5E    f6D

    </CipherValue>

    </CipherData> </EncryptedData> <multiRef id=’。idl5”

    soapenc:root=,t0”

    soapenv:encodingStyle2”http://schemas.xmlsoap.org/soap/encoding/”

    xsi:ty-pe2”ns5:BmlkHelp”xmlns:ns5=”http://helps

    ebookstore.sjtu.edu”

    xmlns:soapenc2”http:Hschemas xmlsoap.org/soap/encoding/”’

    <bankUserName xsi:type=”xsd:string”></bankUserName> <bm-tkUserPassword xsi:type=”xsd:string”xsi:nil=’’true”/> <cardId xsi:type=’。xsd:int”>10004</cardld> <grade xsi:type2’’xsd:string”>manager</grade> <sum xsi:type2”xsd:int”>500</sum> </multiRef>

    片段6.2使用XML Engine后的SOAP包片段

    比较片段6.1和片段6.2,可以发现:卡号为10007的<multiRef>标签包括该标签

    的所有内容已经被EncryptedData标签替换,内容已经加密。    同样的,对解密、签名、验证、过滤等功能测试也顺利通过,同时进行的容 量测试也顺利通过,这表明,本系统和应用都是成功的。    基于XML的安全通信平台一--XMLEngine    第七章今后的工作

    目前我们设计并实现的XMLEngine安全产品,配合硬件加密机和密钥管理

    系统,己经初步通过阶段性测试和验收。但对于一一个商业化的成熟的产品来讲,

    还有许多功能和题材可以挖掘。    7.1

    SOAP安全

    我们的安全产品针对以XML为数据格式的报文,这其中当然包括SOAP包。

page 47

    SOAP的两个主要设计目标是简单性和可扩展性,这就意昧着有一些传统消息系 统或分布式对象系统中的某些性质将不是SOAP规范的一部分。自从SOAP规 范发布以来,SOAP规范的加密性、认证和授权等安全机制一直受到人们的广泛 关注,这三个方面对于任何的B2B来说都是很重要的,但SOAP标准在制定规 范时并没有过多考虑SOAP的安全性要求,因为SOAP一个很重要的设计目标 就在于它的简单性,尽可能的利用已有的标准和协议来实现相应的功能,而不是 另起炉灶,重新定义一个崭新的协议,如果这样的话,会大大的降低它的实用性 和兼容性。 SOAP安全性扩展:数字签名(SOAP.DSIG)定义了用数字方式签名SOAP 消息及确认签名的句法和处理规则。数字签名使初始用户和软件能够可靠地发送 信息。但SOAP并不包括签名消息的规定,因此也无此安全性。SOAP—DSIO必 须使用安全套接字层SSL(Secure    Sockets

    Layer),SSL是由Netscape公司开发的

    ‘套Internet数据安全协议,它已被广泛地用于Web浏览器与服务器之间的身份

    认证和加密数据传输,而针对XML的数字签名不能保证发送方的身份和签名文 档的发送次数,同时使用XML安全性也无法对发送方身份进行验证,这些又是    利用SSL安全套接字层通信的基本功能之一,将二者结合起来优势互补。    7.2

    AAA门户认证系统

    随着Internet的发展,越来越多的应用通过网络得以实现,拨号用户、专

    线用户以及各种商用业务的发展使Internet面临许多挑战。如何安全、有效、

    基于XML的安全通信。F台~一xMLEngine

    可靠的保证计算机网络信息资源存取及用户如何以合法身份登陆、怎样授予相应 的权限,又怎样记录用户做过什么的过程成为任何网络服务提供者需要考虑和解 决的问题。正是基于此需求,AAA协议逐渐发展完善起来,成为很多网络设备解    决该类问题的标准。 AAA即为Authentication(认证),Authorization(授权),Accountin2

    (记费)。认证(Authentication)即辨别用户是谁的过程。通常该过程通过输

    入有效的用户名和密码实现;授权(Authorization):对完成认证过程的用户 授予相应权限,解决他能做什么的问题。在一些身份认证的实现中,认证和授权 是统…在一起的;计帐(Accounting):统计用户做过什么的过程,用户使用的 时间和费用。通常可以用用户占用系统时间、接受和发送的信息量来衡量。

    从A通过Authentication、Authorization和Accounting集成控制了用户 在自己特定角色特点所遵循的原则下如何访问多个网络及特定网络下的某个平

    台也及某种应用服务。通常意义上的AAA服务器都具有用户认证、授权处理用户 请求以及收集用户使用情况的相关数据的功能。对一个服务提供商来说,这样的 AAA服务器应该有一个应用型的特定模式的应用界面(接口),通过这个界面(接 口)的服务必须通过授权。在实际使用中,AAA服务器都带有~个用户数据库(可 以是某系统用户数据库或的数据库系统),这个数据库中含有用户的初始化 信息,它可以反映合法的属性值以及每个用户所享有的权限。通过它和客户端软 件的数据交流来实施相关操作。

    Authentication通过终端用户的识别属性来判定它是否有进入网络的权

    限。终端用户一般需要提供一个用户名(该用户名在这个认证系统中应该是唯一    的)和对应该用户名的口令。AAA服务器将用户提交的信息和储存在数据库的

page 48

    用户想关联的信息比较,如果匹配成功的话该次登陆生效,否则拒绝用户请求。 当用户通过认证以后,Authorization就决定了该用户访问网络的全线范围

    及所享有何种服务。就有可能包括提供一个IP地址,或某种规则的滤镜以来确    定那些应用和协议可以被支持。在AAA管理模式下Authentication和

    Authorization通常可以一起执行。 Accounting提供了收集用户使用网络资源情况信息的方法。通过该类数据的收 集,可以提供网络审查、发展以及结构调整的一些依据。 目前AAA应用系统越来越多的采用XML作为消息传递的载体,在这种情况下, 使用XMLEngine平台就非常合适。利用XMLEngine基本组件构建“AAA安全

    基于XML的安全通信平台一一XMLEngine

    门户”,实现统一‘的用户认证和授权功能。 安全消息平台的基本想法是在客户端对用户应用发出的消息(邮件、远程过程调 用等)实施…定的安全保护,如加密、签名等,可能还会有对阅读者的访问控制 等等。在传递、存储过程中,消息都处于被保护状态。消息将要被使用时(比如

    读取邮件),安全消息平台将消息还原成原始状态,供用户使用。

    为了保证用户在使用安全消息平台时的透明性,我们使用XMLEngine组件进行 支持,这需要对XMLEngine平台作出一些拆分和重组。    苎主茎坚!堕塞苎垄堕兰堕二二圣坚!!坚!竺    参考文献

    【1]lTU,Information Technology—Open system interconnection—The Directory:Public.key

    And Attribute Certificate Frameworks,ITU—T Recommendation X 509,ITU,2000

    [2]ITU,Information Technology~Open system interconnection—THE    AUTHENTICATION    DIRECTORY:

    FRAMEWORK,ITU—T

    Recommendation X.509.ITU.1997    [3]x.500    Editing

    Meeting,Copenhagen,21-28 October 1999

    X.509 Public Key Infrastructure Certificate and cRL

    【]Housley,R,Ford.W,Polk.w,etc.,Intemet

    Profile,RFC 2459、IETF’1 999    f4]C Adams,S f5]Sharon

    Farrell,Internet X 509 Public Key Infrastructure Certificate    Mana2ement

    Protocols,RFC 25 l 0.1ETF l 999 Boeyen,”X.509 4th edition:Overview of

    PKI&PMT Frameworks(Entrust Inc.y

    l,ttp://www.entiust.comlresources/pdl7509 overview.pdf(2000)

page 49

    [6]Sharon Boeyen,”X.509 4th edition:X 509(2000):What’S new?(Entrust,lnc)”URI。:

    }1nD:∥www.enn+u虬com/resources/pdt7509

    new

    pdf(2000)

    [71D W.Chadwick“An X 509 Role Based Privilege Management Infrastructure”,Business

    Briefing—Global InfoSecurity 2002.Worid Markets Research Centre Ltd.ISBN:l一903150 52 3.

    Oct 2001 On accompanying

    CD-RoM Reference Library/03.pdf    Otenko.“RBAC    Policies in

    f81D W.Chadwick.A    XML for X.509 Based    Privilege

    Management”,accepted for SEC2002,Egypt,May 2002 『911’onj    Nyk{inen    ,

    Attribute

    Certificates    in

    X.509    ,

    hnD:l/www.tcm hut.矗/oDinno“Tik—l 10.50l/2000/12apers/abstract n','kanen htmI

    【IO]D.W.Chadwick,O.Otenko,ISI,University    of

    Salford,Salford,M5    4WT,!堕题超M鉴    &塑2

    http://sec.isi.salford.ac.uk/download/SACMATfinaLpdf    PrivilEge and Role

    一_』生k一旦!驻虻一~一r堕刘垦g曼………….M她ag曼m曼m………。。l鱼缸塑盟!!盟M雎,

    Management Infrastructure Standards validation,PERMIS presentation    vl

    【11]ThePERMISConsortium,ThePERMIS Project,PermisCOMPAv0_6ENG.ppt    ENG.ppt

    f12]Baltimore:SelectAccess Product    PKI based

    Overview,尬://www.baltimore.com

page 50

    SecureWay

    Authorization,

    elsecurity,轴:[I叠型燮!必二b县lli固Q追.£Q瑾垃k!:bQQkl盟:P畦±

    自删擞幽im!二弛星:9_t'g/archive9900fFebOO/clark/sld鱼QU!!堕

    htjp:ilwww.tivoli.com    [14]Security 【IlBM    f13]Tivoli

    Solutions,鲢蛙地戡M:3:ib堕:com/security/index,shtml

    mainfrmne adds    @窨eHer    advanced

    班地:型燮出她i蜒点Q塑地曼燮!地!12旦幽三筵耋§二l?t0.!l    【15”uthentication&Authorization

    netegrity.pdf Complementary Solutions

    security    features

    for Securing    the

    Digital

    Enterprise,BioNetrix&Nete鲥ty—Complementary

    [16]Public-Key Infrastructure—The VeriSign

    Solutions For Securing the Digital Enterprise

    EntrustGetAccess:Features&Benents,垫!112;』』堡塑燮翊j照蝤!:£Q垡!g!!垫!璺塑受鱼丛燮i!壁里    [17]Entrust’XML Strategy for Authorization,Entrust    81

    Difference,|j鲰i』撕鲤獭_宴照sign点鲤n    lnc.噬P;碰型曼Y幽女型盟垡№

    基于XML的安全通信平台一一xMLEngine    (18]Web Services    Trust and

    XML Security Standards,Entrust    Looks    to

    [19]Mark    Glaser,    SAML    Allay

    lnc.垦鲢亚盟塑盟坠蔓螋一St.con.1    XML

    Security    is the

    Concerns

    b!!p:丝g£b皇盟女堂!卫担!盟!延£§!型i皇兰£!!!!!墅Q

page 51

!壁!∑l!堕§!Q!£丛j!塑.±B竖l:】塑    [20]James    【21]Bruce    f221Bruce    Kobielus,

    Simplification,    not    XML,    for    key    to    PKl

    success,http://www.nwfusion.eonffcolumnists/200 I/0507kobielus.html    Weiner,IBM    Tivoli    Access    Manager

    e—business    v3.8

    AuthMark

    Performance,http://www.mindcraft.com/whitepapers/pd38/pd38.html    Weiner,Securant    Weiner,    Baltimore    ClearTrust    Version    4.2

    AuthMark

    LoginPerformance,h『ttp://www.mindcraft.com/whitepapers/ct/ct42,html    [23]Brnce

    Technologies    SelectAccess    3.1

    AuthMark

    Performance,丛哇丛!型塑塑也l££熊£衄]坐丛女P女££!型塑!i丝塑!:△女!Ⅱ

    [24]Portals:The [25]Entrust Unveils    evolution of Extranet Access    Management,

    堕韭巳;!!堡型堕:!堡!!塑堕!QI里堑垒…soL—i堕!!垃垂旦11塑】.燮11l一口Q盥韭:P亟f

    U S.Government Blueprint to Link National Security and E—Government

    Initiatives,http://www.entrust coar/news/files/1 l 08 01 774 htm

    『26]SDN.801:ACCESS CONTROL CONCEPT AND MECHANISMS,National Security

    Agency,USA http://www.sse.ie 2002 2002

page 52

    [27]Chuck Cavaness,Jakarta Struts,O’Reilly

    [28]James Goodwill,Mastering Jakarta Struts,Wiley Publishing,lnc    2002.7;

    f29]谭寒生,余垫,周明天,X,509v4的改进,电子学会第八届青年学术年会2002CIEYC,

    [30]Harvey MDeitel 社,2003    2004 7 Java

    Web Services for Experienced Programmers.机械T业出版

    【3l】丁鹏,刘方,邵志峰,何丙胜,Stmts技术揭秘及WEB开发实例,清华大学出版社,

    基于XML的安全通信平台一一xMLEngine    致谢

    本文在导师周明天教授的精心指导下完成。周老师渊博的学识、严谨的治学    态度、丰富的实践经验、对学科发展方向的敏锐眼光给予了我极大的启迪和引导。

    导师在我的专业课程学习、研究课题选题、研究方法、论文写作等方面都进行了    精心的指导,使本文得以顺利完成。他对我的研究工作的严格要求,促使我对科 学研究的精神、方法、内在规律有所领会,这些收获是我今后工作的重要基础。 在此,我向周老师表示深深的感谢。

    感谢余坤副教授对我的指导和帮助。课题期间一直得到余老师很多鼓励和有 益的启发。感谢陈福莉老师在课题期间给予我的很多帮助和鼓励。

    感谢电子科技大学一卫士通联合实验室的所有同学,尤其是吴远程博士、谭良    博士、林海宇、王成等同学的帮助,以及很多有益的探讨。 感谢我的父母和所有一直关心帮助我的亲人及朋友们,他们给了我许多支持 与鼓励。 感谢所有参考文献的作者们,他们的辛勤工作和成果给了本文.r作以极大的    帮助和启发。

    最后,衷心感谢为评阅本论文而辛勤工作的老师。    基于XML的安全通信平台一一xMI,Engine    个人简历、在学期间的研究成果及发表的学术论文

    个人简历 邓彦杰,四川简阳人,1971年3月出生。于1993年7月在四川轻化工学《 获得工学学士学位,于200 2年9月进入电子科技大学计算机科学与工程学院] 读工学硕士学位。主要研究方向:中间件,信息安全    研究成果

    1)基于XML的安全通信平台一xML 2)Role—Based    步三等奖)    Access    Engine 1    0版

    Control(RBAC)基丁角色的访问控制系统1.1版(四川省科技i    学术论文 邓彦杰,周明天,一种XML安全系统的设计与应用,《通信技术》2004.1

page 53

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务