WCF安全性:TransportWithMessageCredential和消息安全模式之间的区别

时间:2015-01-28 07:28:52

标签: wcf security encryption wcf-security

我想了解TransportWithMessageCredential Vs Message在WCF安全方面的区别。

我所知道的是:

传输安全性用于在两个端点之间提供点对点安全性。

邮件安全性:它提供端到端的安全性。因为消息安全性直接加密和签署消息,所以拥有中介不会破坏安全性。

如果我们使用TransportWithMessageCredential模式,SOAP消息(Header和Body)是否已加密?

我担心的是我希望在WCF服务器和WinForms客户端之间加密应用程序数据。

1 个答案:

答案 0 :(得分:8)

  

如果我们使用TransportWithMessageCredentials模式,则是SOAP消息(   标题和正文)加密了?

是的,因为在TransportWithMessageCredential安全模式下,它是传输安全性,它为通过网络传输的消息提供机密性和完整性保护。在这种情况下,传输安全性还提供服务认证。例如,使用HTTP,安全套接字层(SSL)用于加密和签名通过安全HTTP(HTTPS)发送的数据包的内容。

使用TransportWithMessageCredential安全模式,客户端身份验证通过SOAP消息安全性提供,其中客户端凭据直接放在消息中。

当SOAP消息离开客户端进行服务时,它会被加密。但是,与传输安全性一样,它在两个端点(服务和客户端)之间提供点对点(端到端)安全性。因此,如果客户端和服务之间存在中间系统,则每个中间点必须通过新的安全连接转发消息。

按评论更新

  

你说“当SOAP消息离开客户端进行服务时   加密'然后它应该是结束 - 安全。为什么它只是   点到点。

传输安全性是点对点的,因为消息在离开一个端点时会被加密,并且一直到达安全传输的另一个端点,然后解密该消息。在客户端和服务器直接相互通信的部署中,这会在整个过程中提供加密。但是,如果您的服务端点要将该邮件转发到目标收件人,则不再保证您的邮件从该点开始加密。

邮件安全性直接对邮件进行加密和签名,以便只有预期的收件人才能解密并读取邮件的实际内容。因此,发件人和收件人之间保证安全,而不仅仅是端点之间。因此,消息安全性提供了端到端的安全性。

  

我可以断定TransportWithMessageCredential提供安全点   -to-point和消息级安全性提供端到端安全性。那么为什么WCF安全指南建议使用   使用UserName的TransportWithMessageCredential当我们使用WCF时   在Windows中使用Windows窗体客户端。

是的,这是正确的。 TransportWithMessageCredential安全性提供点对点,Message安全性提供端到端安全性。 WCF安全指南建议将客户端凭据设置为UserName,因为这将用于对客户端进行身份验证。在UserName的情况下,我们将用户名和密码对直接放在SOAP消息中。除非客户端提供某种凭证(例如UserNameCertificate)来对服务进行身份验证,否则您将拥有匿名客户端。匿名客户端意味着任何人都可以访问您的服务,因为客户端未经过身份验证。

  

如果邮件正文未使用TransportWithMessageCredential加密   那么为什么微软称TransportWithMessageCredential是一个   传输和消息安全性的组合

与我原来的答案一样:SOAP消息由传输层加密和签名(例如HTTPS)。 TransportWithMessageCredential是传输和消息安全性的组合,因为传输安全性对消息进行加密和签名以及向客户端验证服务,并使用消息安全性来验证服务的客户端。