用于实现Web Services安全性的HTTPS

来源:互联网 发布:淘宝韩国女模特名字 编辑:程序博客网 时间:2024/06/02 10:08

dev2dev 首页 > 资源中心 > 技术文章

用于实现Web Services安全性的HTTPS
--详细说明了用于成功部署具有传输层安全的Web Services的服务器和客户端配置

时间:2005-01-21
作者:Jim Clune
浏览次数: 4646
本文关键字:Web Services 文章工具
推荐给朋友 推荐给朋友
打印文章 打印文章
  既然IT经理和黑客们十分清楚Web Services中固有的安全性风险,那么Web Services开发人员了解如何实现安全性架构就显得日益重要。然而,因为很多媒体关注于对新兴消息层安全技术,比如WS-Security、XML签名、XML加密和安全性断言标记语言(Security Assertion Markup Language ,SAML)等的高层讨论,从而使掌握实际的安全性基础知识和为解决要求您处理的任意类型安全性问题设计一个步进式的计划变得困难。
  因此,让我们看一看实现和部署使用HTTPS的Web Services的具体细节。HTTPS是对HTTP的扩展,通过基于安全套接字层(Secure Sockets Layer ,SSL)对HTTP进行分层来使用传输层的安全性。尽管目前传输层安全性的主题并不如消息层安全性主题那么引人关注,但它确实具有几个重要的优点。它是一项成熟的技术,所以其相关的标准和工具都已开发出来。它还为熟悉传输层安全性,但是不熟悉Web Services的工程师提供一条极佳的过渡路径。
  为了尽可能具体而实用地进行讨论,我将通过一个HTTPS实现的例子进行说明。我使用的例子是一个服务,它使用Java进行编写,部署时使用Apache Axis 1.0(Apache的第二代SOAP实现)和Apache Jakarta Tomcat 4.1.12作为servlet容器和HTTP服务器。这些工具均可免费用于商业或非商业用途。我将讲述一些特定于这些工具和技术的必需细节,但是这里讨论的原则同时也适用于其他Web Services技术,比如Microsoft的.Net。
  HTTPS提供加密,可以确保私有性和消息的完整性。HTTPS还通过使用证书进行身份验证,可以应用于服务器端、客户端或同时应用于这二者。现今,具有服务器端证书的HTTPS是Web上最常见的配置。在这种配置中,客户端可以对服务器进行身份验证,但是服务器不能对客户端进行身份验证。然而,HTTPS还可以与基本的或摘要式身份验证联合使用,后者为客户端提供的身份验证形式功能更弱。部署使用HTTPS的Web Services时,要尽可能早地确定对身份验证的要求,这一点很重要。这些要求将决定您在何处使用证书,以及您想要在客户端使用何种辅助的身份验证机制(如果需要的话)。
  为了举例说明如何基于HTTPS部署SOAP服务,我将使用金融机构作为例子,因为它对于为与其业务合作伙伴进行业务到业务的集成提供Web Services很有兴趣。在转而讨论安全性问题之前,让我们简短地看一看与示例安全性实现相关的Web Services部分。

自动化WSDL
  假定这家金融机构想要公开简单方法getAccountBalance(accountNumber),该方法使用一个帐户号码作为输入,然后返回当前的帐户余额。Java方法签名可能像下面这样:

public float getAccountBalance(
int accountNumber) throws
InvalidAccountException {

// Perform database query and
// return result.
...
}


  该方法签名为Java应用程序定义了接口,但是特定于语言的接口对于能够相互操作的Web Services来说是不够的。标准的方法是创建一份Web Services描述语言(Web Services Description Language,WSDL)文档。接着,这份WSDL文档便成为利用服务的业务合作伙伴的已公布接口。首次引入WSDL时,它们是手写的,而且这仍然是一个可行的选择。然而,更新的方法是使用能够自动生成WSDL的工具。Axis提供此种机制,Microsoft的.Net也是如此。要部署该实现,您需要配置组件(在这个例子中,是指Tomcat、Axis和实现Java类)以使其共同工作。Axis文档说明了所有细节,但是主要的步骤是把axis目录从您的Axis安装复制到您的Tomcat安装的webapps子目录。重新启动Tomcat时,它将读取存储为webapps/axis/WEB-INF/web.xml的Web Application描述,然后使用这些信息查找AxisServlet。
  您可以以多种方式部署服务到Axis,但是最简单的方法是把您的Java源代码作为一个JWS文件复制到webapps/axis目录。通过使用JWS扩展名,您指示Axis这个文件是一个Java Web Services,并允许使用一个随需应变的编译过程(类似于用于JSP文件的编译过程)来处理这个文件。
  对于这个特定的例子来说,您需要把一个名为Account.jws的文件复制到webapps/axis目录中。然后,您让浏览器指向http://localhost:8080/axis/Account.jws?wsdl就可以看到动态生成的WSDL文档。
在下一期中,我们将考虑针对基于HTTPS部署这个Web Services的服务器端配置。

关于作者
Jim Clune是ParaSoft 的开发经理,负责管理用于C、C++和Web开发的错误预防和错误检测工具的开发。1997年,他以质量咨询员的身份在ParaSoft开始了其职业生涯,很快被提升为软件工程师,亲自参与了ParaSoft 多项产品的开发工作。他拥有Harvey Mudd College的工程理科学士学位和Azusa Pacific University的应用计算机科学与技术(侧重于技术性的程序设计)硕士学位。Clune十分精通Windows、UNIX(包括 Linux)和Mac系统。他专攻C/C++、Visual Basic AML和PLC阶梯逻辑语言。

原文出处
http://www.fawcette.com/javapro/2003_08/online/webservices_jclune_08_25_03/ 

原创粉丝点击