如果我们使用 TransportWithMessageCredentials 模式,是 SOAP 消息(
Header 和 Body) 是否加密?
是的,因为TransportWithMessageCredential 安全模式是传输安全,它为通过网络传输的消息提供机密性和完整性保护。在这种情况下,传输安全还提供服务身份验证。例如,对于 HTTP,安全套接字层 (SSL) 用于对通过安全 HTTP (HTTPS) 发送的数据包的内容进行加密和签名。
使用TransportWithMessageCredential 安全模式,客户端身份验证通过 SOAP 消息安全性提供,其中客户端凭据直接放在消息中。
当 SOAP 消息离开客户端以获得服务时,它会被加密。但是,与传输安全性一样,它在两个端点(服务和客户端)之间提供点对点(不是端到端)安全性。因此,如果客户端和服务之间存在中间系统,则每个中间点都必须通过新的安全连接转发消息。
按评论更新
您说过“当 SOAP 消息离开客户端以获取服务时,它
是加密的'那么它应该是端到端的安全性。为什么它只是
点对点。
传输安全性是点对点的,因为消息在离开一个端点时被加密,并一直保持到它到达安全传输的另一个端点,然后在该端点对消息进行解密。在客户端和服务器直接相互通信的部署中,这提供了全程加密。但是,如果您的服务端点将该消息转发给预期的收件人,则不再保证您的消息从该点开始被加密。
消息安全直接对消息进行加密和签名,以便只有预期的收件人才能解密和阅读消息的实际内容。因此,发送方和接收方之间的安全性得到保证,而不仅仅是端点之间。因此,消息安全提供端到端的安全性。
我可以总结 TransportWithMessageCredential 提供安全点吗
点对点和消息级安全性提供端到端安全性。那么为什么 WCF 安全指南建议使用
当我们使用 WCF 时,带有 UserName 的 TransportWithMessageCredential
在 Internet 上使用 Windows 窗体客户端。
是的,没错。 TransportWithMessageCredential 安全提供点对点,Message 安全提供端到端安全。 WCF 安全指南建议将客户端凭据设置为UserName,因为这将用于对客户端进行身份验证。在UserName 案例中,我们将用户名和密码对直接放入SOAP 消息中。除非客户端提供某种凭据,例如 UserName 或 Certificate 来向服务验证自己,否则您将拥有一个匿名客户端。匿名客户端意味着任何人都可以访问您的服务,因为客户端没有经过身份验证。
如果邮件正文未使用 TransportWithMessageCredential 加密
那么为什么微软说 TransportWithMessageCredential 是一个
传输和消息安全的结合
与我最初的答案一样:SOAP 消息由传输层(例如 HTTPS)加密和签名。 TransportWithMessageCredential 是传输和消息安全的组合,因为传输安全对消息进行加密和签名以及向客户端验证服务,并且消息安全用于向服务验证客户端。