企业应用的Web服务安全技术:框架(图) (4)
[ 来源:互网络 | 更新日期:2007-09-06 04:21:17 | 浏览次数:13456]
简介:在本系列的第1部分中回顾了现有的解决方案及其缺陷,并提出开发一个新的Web服务安全工具包的方案,此工具包可以解决其中部分缺陷(见第一部分)。本文将进一步介绍此Web服务安全工具包的框架(下载部分源代码),并解释工具包内Web服务安全的特性与Java语言的面向对象特性之间的高层抽象映射关系。
在工具包中WSSE安全标记由wsse.Toolkit.Tokens.Wss包内的类表示,多数支持的标记类型都是从现有XML元素构建的??XML元素可以从某信息中提取然后再另一个信息中使用,这也是工具包的需求之一。下面描述的所有的标记都是可选的, 在安全头部中包含这些标记不是WSSE规范的要求,而是出于应用逻辑的需要。
构建一个特定标记并生成XML元素或者从现有XML元素构建标记时,会遵循标准对标记进行验证。XML元素的生成以及验证将会被延迟,直到标记的XML元素内容被明确访问才进行。这样可以避免过多的XML解析工作,并且可以实现唯一验证点,而不是在构建和更新XML元素的多个地方都进行验证。XML的构建以及添加依赖于标记顺序,在特定情况下, 标记顺序对于生成的安全头部的正确处理时很重要的。
工具包包含两种标记类型,表示单一XML元素的简单类型和可能包含其它标记的复合标记类型(由WsCompositeToken类)。复合类型标记的处理规则不同于简单类型,复合类型必须将任何操作(比如设定所属元素)传递到它的子元素,还要额外的为包含的子标记定义查询/替换等访问方法。
<SOAP-ENV:Header>
<wsse:Security SOAP-ENV:actor="myService"
SOAP-ENV:mustUnderstand="1">
... </wsse:Security></SOAP-ENV:Header>
上面示例中的WSSE安全头部,在工具包内的由WsseHeaderToken头部标记类表示。它的功能包括:处理所有包含的安全标记、保证安全头部符合WSSE规范、生成头部XML元素等。它满足WSSE规范第5部分的要求,支持SOAP1.1协议中定义的行动者(actor)属性。可以在生成的头部中设置SOAP的mustUnderstand属性,但是对于此属性的正确处理应该在构建新的头部之前完成,因此,不在工具包的处理范围之内。
另外,WsseHeaderToken类还包含一些方法以辅助头部处理操作,如添加时间戳、对标记进行签名和加密等。如例 2所示,此类还具有供扩展使用的在类实例中添加新的标记处理器的通用方法。所有添加的标记处理器按照添加顺序被依次调用??这有助于保证在处理过程中新产生的XML元素可以被处理器链中稍后添加的标记处理器处理。
<wsse:Security ...>
<wsse:UsernameToken wsu:Id="xdJKdk6hgg68h">
<wsse:Username>Admin</wsse:Username>
<wsse:Password Type="wsse:PasswordDigest">
xcYjkd9Hjkksds...
</wsse:Password>
<wsse:Nonce>WKjd73j0...</wsse:Nonce>
</wsse:UsernameToken></wsse:Security>
在WSSE规范6.2部分以及用户名称标记 概要标准第3部分中描述的户名名称标记类型由wsse.Toolkit.Tokens.Wss.UsernameToken类处理。 使用用户名称标记元素是传递用户名称(有时可以作为一种确认机制)以及他(她)的密码到目的服务处的标准方法。 此类型同时支持wsu:Id属性, 使得可以在其它处理节点(比如XML签名)处引用该标记元素。 包wsse.Toolkit.Directory内的辅助类具有从用户信息存储服务器处获取用户信息的功能??此功能通过wsse.Toolkit.Directory.IUserDirectory接口的方法表示。
<wsse:Security ...>
<wsse:BinarySecurityToken ValueType="wsse:X509v3"
EncodingType="wsse:Base64Binary"
wsu


您的位置:
