WCF netTCPBinding

Rem*_*tec 4 wcf wcf-binding wcf-security nettcpbinding

WCF的netTCPBinding是"默认安全".据我了解,这意味着......

  • 呼叫者使用其Windows凭据进行身份验证.
  • 邮件已签名
  • 邮件已加密.

但是,我可以在我的localhost上设置一个非常基本的WCF客户端服务.身份验证将在同一台计算机上运行,​​但签名和加密如何工作?

WCF需要证书来签名和加密消息.如果我没有证书,那么我的服务如何运作?消息如何 - 甚至只是去同一台机器进行签名和加密.

谢谢.

Chr*_*son 5

默认情况下,NetTcpBinding使用传输安全性,并列出您列出的默认特征.

在此上下文中对消息进行签名和加密并不意味着与Message安全性相同.相反,它意味着通过网络传输发送的所有数据包都经过签名和加密.这不依赖于证书.它由安装在发送和接收机器上的操作系统中的安全提供程序完成,通过SSPI(安全支持提供程序接口)调用- 涉及相同的机制,例如,当使用域凭据访问某些资源(如文件)时在网络上的另一台机器上.

在连接上发送任何应用程序数据之前,绑定会在发送方和接收方之间协调SSPI握手,指定Negotiate安全包(这将选择NTLM或Kerberos作为实际安全协议,具体取决于相应主机的功能).作为握手的一部分,安全令牌通过连接进行交换,最终双方的安全提供商将同意会话密钥,用于签署和加密随后的应用程序消息.

  • 几乎 - 实际行为将根据绑定的配置而有所不同 - 默认情况下,您将获得具有Windows凭据的传输安全性以及已签名和加密的数据包:如果客户端的Windows凭据来自受信任的Windows域,则此方法将起作用服务器.客户端和服务器使用客户端的Windows凭据协商SSPI会话 - 无需证书.如果握手失败(例如服务器不知道/不信任客户端的域),则根本不会进行任何数据传输,该通道将出错. (2认同)