WCF与Windows身份验证和SSL

时间:2017-06-28 15:01:46

标签: c# wcf ssl kerberos

我想实现一个WCF服务,该服务使用由TLS / SSL保护的TCP传输层,并且仍在服务器上使用Windows身份验证(kerberos / NTLM)来识别调用客户端。 具有Windows身份验证的部分已经可以使用,但我不确定连接是否已加密。

我使用NetTcpBinding并像这样创建:

        var binding = new NetTcpBinding()
        {
            ReceiveTimeout = TimeSpan.FromMinutes(30),

            OpenTimeout = TimeSpan.FromMinutes(1),
            CloseTimeout = TimeSpan.FromSeconds(30),

            MaxReceivedMessageSize = int.MaxValue,

            ReliableSession =
            {
                Enabled = true,
                InactivityTimeout = TimeSpan.FromMinutes(1)
            },

            Security =
            {
                Mode = SecurityMode.Transport,
                Transport =
                {
                    ClientCredentialType = TcpClientCredentialType.Windows,
                    ProtectionLevel = ProtectionLevel.EncryptAndSign,
                    SslProtocols = SslProtocols.Tls12
                }
            }
        };

我已经使用wireshark嗅了一些包,并在第一个包中找到了以下内容:" application / negotiate"。

我只是想确保连接是用TLS加密的,但我不是因为我不知道如何检查它。 在我的环境中无法使用客户端证书。

请不要只是粘贴一些微软网站的链接,了解如何设置。 没有示例显示如何使用Windows auth和TLS。 该应用程序独立,因此无IIS 或其他内容!

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

这是Net.Tcp与传输安全性和独立托管绑定的示例:https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/transport-security-with-windows-authentication

它的配置几乎与您一样。唯一的例外是您添加了可靠的会话(这根本不会影响安全性),并且仅将可用的SSL协议限制为Tls12(默认值为Ssl3 | Tls | Tls11 | Tls12)。所以,它仍然安全。

所以,答案是:是的,它是安全的。