Я работаю над авторизацией пользователей, использующих соединение LDAP. Ниже приведен небольшой фрагмент кода.

string principalUserName = "";
NetworkCredential NC = new NetworkCredential(principalUserName, password); 
LdapConnection.Bind(NC);`

В приведенном выше коде должна быть указана причина ошибки в пустой строке, но это не так. Таким образом, пока principalUserName пуст, он будет авторизовывать кого угодно, независимо от пароля (следовательно, LdapConnection.Bind(NC) не выдаст никаких ошибок).

Соответствующее значение основного имени пользователя имеет формат, например

CN=user1,OU=PublicOrganization

У меня вопрос: почему он авторизует пустое имя пользователя?

1
P Shrestha 18 Май 2018 в 22:38

1 ответ

Лучший ответ

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

Так что он использует ваши учетные данные.

Вы можете проверить это, запустив свою программу под учетной записью локального компьютера, которой домен не будет доверять. В этом случае тест не пройдет.

3
Gabriel Luci 18 Май 2018 в 19:41