我想了解TransportWithMessageCredential
Vs Message
在WCF安全方面的区别。
我所知道的是:
传输安全性用于在两个端点之间提供点对点安全性。
邮件安全性:它提供端到端的安全性。因为消息安全性直接加密和签署消息,所以拥有中介不会破坏安全性。
如果我们使用TransportWithMessageCredential
模式,SOAP消息(Header和Body)是否已加密?
我担心的是我希望在WCF服务器和WinForms客户端之间加密应用程序数据。
答案 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消息中。除非客户端提供某种凭证(例如UserName
或Certificate
)来对服务进行身份验证,否则您将拥有匿名客户端。匿名客户端意味着任何人都可以访问您的服务,因为客户端未经过身份验证。
如果邮件正文未使用TransportWithMessageCredential加密 那么为什么微软称TransportWithMessageCredential是一个 传输和消息安全性的组合
与我原来的答案一样:SOAP消息由传输层加密和签名(例如HTTPS)。 TransportWithMessageCredential
是传输和消息安全性的组合,因为传输安全性对消息进行加密和签名以及向客户端验证服务,并使用消息安全性来验证服务的客户端。