是否使用DirectoryEntry安全地传输密码

时间:2014-08-12 11:15:56

标签: .net authentication active-directory ldap directoryentry

我正在审核通过创建DirectoryEntry对象来对LDAP服务器验证用户凭据的代码,如下所示

DirectoryEntry entry = new DirectoryEntry(_path, domainAndUsername, pwd);

try
{
    object obj = entry.NativeObject;
}
catch (Exception ex)
{
throw new Exception("Error authenticating user. " + ex.Message);
}

如果未抛出异常,则代码假定用户凭据正常..

代码工作正常,但我的问题与它的安全性有关。使用SSL以便客户端和Web服务器之间的通信是安全的,但是webserver和ldap服务器之间的通信存在漏洞吗?

DirectoryEntry构造函数中还有一个名为AuthenticationType的重载参数。由于上述代码中未指定参数,因此使用AuthenticationType = None等同于基本身份验证。

使用AuthenticationType = SecureAuthenticationType = SecureSocketsLayerAuthenticationType = Encryption或可能是它们的按位组合会更好吗?

迈克尔

1 个答案:

答案 0 :(得分:0)

默认情况下,在构造函数中未提供AuthenticationType时使用AuthenticationType.Secure。此选项已加密密码,因为它使用NTLM / Kerberos进行身份验证。

您还可以指定Sealing标志(与Secure一起)来加密所有流量(不仅仅是身份验证)。这需要Kerberos。

您要连接到AD的LDAP服务器吗? 我验证了以上适用于AD。 (流量是加密的,如wireshark所示)