Java Web服务: WS-Security的细粒度使用 - 编程入门网
Java Web服务: WS-Security的细粒度使用时间:2011-02-03 IBM Dennis Sosnoski在简单 Web 服务环境中,客户机直接连接到服务器,而服务器直接对请求执行所有必需的处理。正如本系列 上一篇文章 所述,使用 SSL 提供保护的连接可以为这类环境中的大部分应用提供出色的安全性。但是,更加复杂的环境变得越来越普遍,其中涉及到使用多层服务器处理请求。在许多企业环境中日益流行的服务编排的完整理念就是以这种方法为基础的,这与面向服务架构(SOA)的概念相同。在这些类型的环境中,必须实现更强大的 WS-Security 替代方案。 正如上一期文章所述,WS-Security 带来了沉重的性能代价。降低成本的方法之一就是针对由服务定义的各个操作甚至是消息设置合适的 WS-SecurityPolicy,而不是将单个 WS-Security 策略应用到整个服务。WS-Security 的细粒度使用要求考虑更多的内容,而不是使用一成不变的方法,但是如果得到正确应用的话,那么就可以减少常用操作的性能开销,同时不会减弱需要 WS-Security 的操作的安全性。 定义策略 本文使用的样例策略与 “Axis2 WS-Security 基础” 和 “Axis2 WS-Security 签名和加密” 中的策略相同 — 一个简单的库管理服务。这个服务定义了三种操作: getBook,检索由 International Standard Book Number (ISBN) 标识的特定图书的细节。 getBooksByType,检索某一类型的所有图书的细节。 addBook,向库中添加一本新书。 为了向安全用例中添加一些有趣的变化,本文作出以下假设: getBook 操作可以安全地公开给任何人(未应用安全性)。 getBooksByType 需要授权(因此要使用 UsernameToken)。 addBook 操作需要一个审计跟踪,以跟踪是谁添加了图书(通过对请求消息进行签名实现)。 在早期文章中,您已经了解了如何配置 Axis2/Rampart:将一个 WS-SecurityPolicy 文档连接到 org.apache.axis2.client.ServiceClient 实例(在客户机端),或者将策略文档嵌入到 services.xml 服务配置(在服务器端)。这个方法可以奏效,并且可用于测试,但是对于生产应用来说,最好通过将 WS-SecurityPolicy 内嵌到 WSDL 文档将其直接关联到服务定义。WS-Policy 和 WS-SecurityPolicy 旨在为这种嵌入提供支持,并且使用来自 <wsdl:binding>、<wsdl:binding>/<wsdl:operation> 或 <wsdl:binding>/<wsdl:operation>/<wsdl:message> 定义的引用标识将被应用到绑定、操作或消息的相应策略。Axis2 1.4.1 实现对内嵌在 WSDL 中的策略的初始处理,而这个实现在当前的 Axis2 1.5 发行版代码中得到了改进。为了演示策略在 WSDL 中的使用,本文结合使用了 Axis2 1.5 发行版代码和尚未发行的最新 Rampart 代码(后者最终会作为 Rampart 1.5 发布)。 清单 1 展示了示例应用程序的 WSDL,其中添加了策略,并在相应的位置中引用。(清单 1 针对长度和宽度进行了编辑;完整的 WSDL 可以从 代码下载 中的 library.wsdl 文件获得)。每个策略定义了一个 Id 值,该值随后从相应的操作(针对 UsernameToken 策略)或消息(针对签名策略)中引用,以粗体显示所有策略。 清单 1. 具有细粒度安全策略的 WSDL |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |