WCF传输与消息
我正在阅读有关WCF安全实现,并发现有两种types的安全性: Transport Mode and Message Mode (or both)
如果我使用HTTPS传输模式,是否更安全,如果我使用消息安全也? 我在问这个,因为我的理解如下:
https使用SSL协议encryption消息…为什么我应该添加消息安全并encryptionSSLencryption消息? 还是我误解的东西?
WCF中的安全性实际上包含几个function 。 这两者之间的区别是消息如何被签名和encryption。
传输安全仅提供点对点的通道安全性。 这意味着HTTPS只在客户端和服务器之间build立安全通道。 但是,如果这个服务器只是一个负载平衡器或反向代理服务器,它可以直接访问消息的内容。
消息安全性提供端到端的信道安全性。 这意味着安全性是传输数据的一部分,只有预期的目标才能解密数据(负载平衡器或代理只能看到encryption的消息)。 在大多数情况下,邮件安全性也使用证书来提供encryption和签名,但通常速度较慢,因为传输安全性可以使用硬件加速。
在高级场景中,这些方法可以结合使用。 例如,您可以与受HTTPS保护的负载均衡器进行通信,因为您在负载均衡器之后信任内部networking,但是同时您可以签署消息(消息安全性),以便certificate它未被更改。
这两者之间的另一个区别是,传输安全性与单一传输协议有关,而消息安全性与传输协议无关。
消息安全性基于可互操作的协议(但请注意,并非WCF中的每个configuration都可以互操作)。 WCF至less部分支持这些协议:
- WS-Security 1.0和1.1 – encryption,签名,令牌传输,时间戳等基本规则
- UserName令牌configuration文件1.0 – 用于传输用户名和密码的令牌定义。 此规范仅部分实现,因为开箱即用的WCF不支持消解的密码,并且需要使用此令牌来传输或消息encryption。
- X509令牌configuration文件1.1 – 用于传输证书的令牌定义。
- Kerberos令牌configuration文件1.1 – 用于传输Kerberos票据的令牌定义。
- SAML 1.1令牌configuration文件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月 – 提供对联合scheme和安全令牌服务(STS)的支持。
WCF还支持WS-I Basic Security Profile 1.0,它只是具有规定configuration的以前协议的子集。
对于不可互操作的function,WCF提供诸如Windows安全性或TLSNego和SPNego(两者应该通常可互操作,但在许多SOAP堆栈中不可用)的function以用于服务凭证交换。
这个链接概述了使用或不使用消息安全的原因。
基本上,运输安全是最好的,除非它不能使用。
摘录来自链接:
运输级安全的利弊
运输安全具有以下优点:
不要求通信双方了解XML级别的安全概念。 这可以提高互操作性,例如,当使用HTTPS来保护通信时。
性能普遍提高。
硬件加速器是可用的。
stream式传输是可能的。
运输安全有以下缺点:
只能跳到跳。
有限的和不可宽恕的一套凭证。
交通运输依赖。
消息级安全的缺点
消息安全性有以下缺点:
性能
不能使用消息stream。
需要实现XML级别的安全机制并支持WS-Security规范。 这可能会影响互操作性。
还有一些情况下,您可能无法进行传输级别的encryption,从而“后退”到消息级别的encryption,而传输级别的安全性只是稍微安全一些。
做这两个将会更安全,当然。 但是当你有良好的传输级别的安全性时,这有点矫枉过正。
我想说的是,在大多数情况下,其中一个就足够了。 如果您可以使用传输级别安全性,那么它将encryption整个通信,而不仅仅是消息内容。