1.引言
Web Services 通过一系列的标准技术,已成为企业实现面向服务的体系架构(Service Oriented Architecture,SOA)的首选。它实现了真正意义上的平台无关性和语言独立性。随着 Web Services 的应用越来越广泛,其安全性和互操作性也变得越来越重要。于是关于 Web Services 安全和互操作方面的规范被制定出来并被不断更新。
目前 Web Services 的安全规范有很多,包括 WS-Addressing,WS-Security,WS-Reliable Messaging (WS-RM),WS-Secure Conversation(WS-SC) 等,它们分别从不同的角度和范围来保证 Web Services 的安全性。
由于 Web Services 安全规范涉及到消息的认证机制、机密性和完整性等各个方面,且可选择的余地很大,因此不同应用服务器提供的对 Web Services 安全机制的支持也不尽相同。这样,如何让运行在不同应用服务器环境中的Web Services和Client 之间进行安全地互操作也成为问题。在 J2EE 和微软的.Net 日益成为两大主流平台的今天,解决它们之间的互操作更是成了众多 web services 互操作标准的重要课题。微软的Windows Communication Foundation V3.0(以下简称WCF)是一个用于创建和运行分布式系统的技术集合,是微软为 SOA 而设计的一套完整的技术框架,它整合了 .Net 平台下以往全部的分布式开发技术。所以 J2EE和.Net 平台的互操作主要是和 .Net 上 WCF 应用的互操作。
为此,专门致力于提高互操作性的组织 Web Services Interoperability (WS-I)提出了一系列概要,包括 WS-I Basic Profile,WS-I Basic Secure Profile 等,表明为实现互操作,开发者及部署者应该如何使用各种 Web Services 标准。WAS V7.0 实现了对 WS-I Basic Security Profile 1.0 的完全支持,以及对 WS-I Basic Security Profile 1.1 的大部分支持。在支持 Web Services 的应用服务器中,WAS 对各种标准的支持是比较全面,比较早的。
WAS V7.0 中包含了一组 Java API for XML-Based Web Services (以下简称JAX-WS) 样本程序,本文通过对样本程序配置Web Service Secure Conversation 安全策略集,展示了如何在 WAS V7.0 和微软的WCF 之间实现互操作性。
3.在上图中,选择证书(当前用户)->个人->证书,右键点击所有任务->导入,将 alice-key.p12 导入,提示密码时,输入 sampleapp。
4.接下来将 bob-cert.der 导入到证书(当前用户)->受信任人->证书中。
5.再将 myca.cer 导入到受信任的根证书颁发机构中。
如果您要测试 JAX-WS Client 访问 WCF Service 的例子,还需要完成以下操作:选文件-> 添加管理单元,在“独立”选项卡上点“添加”,选择“证书”->“计算机帐户”,然后点“完成”。按上述步骤,将 bob-key.p12 导入到证书(本地计算机)的个人证书中。将 alice-cert.der 导入到证书(本地计算机)的受信任人的证书中。将 myca.cer 导入到证书(本地计算机)的受信任的根证书颁发机构中。
为 JAX-WS 应用导入证书
对于 JAX-WS Service,需要将 WCF Client 端的alice 的证书导入到 WAS 端的keystore 中。本文提供已经导好的jks 类型的keystore:receiver.jks,所以只需要将 mySysKeys.zip 拷贝到 WebSphere 服务器端,解开 mySysKeys.zip 到某个目录即可。对于 JAX-WS Client 访问 WCF Service 的情形,需要将 bob 的证书导入到 WAS 端的keystore 中,本文提供已经导好的keystore:sender.jks,同样只需要放到 WAS 端某个目录即可。