日期:2014-04-30  浏览次数:22628 次

    当我们谈及 XML Web Service 时,人们最关怀的问题就是其安全性。

  XML Web Service 安全吗?

  鉴于安全性涉及诸多方面(例如身份验证和授权、数据隐私和完整性等),以及 SOAP 规范中基本没有提及安全性这一理想,我们不难理解人们为什么认为答案能否定的。但是,请不要低估了 Microsoft? XML Web Service。如今,您可以采取许多措施来创建安全的 XML Web Service。

  要处理 XML Web Service 的安全性问题,我们需求考虑以下问题:

  要达到什么样的目的?- 仅允许授权用户访问 XML Web Service;禁止他人未经授权擅自查看音讯等。
如何达到预期效果?- 网络、传输层、OS、服务或使用。

  处理方案中需求什么级别的互操作性?- 局部或全局。

  那么,我们如何确保当今 XML Web Service 的安全呢?答案就是:先回答上述问题,然后使用保护任何其他 Web 使用程序时所使用的相反技术,即:

  保护连接安全

  对交互操作进行身份验证和授权

  正如您下面将要了解到的,这些技术提供了多种选择,您可以将这些选择结合起来以获得额外的效果。例如,可以将防火墙与 XML Web Service 一同使用,从而依据客户端的身份以及为他们所建立的相应规则来限制对某些功用(方法)的访问。

  让我们先来回顾一下保护现有基础结构的各种选择,了解它们的功用。

  保护基础结构的安全

  一个安全的 XML Web Service 的核心是安全基础结构。Microsoft 提供了广泛的技术,如果把这些技术与总体安全保护计划结合起来,企业就可以无效地保护其 IT 结构的安全。正确实施的规划过程包括:

  详细了解潜在的环境危险(例如病毒、黑客和自然灾祸)。

  对与危险有关的安全漏洞的后果进行事后分析并制定对策。

  在这种理解和分析的基础上,创建一个精心规划的实现策略,将安全保护措施使用到企业网络的各个方面。

  保护连接安全

  保护 XML Web Service 安全的最简单的一种方法就是确保 XML Web Service 客户端与服务器之间的连接安全。依据网络的范围和交互操作的活动配置文件,我们可以通过多种技术来达到这一目的。最流行也最广泛使用的三种技术为:基于防火墙的规则、安全套接字层 (SSL) 和虚拟公用网络 (VPN)。

  如果您确切知道哪些计算机需求访问您的 XML Web Service,则可以使用防火墙规则将访问限制在已知 IP 地址的计算机范围内。如果需求限制对公用网络(例如公司的 LAN/WAN)中的计算机的访问,并且不用担心将音讯内容保留为秘密(加密),那么这种技术非常有用。防火墙(例如 Microsoft Internet Security and Acceleration [ISA] Server)可以提供先进的基于策略的规则,这些规则可以依据客户端的原始位置或标识,对不同的客户端提供不同的限制。当不同的客户端访问相反 XML Web Service 上的不同功用(方法)时,这种技术很有用。

  安全套接字层可用于在非托管网络(例如 Internet)上建立安全连接。SSL 可以对客户端和服务器之间发送的音讯进行加密和解密。通过加密数据,您可以防止音讯在传送过程中被读取。SSL 先对客户端的音讯进行加密,然后将其传送到服务器。服务器接收到音讯后,SSL 将对其进行解密并验证音讯能否来自正确的发送者(此过程称为身份验证)。服务器或者客户端和服务器可能具有证书,这些证书用作身份验证过程的一部分在连接加密的顶层提供身份验证功用。虽然 SSL 是创建安全通信的一种非常无效的方法,但该当考虑其功用成本。Microsoft XML Web Service 既支持客户端中的集成 SSL,也支持服务器中的集成 SSL。

  虚拟公用网络是公用网络的扩展,它可以连接共享网络或公共网络(如 Internet)。VPN 使您可以在两台安全连接的计算机之间发送数据。VPN 与 SSL 类似,但 VPN 是一个长期的点对点连接。这使 VPN 可以高效安全地使用于 XML Web Service,但要求建立长期的连接并保持运转才能达到这种效果。

  身份验证和授权

  身份验证:身份验证就是验证标识的过程,即验证某人(或某物)与其声称的人(或物)能否分歧。该人或物称为“当事者”。身份验证要求证据,称为“凭据”。例如,客户端使用程序可以将密码用作凭据。如果客户端使用程序提供正确的凭据,则认为它与所声称的人或物分歧。

  授权:完成对当事者标识的身份验证后,便可以进行授权了。服务器通过检查有关当事者的某些访问控制信息(例如访问控制列表 [ACL])来确定访问权限。客户端可能具有不同的访问级别。例如,某些客户端可以完全访问 XML Web Service;而其他客户端则只能访问某些操作。某些客户端可以完全访问所无数据,某些客户端只能访问数据的子集,而某些客户端只能进行只读访问。

  在 XML Web Service 中实现身份验证的一个简单而直接的方法是,利用信息交换所使用的协议的身份验证功用。对于大多数 XML Web Service 来说,这意味着利用 HTTP 的身份验证功用。将 Microsoft Internet Information Server (IIS) 和 ISA 服务器与 Windows 2000 服务器配合使用,能为 HTTP 提供多种身份验证机制的集成支持。

  基本身份验证 - 使用客户端的非安全或半安全标识,由于用户名和密码是以 base64 编码文本发送的,而该文本易于解码。如果凭据能与无效的用户帐户婚配,IIS 将授予客户端访问 XML Web Service 的权限。
