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 事件日志。 可以记录与安全相关的事件,例如身份验证失败(或成功)。 有关详细信息,请参阅 审核。 有关编程详细信息,请参阅 “如何:审核安全事件”。