Безопасно ли передается пароль с использованием DirectoryEntry

Я рассматриваю код, который проверяет подлинность учетных данных пользователя на сервере LDAP, создавая DirectoryEntry объект следующим образом

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

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

Если исключение не выдается, то код предполагает, что учетные данные пользователя в порядке..

Код работает нормально, но мои вопросы касаются того, насколько он безопасен. SSL используется для обеспечения безопасной связи между клиентом и веб-сервером, но есть ли уязвимость в связи между веб-сервером и сервером ldap?

Есть еще один перегруженный параметр DirectoryEntry конструктор называется AuthenticationType, Поскольку в приведенном выше коде не указан параметр AuthenticationType = None что соответствует базовой аутентификации.

Было бы лучше использовать AuthenticationType = Secure или же AuthenticationType = SecureSocketsLayer или же AuthenticationType = Encryption или может быть их побитовая комбинация?

Майкл

1 ответ

Решение

По умолчанию AuthenticationType.Secure используется, когда AuthenticationType не предоставлен в конструкторе. Эта опция уже шифрует пароль, так как для аутентификации используется NTLM/Kerberos.

Вы также можете указать флаг Sealing (вместе с Secure) для шифрования всего трафика (не только аутентификации). Это требует Kerberos.

Является ли сервер LDAP, который вы подключаете к AD? Я проверил, что вышеупомянутое работает для AD. (трафик зашифрован, как видно на Wireshark)

Другие вопросы по тегам