分享
 
 
 

在WebSphereAS中使用Web服务安全性

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

引言

Web 服务是一些虚拟软件组件,可以通过各种协议和格式对它进行访问和调用。这些组件所处的环境各不相同且是分布式的。因此,需要一个安全通信基础架构来确保这些组件之间的消息(和内容)的安全性。

Web 服务安全性(Web Services Security ,WS-Security 或 WSS) 十分灵活,可以将它设计成一个基础平台,可以在此平台上构建各种安全模型,包括公钥基础架构(PKI)、Kerberos 和安全套接字层(SSL)。特别是,WS-Security 支持多种安全性令牌、多种信任域、多种签名格式以及多种加密技术。

这个规范提供了三种主要机制:

安全性令牌传播

消息完整性

消息机密性。

这些机制本身并不提供完整的安全性解决方案。相反,WS-Security 是一个构件,它可以与其他的 Web 服务扩展及更高层的特定于应用程序的协议一起使用,从而提供各种各样的安全性模型和加密技术。这些机制可以独立使用(例如,用于传递安全性令牌),也可以非常紧密地集成在一起(例如,签名和加密消息,以及提供与用于签名和加密的密钥相关联的安全性令牌层次)。

本文假定您具有一定的 Web 服务、J2EE 技术及 WebSphere® Application Server V5.0.2 的基本知识。通过阅读本文,您将会理解如何在现有的基础架构上使用 WS-Security,同时也将了解一种声明性的编程模型,即 WebSphere Application Server V5.0.2 提供保护应用程序的通信基础架构。

WebSphere Application Server V5.0.2 中的 WS-Security

WebSphere Application Server V5.0.2 通过一种声明性模型来使用 WS-Security。这种模型的创建和修改可以通过 WebSphere Studio Application Developer Version 5.1、WebSphere Application Server V5.0.2 中可用的应用服务器工具包(ASTK)或 WebSphere 管理控制台来完成。为了更深地理解这一技术,我们将在此描述一下手动过程。

可以传播的安全性令牌是 Username 令牌、基于 X.509 的证书以及轻量级第三方验证(LTPA);同时还有一个 API 来为用户定义的令牌提供插件。消息完整性是由基于 PKI 的数字签名提供的(目前还不支持对称密钥签名),而消息机密性是由 XML 加密法提供的。

WebSphere 安全性处理程序通过读取已声明的部署扩展来获取配置和实施 WS-Security 基础架构,如图 1 所示。它们被实现为基于 WebSphere 运行时的 JAX-RPC 处理程序,并且对于应用程序开发人员是透明的。

图 1. WebSphere Application Server V5.0.2 中的 WS-Security

样本帐户服务

WebSphere Application Server V5.0.2 有一种方便而强大的方式来启用 WS-Security,从而为应用程序的通信链路提供 MLS。它可以让您获取现有的任何服务的 Web 服务描述语言(WSDL),并为您提供必要的 WS-Security 扩展和绑定来保护 Web 服务客户端和服务器之间的消息。

本文假定已经有了一个要应用 WS-Security 必须启用的 Web 服务。这里使用的示例服务是 AccountService,它是由一个假设的银行(SomeBank)提供的。

AccountService 是一个简单的 Web 服务;出于演示的目的,它并没有执行真正的业务处理。它包含一个简单的操作 accountEnquiry,这一操作获取 AccountRequest 消息并返回 AccountResponse 消息。AccountRequest 消息包含有 AccountID 和 AccountType 信息。AccountResponse 包含有帐户信息传递之后的结算。accountEnquiry 操作并没有执行任何基于请求消息的处理,而是返回一个固定的结算值 12345.0。然而,这些消息是很重要的,因为我们将要使用 tcpmon(一个真正监听消息的实体)来监控它们在线路中传送的情况――首先看采用不安全的消息格式的情况,然后再看具有各种 WS-Security 配置的情况。

为了演示的方便,我们在服务中将 accountEnquiry 操作作为四个独立的端口公开;配置 WS-Security 之后就会使用这些端口。然而,对于不安全的服务来说,所有的端口都是相类似的。在为 AccountService 配置 WS-Security 时会讨论这些端口。

我们先来安装 AccountService 和它的客户端。

安装和运行不安全的服务

要安全和测试不安全的 AccountService,您需要执行以下的操作:

下载 WSS-Sample.zip 文件并将其解压到一个临时文件夹中。

使用 WebSphere 管理控制台来安装企业应用程序 AccountService(即 SomeBankService.ear 文件)。可在 code/service 目录下安装。请确保选择的是缺省的选项,并在安装后保存配置。