SSL 上的基本身份验证 - 与基本身份验证相反,独一区别在于通信通道被加密,从而保护了用户名和密码。对 Internet 方案而言,这是一个很好的选择,但使用 SSL 会对功用产生很大影响。

  简要身份验证 - 使用散列以安全方式传送客户端凭据。但是,这种方法可能不会遭到用于构建 XML Web Service 客户端的开发人员工具的广泛支持。如果凭据能与无效的用户帐户婚配,IIS 将授予客户端访问 XML Web Service 的权限。

  集成 Windows 身份验证 - 次要用于 Intranet 方案。使用 NTLM 或 Kerberos。客户端必须属于服务器所在的域,或者属于服务器域的托管域。如果凭据能与无效的用户帐户婚配,IIS 将授予客户端访问 XML Web Service 的权限。

  SSL 上的客户端证书 - 要求每个客户端获取一个证书。证书被映射至用户帐户,IIS 将使用这些证书来授权对 XML Web Service 的访问。虽然目前数字证书尚未广泛使用,但这仍然不失为 Internet 方案的一种可行选择。这种方法可能不会遭到用于构建 XML Web Service 客户端的开发人员工具的广泛支持。只能通过 SSL 连接使用这种方法,因此功用可能是一个需求考虑的问题。

  从 XML Web Service 实施者的角度来看,使用上述任何一种身份验证机制都有一个好处,即,无需在 XML Web Service 中进行代码更改,由于在调用 XML Web Service 之前,IIS/ISA 服务器将执行所有的身份验证和 ACL 授权检查。但是,在执行客户端时,还需求完成其他一些任务。客户端使用程序需求呼应服务器的身份验证凭据请求。

  在 XML Web Service 中进行身份验证的其他方法包括:使用第三方服务(例如 Microsoft? .NET Passport 中的服务),使用 Microsoft ASP.NET 的会话功用,或者创建自定义身份验证方法。

  下一步:互操作性

  您可能会发现,如今,用于 Web 使用程序安全保护的标准技术可以单独使用或组合使用,以建立安全的 XML Web Service。这些技术建立在丰富的经验基础之上,并且非常无效。不过,它们并没有在 XML Web Service 体系结构中提供集成处理方案。随着 XML Web Service 方案日益复杂(例如跨托管边界以及分布于多个系统或企业中),XML Web Service 实施者需求创建无效但并不提供普遍互操作性的自定义处理方案。

  为满足这些需求并加强 XML Web Service 的互操作性,Microsoft 及其合作伙伴正在制定一套安全规范。该规范建立于 SOAP 规范的扩展性机制之上,提供集成至 XML Web Service 结构中的加强型安全保护功用