WCF传输与消息

时间:2011-04-15 06:50:07

标签: c# wcf wcf-security

我正在阅读有关WCF安全实现的内容,并发现有两种类型的安全性:     Transport Mode and Message Mode (or both)

如果我使用HTTPS进行传输模式,如果我还使用了Message安全性,它会更安全吗?我问这个是因为我理解的内容如下:

https使用加密邮件的SSL协议......那么我为什么要添加Message Security并加密SSL加密邮件?或者我误解了什么?

4 个答案:

答案 0 :(得分:86)

WCF中的安全性实际上是consists of several features。这两者之间的区别在于如何对消息进行签名和加密。

传输安全性仅提供点对点通道安全性。这意味着HTTPS仅在客户端和服务器之间建立安全通道。但是,如果此服务器只是负载均衡器或反向代理服务器,则它可以直接访问消息内容。

消息安全性提供端到端通道安全性。这意味着安全性是传输数据的一部分,只有预期的目标才能解密数据(负载均衡器或代理只能看到加密的消息)。在大多数情况下,消息安全性也使用证书来提供加密和签名,但它通常较慢,因为传输安全性可以使用硬件加速。

在高级方案中,可以组合这些方法。例如,您可以通过HTTPS保护与负载均衡器的通信,因为您在负载均衡器之后信任您的内部网络,但同时您可以对消息进行签名(消息安全性),以便您可以证明它未被更改。

这两者之间的另一个区别是传输安全性与单个传输协议有关,而消息安全性与传输协议无关。

消息安全性基于可互操作的协议(但请注意,并非WCF中的每个配置都可以互操作)。 WCF至少部分支持这些协议:

  • WS-Security 1.0和1.1 - 加密,签名,令牌传输,时间戳等的基本规则。
  • UserName令牌配置文件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堆栈中不可用)以进行服务凭证交换。

答案 1 :(得分:5)

link概述了使用或不使用Message安全性的原因。

基本上,除非无法使用,否则首选传输安全性。

链接的摘录:

  

运输级别的优点和缺点   安全

     

运输安全有以下几点   优点:

     

不要求   沟通各方了解   XML级安全性概念。这个可以   改善互操作性   例如,使用HTTPS进行保护时   沟通。

     

一般性能提升。

     

可以使用硬件加速器。

     

可以进行流式传输。

     

运输安全有以下几点   缺点:

     

仅限跳到跳。

     

有限且不可扩展的一套   证书。

     

运输依赖性。

     

消息级别的缺点   安全

     

邮件安全性如下   缺点:

     

性能

     

无法使用消息流。

     

需要实现XML级别   安全机制和支持   WS-Security规范。这有可能   影响互操作性。

答案 2 :(得分:0)

在某些情况下,您可能无法进行传输级加密,从而“回退”到消息级加密,这比传输级安全性稍微安全一些。

两者都会更加安全,当然。但是,如果您具有良好的传输级安全性,那就有点过分了。

答案 3 :(得分:0)

我想说在大多数情况下它应该足以满足其中一种。如果您可以使用优先考虑的传输级别安全性,因为它会加密整个通信,而不仅仅是消息内容。