使用控制台来启动企业应用程序。

打开一个浏览器,访问 http://localhost:9080/SomeBankService/services/SomeBankPort 来测试服务是否可用 。如果您得到消息“And now ... Some Services”,就表明您已经成功地配置了 SomeBank AccountService。

您还可以访问 http://localhost:9080/SomeBankService/services/SomeBankPort?WSDL 来检查 AccountService WSDL 是否可用。该 WSDL 必须和附录所示的 WSDL 相类似。

安装和运行不安全的客户端

要安装 AccountService 的客户端,您需要执行以下的操作:

使用 WebSphere 管理控制台来安装 Web 应用程序(即 SomeBankClient.war 文件)。可在 code/client 目录下安装。在安装 WAR 文件时,请确保在 Web 模块中键入 Context Root。请选择缺省值,并在安装后保存配置。

使用控制台启动 Web 应用程序。

打开一个浏览器,访问 http://localhost:9080/<context-root 来测试一下客户端是否正确安装。

您将会看到图 2 所示的屏幕。

图 2. AccountService 客户端

客户端的缺省选择是可用的,可以用它们来测试刚刚安装的 AccountService。单击 Submit,您将会看到如图 3 所示的结果页面。

图 3. 客户端结果页面

现在我们已经成功地安装了服务和客户端,现在让我们回顾一下客户端的输入选项:

Account ID and Account Type: 这些是虚构的输入,因为服务响应是固定的。但是它们也是重要的,因为在您使用 tcpmon 来监控消息时您将会看到它们。

Message Encryption: 在配置 WS-Security 之后打开线路中的消息的 XML 加密,从而提供消息的机密性。

Message Signing:在配置 WS-Security 之后打开线路中的消息的 XML 数字签名,从而提供消息的完整性。

Service Port:指向基于 HTTP 的端口,在这一端口中服务是可用的。您可以使用这一选项来指向一个 tcpmon 代理端口(将在下面讨论),以便观察 Web 服务请求和响应消息。

Transport Protocol:用于选择是否使用 SSL。如果选中 HTTPS,则客户端就会被局限于使用 WebSphere 内部 SSL 端口 9443。显然,如果这样选择的话,tcpmon 就不能够在线路中观察消息了。

因此,同时使用 MLS 和 TLS 来配置安全性选项时会有八种组合,由以下选项构成:

XML 加密 [启用/禁用]

数字签名 [启用/禁用]

SSL [启用/禁用]。

这使得客户端具有足够多的选择来观察 WS-Security 机制。

使用 tcpmon 来观察消息

tcpmon 是 WebSphere Application Server V5.0.2 附带的一个实体。通过代理端口,tcpmon 可以用于查看和检查 SOAP 消息(请求和响应)。

要配置 tcpmon 以便在不安全的场景中监控消息,您需要执行以下的操作:

检查 <WAS_HOME/bin 目录中是否有一个 tcpmon.bat 文件。如果有,则直接执行步骤 3。

将清单 1 复制和粘贴到一个文件中,从而创建 tcpmon.bat 文件。

清单 1. tcpmon.bat 的源代码

@REM Copyright IBM Corp. 2002 ,2003

@setlocal

@echo off

SET CONSOLE_ENCODING=-Dws.output.encoding=console

call "%~dp0setupCmdLine.bat"

"%JAVA_HOME%\bin\java" %CONSOLE_ENCODING% "-

Dws.ext.dirs=%WAS_EXT_DIRS%;%WAS_USER_DIRS%" -classpath

"%WAS_HOME%"\lib\webservices.jar;"%WAS_CLASSPATH%";"%CLASSPATH%"

com.ibm.ws.bootstrap.WSLauncher com.ibm.ws.webservices.engine.utils.tcpmon

@endlocal

运行 tcpmon.bat 程序,您将会看到图 4 所示的屏幕。

图 4. Tcpmon 管理窗口

在 Listen Port # 字段中键入可用的端口(例如,9999)。

在 Target Hostname 字段中键入 localhost。

在 Target Port # 字段中键入 9080。

单击 Add,这样就会显示一个面板,该面板监听端口 9999 并将请求转发给 localhost:9080。

现在,请切换到显示 AccountService 客户端的浏览器,在 Service Port 字段中键入端口 9999。单击 Submit。

Account Service 客户端具有如上所述的行为。在 tcpmon 面板中,请注意请求(上面板)和响应(下面板)消息,如图 5 所示。

图 5. Tcpmon 显示截获的消息

请仔细观察这些消息,特别是 SOAP 头部和主体。找出请求的 SOAP 主体,

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有