在使用WCF的消息级安全性时,是否需要传输级安全性?

7

我仍在努力理解WCF安全性。

有一个问题我似乎无法掌握……如果使用消息级别安全性,那么整个消息可以被签名/加密。如果是这种情况,是否有必要同时使用消息级别安全性和传输级别安全性?换句话说,如果消息本身是安全的,为什么我需要使用像HTTPS这样的传输安全性呢?

谢谢。


1
还可以在这里看到一个类似的问题:http://stackoverflow.com/questions/4586641/ws-security-and-trasport-security - Eugene Mayevski 'Callback
3个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
7

HTTPS(SSL,TLS)提供点对点安全性。我在我的一个以前的答案中已经解释了这意味着什么。

WCF中的术语安全性有四个组件:

  • 身份验证 - 提交给服务器以识别客户端的凭据
  • 授权 - 选择性地定义哪些操作可以由经过身份验证的客户端执行
  • 机密性 - 加密 - 只有预期的接收者能够解密消息并读取机密数据
  • 完整性 - 签名 - 预期的接收者可以验证消息来自声明的客户端,并且在传输过程中未被修改

授权始终是WCF应用程序本身的一部分。身份验证是WCF应用程序或托管系统的一部分 - 传输协议只能用于传输凭据,而无法验证它们。机密性和完整性是传输协议(传输安全)或WCF应用程序(消息安全)的责任。因此,如果您在消息级别上使用加密和签名,则不需要传输安全。


我同意这个答案的大部分内容,但我不认为说传输安全只能传输凭据而不能验证凭据是正确的。对于一些绑定,当使用Windows凭据时,传输安全会实现一个SSPI握手,它不仅传递凭据,还会将其与接收方的Windows权限进行验证。 - Chris Dickson
@Chris:是的,传输安全是传输协议和操作系统功能的组合。操作系统功能负责执行SSPI握手 - 这绝对不是HTTPS的一部分。 - Ladislav Mrnka

0
如果您使用加密形式的消息级安全性,则不需要同时使用传输级加密。但是,这样做肯定会使您的消息更安全。如果您仅使用消息级安全性来签署发出的消息,则如果您的消息包含敏感信息,还需要使用传输级安全性。 当不使用任何消息级加密时,使用传输级加密非常重要。实际上,例如在使用UsernameToken明文时,WCF要求您使用SSL。

0
据我所记,只有在使用NetMsmqBinding时才能同时使用传输层和消息层安全性。

1
通过自定义绑定,您也可以为基于HTTP的传输执行此操作。 - Ladislav Mrnka
是的,这是正确的。但如果您不拥有整个传输通道,则传输安全性帮助不大。我认为在大多数情况下,消息安全性就足够了。 - Edin Dazdarevic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,