无线 Web 服务中的 java 技术 基于 Java 的 Web 服务和无线 Java 开发是 JavaOne 2002 的两个最突出的主题。它们代表普及计算领域中未来的后端和前端 Java 技术。
Web 服务是基于标准 xml 通信协议的松耦合的可互操作的软件组件。Web 服务的使用使供给商能够在其核心竞争力所在的特定市场中提供服务。然后,客户可以根据其不同需要,从多个供给商选择采购服务。这种便利意味着 Web 服务完全适合于为无线前端提供服务。无线信息设备的便利和动态本质答应移动用户利用模块化的且动态可重新配置的后端服务。
Java 平台可以在无线 Web 服务应用程序开发中扮演几个重要角色。在无线端,Java 2 Micro Edition(J2ME)为所有无线设备(从蜂窝电话到复杂的家用无线信息家电)提供了跨设备的兼容性、高级语言功能和大量库。J2ME 的一个要害组件是移动信息设备框架(Mobile Information Device PRofile(MIDP)),它在蜂窝电话和低端 PDA 上定义 Java API 和运行时环境。由于庞大数量的低端设备,期望在将来能够广泛部署 MIDP。
从 Web 服务端,Java 2 企业版(J2EE)已经具有所有必需的 API 和库来处理 Web 服务 XML 消息。通过 Web 服务接口或网关,可以方便地将用 EJB 技术实现的核心 J2EE 功能、JDBC API 和 RMI API 用于外部世界。为了将这些特性集合起来并启用无线 Web 服务应用程序,还提出了 J2ME Web 服务规范,目前它在 Java Community Process(JSR 172)中。
无线 Web 服务中的安全性 虽然基于 Java 的无线 Web 服务在普及移动商业世界中有一个光明的前途,但当前技术仍不成熟。安全性仍是剩下待解决的问题之一。无线通信是无线电波拦截轻易获取的目标,而无线设备几乎没有任何计算能力来支持所有通信数据的强加密。此外,在后端,Web 服务运行在企业防火墙之外并使用开放消息传递协议来彼此交互。无线 Web 服务同样是易招受各种破解攻击的目标。已开发得很好的点对点安全性技术(如 SSL/TLS 和 HTTPS)不适合于多供给商、多中间 Web 服务网络拓扑图 ? 重点必需集中在保护内容本身而不是传递内容的连接上。尽管面临新挑战,然而 Web 服务本身还是能用来增强移动商业安全性。新兴的 Web 服务安全性规范的出现使您能够将 Web 服务用作安全性实用程序。
在下面的段落中,我将讨论一种常用的安全性技术:数字签名。我将向您演示如何在 XML 消息中使用数字签名来保证端对端的数据完整性。我将应用一些示例来说明如何通过在无线端上使用流行的 J2ME/MIDP 平台并在后端上使用 JavaServer Pages(jsp)技术来实现 XML 数字签名。最后,我将讨论性能问题以及在当前 MIDP 设备上使用数字签名的可行性。MIDP 编程细节不在本文范围内;假如您需要复习一下,请参阅参考资料一节。
定义的 XML 数字签名 正如我早先提到的那样,XML 正成为 Web 服务世界中一个主要的数据交换协议。驱动 Web 服务的 XML 消息在到达目的地之前,通常需要经过多个中间环节。因此,我们保护从端到端的通信内容是重要的。完成这一任务的最好方法是,将 XML 文档及其安全性信息(如签名、摘要和密钥等等)都装运在一起,作为单个文档。
XML 数字签名是将数字签名添加到 XML 文档的 W3C 规范。发送方可以选择对整个文档或者仅它的一部分进行数字签名。数字签名、摘要和公钥被格式化成 XML 元素。那些安全性信息的额外元素可以封装整个原始 XML 消息,或者可以将它们嵌入原始消息。为了方便起见,我将在本文中使用封装格式。
为了清楚起见,我在本文中使用的 XML 数字签名示例并不完全与 W3C 相符。例如,我省去了标准(XML 标记的标准化)部分,因为它仅确保 XML 文档的一致性而与安全性本身无关。另外,我将密钥分成几个参数并将那些参数传递到公钥元素 KeyInfo 下的单独 XML 元素中,以代替使用编码的公钥证书。这在密钥和处理它们的 Java 代码之间建立了更明显的连接。
处理 MIDP 应用程序中的 XML 数字签名 IBM alphaWorks 开发了一种称为 XML Security Suite 的 Java 包,它支持最新的 XML 数字签名规范。JSR 105 是标准化一组 Java API 以处理 XML 数字签名的一项社区成果。然而,它们仅作用于 Java 2 标准版(J2SE),这意味着可以在服务器端上使用 XML Security Suite 或 JSR 105 Java XML 数字签名 API,但不能在 MIDP 无线设备端上使用它们。
要处理 XML 数字签名,正在使用的无线设备需要支持下列功能:
对 XML 文档读写数据。在示例 MIDP 应用程序中,kXML 解析器将 XML 文档和元素解析成 Java 对象(请参阅参考资料)。除了 kXML 外,还有几个可在不同许可证条款下使用的其它 MIDP XML 解析器。
签署消息并验证签名。这些功能需要一个不属于当前 MIDP 1.0 规范的密码术 API。
在下一节中,我将讨论一种轻量级 Java 密码术包,您可以在服务器端和无线 MIDP 设备端上使用它来生成并验证 XML 数字签名。
安全移动代码中的数字签名 数字签名不仅有助于保护应用程序数据通信,它们还有助于保护应用程序本身。无线设备经常需要从无线网络下载应用程序来动态调整自身,以使其适合新环境和任务。怀有敌意的各方可能拦截移动代码分发版并将病毒和其它有害的特洛伊代码段插入下载的应用程序中。我们怎么样才能确保移动代码可信呢?移动代码供给商可以用其数字证书对整个 JAR 压缩文档进行数字签名。无线用户可以根据供给商的可信级别来确定该应用程序的安全性域。