Windows Communication Foundation 安全性概述

Windows Communication Foundation(WCF)是基于 SOAP 消息的分布式编程平台,保护客户端和服务之间的消息对于保护数据至关重要。 WCF 提供通用且可互作的平台,用于基于现有安全基础结构和 SOAP 消息的已识别安全标准交换安全消息。

如果已使用 HTTPS、Windows 集成安全性或用户名和密码等现有技术构建安全分布式应用程序,则 WCF 使用熟悉的概念对用户进行身份验证。 WCF 不仅与现有安全基础结构集成,还通过使用安全 SOAP 消息将分布式安全性扩展到仅限 Windows 的域之外。 考虑 WCF 是现有安全机制的实现,除了使用现有协议外,还具有将 SOAP 用作协议的主要优势。 例如,标识客户端或服务的凭据(例如用户名和密码或 X.509 证书)具有兼容 XML 的 SOAP 配置文件。 使用这些配置文件,可以利用 XML 数字签名和 XML 加密等开放规范安全地交换消息。 有关规范列表,请参阅 System-Provided 互作性绑定支持的 Web 服务协议

另一个并行是 Windows 平台上的组件对象模型(COM),它可实现安全的分布式应用程序。 COM 具有全面的安全机制,可在组件之间流动安全上下文;此机制强制实施完整性、机密性和身份验证。 但是 COM 不会启用跨平台的安全消息传送,如 WCF。 使用 WCF,可以构建跨 Windows 域跨 Internet 的服务和客户端。 WCF 的可互作消息对于构建动态的业务驱动型服务至关重要,这些服务可帮助你对信息的安全性充满信心。

Windows Communication Foundation 安全优势

WCF 是基于 SOAP 消息的分布式编程平台。 使用 WCF,可以创建充当服务和服务客户端的应用程序,从无限数量的其他服务和客户端创建和处理消息。 在此类分布式应用程序中,消息可以通过节点流向节点、防火墙、Internet 以及通过大量 SOAP 中介。 这引入了各种消息安全威胁。 以下示例说明了 WCF 安全性在实体之间交换消息时有助于缓解的一些常见威胁:

  • 观察网络流量以获取敏感信息。 例如,在在线银行方案中,客户请求将资金从一个帐户转移到另一个帐户。 恶意用户截获消息,并且拥有帐户号和密码,随后会从泄露的帐户执行资金转移。

  • 欺诈性实体在客户端未发觉的情况下起服务的作用。 在此方案中,该恶意用户伪装成联机服务,并截获来自客户端的消息以获取敏感信息。 然后,流氓使用被盗的数据从泄露的帐户转移资金。 此攻击也称为 网络钓鱼攻击

  • 更改消息以获取的结果与调用方预期的结果不同。 例如,更改存款的帐号,使资金能够转到恶意帐户。

  • 黑客重放,恶意黑客重放同一采购订单。 例如,在线书店接收数百个订单,并将书籍发送给尚未订购他们的客户。

  • 服务无法对客户端进行身份验证。 在这种情况下,服务无法确保相应的人员执行事务。

总之,传输安全性提供以下保证:

  • 服务终结点(受访者)身份验证。

  • 客户端主体(发起方)身份验证。

  • 消息完整性。

  • 消息保密性。

  • 重放检测。

与现有安全基础结构集成

通常,Web 服务部署具有现有的安全解决方案,例如安全套接字层(SSL)或 Kerberos 协议。 有些人利用已部署的安全基础结构,例如使用 Active Directory 的 Windows 域。 在评估和采用较新的技术时,通常需要与这些现有技术集成。

WCF 安全性与现有的传输安全模型集成,并可以根据 SOAP 消息安全性利用现有基础结构来使用较新的传输安全模型。

与现有身份验证模型集成

任何通信安全模型的重要组成部分是能够识别和验证通信中的实体。 通信中的这些实体使用“数字标识”或凭据向通信对等方进行身份验证。 随着分布式通信平台的发展,实现了各种凭据身份验证和相关安全模型。 例如,在 Internet 上,使用用户名和密码来标识用户是常见的。 在 Intranet 上,使用 Kerberos 域控制器备份用户和服务身份验证变得很常见。 在某些情况下,例如在两个业务合作伙伴之间,证书可用于对合作伙伴进行相互身份验证。

