WCF 加密和握手究竟是如何工作的?
Posted
技术标签:
【中文标题】WCF 加密和握手究竟是如何工作的?【英文标题】:How does the WCF encryption and handshake exactly work? 【发布时间】:2017-11-22 12:53:33 【问题描述】:我有一个关于 Windows Communication Foundation 使用的传输加密的非常具体的问题。我编写了一个客户端和一个服务应用程序。该服务作为 Windows 服务托管,并由一个特殊用户启动,让我们说 Jeremy。
我的客户在不同的计算机上,但在同一个域中。通信通过带有传输加密的 net.tcp 绑定进行。
问题1:如果我用wireshark嗅探,第一个包是明文的
问题2:在客户端的App.config中是一个自动生成的身份标签,格式为“jeremy@mycompany.com”。如果我将其设置为空白,则所有内容都以明文形式发送。如果我删除它,程序将无法运行。
有人能够描述握手过程中究竟发生了什么吗?我认为 Kerberos 正在服务处获取票证以对客户端进行身份验证。但是为什么它是明文呢?
我希望有人能够提供帮助。
编辑:clientCredentialType当然是windows with protectionLevel: encryptAndSign
【问题讨论】:
【参考方案1】:好的,经过大量研究后,我发现这是由于 Kerberos 和 NTLM 的差异造成的。
我提到的明文是服务器和客户端之间的握手。因此,如果我使用 Kerberos,则明文只是一些调用服务的字符。如果 Kerberos 不可用,或者如果您更改身份标签 Kerberos 会退回到 NTLM,这负责更长的握手时间,等等一些更清晰的文本段落。我现在通过以下行强制客户端使用 Kerberos:
<endpointBehaviors>
<behavior>
<clientCredentials>
<windows allowNtlm="false"/>
</clientCredentials>
</behavior>
</endpointBehaviors>
在 windows 安全日志 中,您现在可以看到身份验证是通过 Kerberos 进行的。
以下链接对我了解 Kerberos 和解决问题最有帮助:
https://blogs.msdn.microsoft.com/asiatech/2009/08/27/how-to-impersonate-or-delegate-a-client-in-wcf/
https://www.tecchannel.de/a/die-funktionsweise-von-kerberos,461645
https://msdn.microsoft.com/en-us/library/59hafwyt(v=vs.100).aspx
【讨论】:
以上是关于WCF 加密和握手究竟是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章
Spring BeanPostProcessor 究竟是如何工作的?
iOS MagicalRecord 对 tableview 的分组和排序。它们究竟是如何工作的?