一尘不染

WCF传输与消息

c#

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

如果我将HTTPS用作传输模式,是否还使用了消息安全性,它是否更安全?我问这是因为我的理解如下:

https使用SSL协议对邮件进行加密…因此,为什么要添加Message Security并加密SSL加密的邮件?还是我误会了东西?


阅读 292

收藏
2020-05-19

共1个答案

一尘不染

WCF中的安全性实际上包含几个功能。两者之间的区别在于如何对消息进行签名和加密。

传输安全仅提供点对点通道安全。这意味着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基本安全配置文件1.0,它只是具有规定配置的以前协议的子集。

对于不可互操作的功能,WCF提供了诸如Windows安全性或TLSNego和SPNego之类的功能(两者通常都应可互操作,但在许多SOAP堆栈中不可用)以用于服务凭证交换。

2020-05-19