我正在审核通过创建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 = Secure
或AuthenticationType = SecureSocketsLayer
或AuthenticationType = Encryption
或可能是它们的按位组合会更好吗?
迈克尔
答案 0 :(得分:0)
默认情况下,在构造函数中未提供AuthenticationType时使用AuthenticationType.Secure。此选项已加密密码,因为它使用NTLM / Kerberos进行身份验证。
您还可以指定Sealing标志(与Secure一起)来加密所有流量(不仅仅是身份验证)。这需要Kerberos。
您要连接到AD的LDAP服务器吗? 我验证了以上适用于AD。 (流量是加密的,如wireshark所示)