摘要: Microsoft SOAP Toolkit 2.0 提供一个灵活的框架,可以为各种 Intranet 和 Internet 解决方案构建可伸缩的 Web 服务。在这两种方案中,安全性都是建立可靠服务的重要因素。SOAP Toolkit 2.0 支持基于 IIS 安全基础结构的 Internet 安全性。本文介绍了如何使用 Microsoft SOAP Toolkit 2.0 建立安全解决方案。
简介
与任何分布式协议相同,成功的 SOAP 应用程序的关键在于获得安全性权限。SOAP 标准不指定任何安全性机制,而是将安全处理委派给传输层。对 SOAP Toolkit 2.0 而言,传输层是 HTTP。在 HTTP 上运行的 SOAP 基本上是一个 Web 应用程序,与其它在 IIS 上运行的 ASP 或 ISAPI 应用程序很相似。SOAP 的身份验证、授权和加密机制与您通常使用的 Web 应用程序完全相同。如果熟悉 Web 安全性,也就了解了 SOAP 安全性。如果对 Web 应用程序不够熟悉,本文将为您提供充分的入门知识背景。每个主题都介绍的非常详细。如果需要更详细的信息,请参见 MSDN Library 或由 Michael Howard、Marc Levy 和 Richard Waymire 编著的《设计 Microsoft Windows 2000 基于 Web 的安全应用程序》。
sflj www.it55.com kg^&fgd
重要规则
根据《设计 Microsoft Windows 2000 基于 Web 的
安全应用程序》中阐述的观点,我们首先从概述建立
安全 Web
服务应遵守的重要规则开始。
安全 Web
服务可归纳为以下七类:
身份验证
授权
审核
保密
完整性
可用性
认可
身份验证是一个实体(也称为主题)验证另一个实体是否符合它所声称的身份的过程。SOAP Toolkit 2.0 支持以下身份验证方法:
基本
摘要式
Kerberos
Windows NTLM
SSL 客户端证书
基于 SOAP 头的身份验证
代理身份验证
本文档介绍如何配置
服务器端和客户端使用上述身份验证方法。
www.it55.com 授权是为经过身份验证的用户提供资源访问权限的机制。只要使用 SOAP Toolkit 建立的 Web
服务基于 IIS,这些
服务就可以利用 IIS 支持的授权机制。本文档也将讲述用户应注意的一些问题。
审核的目的是为了收集有关对 Web
服务的成功和失败请求的信息。可以使用 IIS 审核功能和 SOAP Toolkit 跟踪功能实现这一目的。本文档没有介绍这方面的内容,您可以参考 IIS 文档、netmon 日志和 SoapServer 对象的 SOAP Toolkit 帮助。
保密是指确保攻击者看不到客户端与
服务器之间的通信信息。完整性是指保护数据不被删除或更改(不管是恶意还是不慎)的能力。为了实现保密和完整性,SOAP Toolkit 允许使用
安全套接字层 (SSL) 加密数据。本文档将介绍如何启用 IIS 上的 SSL 支持以及如何将其用于客户端。
可用性确保不会拒绝合法用户对请求的资源的访问。可用性技术的示例包括负载平衡以及硬件和软件的故障转移。SOAP Toolkit 已成功通过了 Microsoft Application Center 负载平衡软件的测试。
it55.com
认可是一种技术,为发生的操作提供证据以防止客户端在事务处理中欺诈或否认。SOAP Toolkit 采用 IIS 提供的认可功能。本文档不对认可进行介绍。
身份验证
本节介绍了 SOAP Toolkit 支持的身份验证方法,包括其优点和缺点,以及如何对其进行设置。还介绍了 SOAP Toolkit 在支持平台上的已知局限性,以及
服务器具有多个可用身份验证方案时 SOAP Toolkit HTTP 连接器的行为。
身份验证握手是如何进行的?每个身份验证握手都是如下开始:
客户端发出页面请求。
服务器返回状态 401“拒绝访问”和一组 HTTP 头。
WWW 验证它支持的每一个身份验证方法。
如何使用 SoapClient 验证自身?如果 Web
服务要求身份验证(基本、摘要式、NTLM 或 Kerberos),需要为 SoapClient 提供用户名和密码,以将其传递到 Web
服务。也可以使用 SoapClient.ConnectorProperty 包完成此操作:
dim SoapClient
set SoapClient = createobject("MSSoap.SoapClient")
www.it55.com
SoapClient.mssoapinit("http://your-server/webservice/service.wsdl ")
SoapClient.ConnectorProperty("AuthName") = "username"
SoapClient.ConnectorProperty("AuthPassword") = "userpwd"
Quote = SoapClient.GetQuote()
注意:使用 SOAP Toolkit 2.0 时,只有在调用远程方法时才必须设置 SoapClient 上的 ConnectorProperties。
如果包含
服务描述的 wsdl 文件所在的虚拟目录也要求身份验证,可以在 URL 内传递用户名和密码:
SoapClient.mssoapinit
("http:// username:userpwd@your-server/webservice/service.wsdl ")
人们往往错误地认为将用户名和密码放入 URL 是不
安全的。事实并非如此。在发送 HTTP 请求之前,客户端 HTTP 代码将分析 URL,移出用户名和密码,并在身份验证握手时使用此用户名和密码。事实上,代码:
SoapClient.ConnectorProperty("AuthName") = "username"
SoapClient.ConnectorProperty("AuthPassword") = "userpwd"
Quote = SoapClient.GetQuote()
与下列代码的功能相同(假设 WSDL 文件 service.wsdl 指向自身):
IT资讯之家 www.it55.com SoapClient.ConnectorProperty("EndPointURL")=
"http:// username:userpwd@your-server/webservice/service.wsdl"
Quote = SoapClient.GetQuote()
虚拟目录设置如何要求身份验证?若要在
服务器上更改特定虚拟目录的身份验证设置,请执行下列操作:
在 IIS 4.0 和 IIS 5.0 上,用鼠标右键单击虚拟目录,单击“属性”,然后单击“目录
安全性”选项卡。
在“匿名访问和身份验证控制”之下,单击“编辑”。将出现以下两个选项:
匿名访问
匿名访问不是身份验证方法。Windows 2000 和 NT4 要求用户在访问任何资源之前验证自身,这种情况下,IIS 使用一个特殊帐户作为匿名 Web 用户(默认为 IUSR_machinename)。可以单击“匿名访问编辑”按钮更改此默认匿名 Web 用户的帐户或其密码。
注意:小心不要将特权帐户用作匿名 Web 用户帐户。若要将虚拟目录设置为要求身份验证,需要清除“匿名访问”标记。
(编辑:IT资讯之家 www.it55.com)