【问题标题】:Is Transport Level Security Necessary When Using Message Level Security in WCF?在 WCF 中使用消息级别安全性时是否需要传输级别安全性?
【发布时间】:2011-06-17 07:16:05
【问题描述】:

我仍在尝试更好地了解 WCF 安全性。

我似乎无法理解的一个问题是……如果使用消息级别的安全性,则可以对整个消息进行签名/加密。如果是这种情况,同时使用消息级安全性和传输级安全性是否有意义?换句话说,如果消息本身是安全的,为什么我需要使用 HTTPS 之类的东西来保证传输安全?

谢谢。

【问题讨论】:

标签: .net wcf security


【解决方案1】:

HTTPS(SSL、TLS)提供点对点安全。我已经在我的previous answers 之一中解释了它的含义。

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

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

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

【讨论】:

  • 我同意这个答案的大部分内容,但我不认为说传输安全只能传输凭据,而不是验证它们是正确的。对于许多绑定,当使用 Windows 凭据时,传输安全实现 SSPI 握手,它不仅传送凭据,还使用接收方的 Windows 权限验证它们。
  • @Chris:是的,传输安全是传输协议和操作系统特性的结合。操作系统功能负责执行 SSPI 握手 - 它绝对不是 HTTPS 的一部分。
【解决方案2】:

如果您以加密形式使用消息级安全性,那么您应该不需要同时使用传输级加密。但是,这样做肯定会使您的消息更加安全。如果您只使用邮件级别的安全性来签署传出邮件,那么如果您的邮件包含敏感信息,您还需要使用传输级别的安全性。

当不使用消息级加密时,使用传输级安全性很重要。事实上,WCF 要求你在使用 UsernameToken 明文时使用 SSL。

【讨论】:

    【解决方案3】:

    据我所知,使用 NetMsmqBinding 时只能同时使用传输和消息级别的安全性。

    【讨论】:

    • 使用自定义绑定,您还可以为基于 HTTP 的传输执行此操作。
    • 是的,这是真的。但是,如果您不拥有整个传输通道,则传输安全性并没有多大帮助。我想说,在大多数情况下,消息安全性就足够了。
    猜你喜欢
    • 2014-05-22
    • 2010-10-04
    • 2011-08-27
    • 2013-04-05
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多