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

WCF安全性:TransportWithMessageCredential和消息安全模式之间的区别,wcf,security,encryption,wcf-security,Wcf,Security,Encryption,Wcf Security,我想知道TransportWithMessageCredential与Message在WCF安全性方面的区别 我知道的是: 传输安全性:用于在两个端点之间提供点对点安全性 消息安全性:它提供端到端安全性。由于消息安全性直接对消息进行加密和签名,因此使用中介不会破坏安全性 如果我们使用TransportWithMessageCredential模式,SOAP消息(头和体)是否加密 我关心的是,我希望在WCF服务器和我的WinForms客户端之间对应用程序数据进行加密 如果我们使用Transport

我想知道
TransportWithMessageCredential
Message
在WCF安全性方面的区别

我知道的是:

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

消息安全性:它提供端到端安全性。由于消息安全性直接对消息进行加密和签名,因此使用中介不会破坏安全性

如果我们使用
TransportWithMessageCredential
模式,SOAP消息(头和体)是否加密

我关心的是,我希望在WCF服务器和我的WinForms客户端之间对应用程序数据进行加密

如果我们使用TransportWithMessageCredentials模式,是SOAP消息吗( 头和体)加密

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

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

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

根据评论更新

您说“当SOAP消息离开客户端进行服务时 是加密的,那么它应该是终端安全的。为什么它只是 点对点

传输安全性是点对点的,因为消息在离开一个端点时会被加密,直到到达安全传输的另一个端点,然后在该端点处对消息进行解密。在客户端和服务器直接相互通信的部署中,这将提供全程加密。然而r、 如果您的服务端点要将该消息转发到预期的收件人,那么您的消息将不再保证从此点开始加密

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


我可以用MessageCredential提供安全点吗 -点对点和消息级安全性提供端到端安全性。那么为什么WCF安全指南建议使用 TransportWithMessageCredential在使用WCF时使用用户名 在internet上使用Windows窗体客户端

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


如果消息正文未使用TransportWithMessageCredential加密 那为什么微软说TransportWithMessageCredential是 传输和消息安全的结合


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

可能的重复我不认为它的重复。我需要知道w TransportWithMessageCredentials与message之间的不同。您指的是TransportWithMessageCredentials与message。我需要知道的是,如果我们使用TransportWithMessageCredentials模式,是SOAP消息(头和体)加密?我关心的是,我希望在WCF服务器和Windows窗体客户端之间对应用程序数据进行加密。您说过“当SOAP消息离开客户端进行服务加密时”,那么它应该是端到端安全的。为什么它只是点对点。我可以总结一下TransportWithMessageCredential提供点对点安全性,而消息级安全性提供端对端安全性。那么,为什么WCF安全指南建议在internet上使用Windows窗体客户端的WCF时使用带有用户名的TransportWithMessageCredential。我有一个客户端(Win form app)可以通过internet连接WCF。我希望我的客户端SOAP消息应该加密并发送到Servre,以便任何人都不能篡改SOAP消息正文中的我的应用程序数据。如果消息正文没有使用TransportWithMessageCredential加密,那么为什么Microsoft说TransportWithMessageCredential是传输和消息安全的组合