因此,在 Web 服务世界中,同一服务可能向内部企业客户以及外部合作伙伴或 Internet 客户公开,因此基础结构必须提供与这些现有安全身份验证模型的集成。 WCF 安全性支持各种凭据类型(身份验证模型),包括:

  • 匿名呼叫者。

  • 用户名客户端凭据。

  • 证书客户端凭据。

  • Windows (Kerberos 协议和 NT LanMan [NTLM])。

标准和互作性

在具有大型现有部署的世界里,同质性很少见。 分布式计算/通信平台需要与不同供应商提供的技术进行互作。 同样,安全性也必须可互作。

为了启用可互作的安全系统,活跃在 Web 服务行业的公司已经编写了各种标准。 具体而言,提出了一些值得注意的标准:WS-Security:SOAP 消息安全(由 OASIS 标准机构接受,以前称为 WS-Security)、WS-Trust、WS-SecureConversation 和 WS-SecurityPolicy。

WCF 支持各种互作性方案。 该 BasicHttpBinding 类以基本安全配置文件(BSP)为目标,该 WSHttpBinding 类以最新的安全标准为目标,例如 WS-Security 1.1 和 WS-SecureConversation。 通过遵循这些标准,WCF 安全性可以与托管在除 Microsoft Windows 以外的操作系统和平台上的 Web 服务进行互操作和集成。

WCF 安全功能领域

WCF 安全性分为三个功能区域:传输安全性、访问控制和审核。 以下部分简要讨论了这些领域,并提供详细信息的链接。

传输安全性

传输安全性包括三个主要安全功能:完整性、机密性和身份验证。 完整性 是检测消息是否已被篡改的功能。 保密 性是让除预期收件人以外的任何人无法读出邮件的功能;这是通过加密实现的。 身份验证 是验证已声明标识的功能。 这三个函数共同有助于确保消息从一个点安全到达另一个点。

传输和消息安全模式

两个主要机制用于在 WCF 中实现传输安全性: 传输 安全模式和 消息 安全模式。

  • 传输安全模式 使用传输级别协议(如 HTTPS)来实现传输安全性。 传输模式具有广泛采用的优势,在许多平台上可用,计算复杂性较低。 但是,它具有仅从点到点保护消息的缺点。

  • 另一方面,消息安全模式使用 WS-Security(和其他规范)来实现传输安全性。 由于消息安全性直接应用于 SOAP 消息,并且包含在 SOAP 信封中,以及应用程序数据,因此它的优势是传输协议无关、更具可扩展性,并确保端到端安全性(与点到点):它的缺点是比传输安全模式慢几次,因为它必须处理 SOAP 消息的 XML 性质。

有关这些差异的详细信息,请参阅 保护服务和客户端

第三种安全模式同时使用上述两种模式,并带来两者的优势。 此模式被称为 TransportWithMessageCredential. 在此模式下,消息安全性用于对客户端进行身份验证,传输安全性用于对服务器进行身份验证并提供消息保密性和完整性。 为此, TransportWithMessageCredential 安全模式几乎与传输安全模式一样快,并且以与消息安全性相同的方式提供客户端身份验证扩展性。 但是,与消息安全模式不同,它不提供完整的端到端安全性。

访问控制

访问控制 也称为授权。 授权 允许不同的用户具有查看数据的不同权限。 例如,由于公司的人力资源文件包含敏感的员工数据,因此仅允许经理查看员工数据。 此外,经理只能查看其直接报表的数据。 在这种情况下,访问控制基于角色(“经理”)以及经理的特定标识(以防止一位经理查看另一名经理的员工记录)。

在 WCF 中,访问控制功能通过与公共语言运行时 (CLR) PrincipalPermissionAttribute 集成以及一组称为 标识模型的 API 提供。 有关访问控制和基于声明的授权的详细信息,请参阅 “扩展安全性”。

审计

审核 是将安全事件记录到 Windows 事件日志。 可以记录与安全相关的事件,例如身份验证失败(或成功)。 有关详细信息,请参阅 审核。 有关编程详细信息,请参阅 “如何:审核安全事件”。

另请参阅