企业应用的Web服务安全技术:框架(图) (2)
[ 来源:互网络 | 更新日期:2007-09-06 04:21:17 | 浏览次数:13456]
简介:在本系列的第1部分中回顾了现有的解决方案及其缺陷,并提出开发一个新的Web服务安全工具包的方案,此工具包可以解决其中部分缺陷(见第一部分)。本文将进一步介绍此Web服务安全工具包的框架(下载部分源代码),并解释工具包内Web服务安全的特性与Java语言的面向对象特性之间的高层抽象映射关系。
// Add sample element’s processing in the new WSSE header
在生成的头部中处理示例元素
SampleProcessor sampleProcessor = new SampleProcessor();
sampleProcessor.SetReplaceTokens(true);
sampleProcessor.AddToken(sample);
wsseNew.AddProcessor(sampleProcessor);
wsseNew.ProcessHeader();
Element soap = wsseNew.GetSoapEnvelope();
框架
框架的结构层次很大程度上可以对应到WSSE规范描述的XML定义块上。工具包包含如下类型的对象:
?表示WSSE 头部的XML元素,也可以由子元素合成组合元素(compiste)。如果拥有用于生成标记的充足信息,那么可以从头开始构建WSSE标记, 又或已经从其他WSSE头部提取出(如SAML断言等)必要的XML元素, 那么可以通过封装来创建。 WSSE标记在工具包内的基类分别为位于wsse.Toolkit.Tokens包内的WsToken类以及WsCompisteToken类
?标记对象的“指针”,通过它们可以对现有的安全标记进行寻址和读取操作。更一般的作用是作为一种机制,方便客户指向现有的XML元素并将XML元素转化为标记对象。标记引用类层次的基类是位于wsse.Toolkit.Refs包内的WsTokenRef类
?标记处理器对象:表示工具包内的操作的对象,可以通过它们对WSSE头部、头部内任何子元素以及包含的SOAP信息进行操作。现在的工具包内仅有2个处理器类,DsigProcessor类以及EncProcessor类, 通过它们可以在WSSE头部中添加新的标记和(或者)改变已有标记。实际上,改动/添加标记的特性并不是处理器的必然需求,非改写的处理器类型也是可能出现的。这样的意图在wsse.Toolkit.Processors包内的处理器类型接口ITokenProcessor中得到体现,它的函数签名设计可以避免引入更多的标记类型。
?帮助类对象:wsse.Toolkit.Utils包内的许多帮助类,可以便于客户进行配置信息处理,XML处理等任务,还有wsse.Toolkit.Saml包用于支持SAML操作;wsse.Toolkit.Directory包用于支持用户目录操作。所有这些工具类本身不表示WSSE头部的任何部分,仅供工具包的其它组件使用。
?辅助包装器对象:此类对象将标记对象和处理器对象封装起来,组成WSSE安全头部的构建器,同时强调标记所有权概念,增强标记处理功能。 现在工具包内。扩展的标记类WsseHeaderToken, 不仅实现了标记对象接口,同时定义了一些便利方法,可以实例化工具包中的类并添加这些对象到本身表示的标记对象中。当然,如果需要,客户可以自由的直接操作工具包中的对象。
需要提到的是,并不是所有对象都是立即可得的。它们会随着工具包实现阶段的不断展开,在后续的文章中被依次介绍并添加到工具包中来(参见第一部分的结论部分)
如下,图1显示了工具包框架中各种对象以及客户间的关系。

图1. 工具包的操作
为了更好的理解图1,需要对工具包操作的几个重点概念进行进一步的解释:
?不是所有的标记元素都可以从现有XML元素生成。例如,重用现有时间戳元素(wsse.Toolkit.Tokens.Wss.TsToken标记)来构建新的标记,没有什么实际意义??实际上,需要时应该从头构建并相应添加新标记
?可从现有XML元素创建的标记类,具有唯一参数类型为org.w3c.dom.Element的构造函数,此构造函数会对输入的XML数据进行浅层次的数据有效性验证。所有情况下,必须正确地维护用于构建新标记XML元素的org.w3c


您的位置:
