WCF 传输与消息
Posted
技术标签:
【中文标题】WCF 传输与消息【英文标题】:WCF Transport vs Message 【发布时间】:2011-08-06 02:35:51 【问题描述】:我正在阅读有关 WCF 安全实现的信息,发现有两种安全类型:
Transport Mode and Message Mode (or both)
如果我使用 HTTPS 作为传输模式,如果我也使用消息安全性会更安全吗?我问这个是因为我的理解如下:
https 使用 SSL 协议来加密消息...那我为什么要添加 Message Security 并加密 SSL 加密消息?还是我误会了?
【问题讨论】:
【参考方案1】:WCF 中的安全性实际上是consists of several features。这两者之间的区别在于消息是如何签名和加密的。
传输安全仅提供点对点通道安全。这意味着HTTPS只在客户端和暴露给客户端的服务器之间建立安全通道。但是如果这个服务器只是一个负载平衡器或反向代理服务器,它可以直接访问消息的内容。
消息安全提供端到端的通道安全。这意味着安全性是传输数据的一部分,只有预期的目的地才能解密数据(负载均衡器或代理只能看到加密的消息)。大多数情况下,消息安全也使用证书来提供加密和签名,但通常速度较慢,因为传输安全可以使用硬件加速。
在高级场景中,这些方法可以组合使用。例如,您可以通过 HTTPS 保护与负载均衡器的通信,因为您在负载均衡器之后信任您的内部网络,但同时您可以对消息进行签名(消息安全),这样您就可以证明它没有被更改。
这两者之间的另一个区别是传输安全性与单一传输协议相关,而消息安全性独立于传输协议。
消息安全基于可互操作的协议(但请注意,并非 WCF 中的每个配置都是可互操作的)。 WCF 至少部分支持这些协议:
WS-Security 1.0 和 1.1 - 加密、签名、令牌传输、时间戳等的基本规则。 用户名令牌配置文件 1.0 - 用于传输用户名和密码的令牌的定义。此规范仅部分实现,因为开箱即用的 WCF 不支持摘要密码,并且需要将此令牌与传输或消息加密一起使用。 X509 令牌配置文件 1.1 - 用于传输证书的令牌定义。 Kerberos 令牌配置文件 1.1 - 用于传输 Kerberos 票证的令牌定义。 SAML 1.1 令牌配置文件 1.0 和 1.1 - 用于联合安全的令牌定义。 SAML 2.0 由 WIF 提供。 WS-SecurityPolicy 1.1 和 1.2 - 支持在 WSDL 中定义安全断言。 WS-SecureConversation 1.3 和 2005 年 2 月 - 支持安全会话,其中仅在第一次调用期间交换凭据,其余通信使用唯一的安全令牌。 WS-Trust 1.3 和 2005 年 2 月 - 为联合方案和安全令牌服务 (STS) 提供支持。WCF 还支持 WS-I Basic Security Profile 1.0,它只是具有规定配置的以前协议的子集。
对于不可互操作的功能,WCF 提供了诸如 Windows 安全或 TLSNego 和 SPNego 之类的功能(两者通常应该是可互操作的,但它们在许多 SOAP 堆栈中不可用)用于服务凭证交换。
【讨论】:
看来你知道很多WCF,也许你可以帮助我解决this的问题,也许它与你提到的X509令牌配置文件有关,我没有检查。 对不起,我很慢,但在理解跳到跳安全性方面仍有问题,如果您使用传输安全性,是否意味着消息仅在客户端和服务器上是安全的?即消息在传输过程中可能被篡改? @Ladislav Mrnka 你能帮我解决一下this线程 消息是否需要 HTTPS 连接?【参考方案2】:link 概述了使用或不使用消息安全的原因。
基本上,除非无法使用,否则传输安全性是首选。
链接摘录:
传输级的优缺点 安全
运输安全有以下几点 优点:
不要求 沟通方明白 XML 级别的安全概念。这个可以 提高互操作性,对于 例如,当 HTTPS 用于保护 交流。
总体上提高了性能。
提供硬件加速器。
流媒体是可能的。
运输安全有以下几点 缺点:
仅限跳到跳。
有限且不可扩展的集合 证书。
依赖于传输。
消息级的缺点 安全
消息安全性有以下几点 缺点:
性能
无法使用消息流。
需要实现 XML 级别 安全机制和支持 WS-安全规范。这有可能 影响互操作性。
【讨论】:
您好!有一点我不明白:您说“基本上,除非无法使用,否则首选传输安全性。” - 该声明的依据是什么?提供的链接并没有说明任何内容。【参考方案3】:在某些情况下,您可能无法进行传输级加密,因此“退回”到消息级加密,这比传输级安全性稍差一些。
当然,两者都做会更安全。但是,当您拥有良好的传输级别安全性时,这有点矫枉过正。
【讨论】:
【参考方案4】:我想说,在大多数情况下,其中一种就足够了。如果您可以使用更可取的传输级别安全性,因为它会加密整个通信,而不仅仅是消息内容。
【讨论】:
以上是关于WCF 传输与消息的主要内容,如果未能解决你的问题,请参考以下文章