Мне нужно проверить учетные данные, которые используются для подключения к серверу AD. Если передать неверные учетные данные PrincipalContext(ContextType, String, String, String)
, PrincipalContext.ConnectedServer
выдает ошибку System.DirectoryServices.DirectoryServicesCOMException
, которая обнаруживается при первом использовании PrincipalContext
.
Я пытаюсь проверить учетные данные с помощью PrincipalContext.ValidateCredentials(null, null)
, но у меня возникают проблемы. Согласно . Документация по NET Core 2.0
Метод ValidateCredentials привязывается к серверу, указанному в конструкторе. Если параметры имени пользователя и пароля равны нулю, учетные данные, указанные в конструкторе, проверяются.
Я создаю соединение с сервером.
string username = "username"
string password = "password"
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "my_domain.local", username, password);
И затем, чтобы проверить соединение, я пытаюсь:
if (ctx.ValidateCredentials(null, null))
{
// This block does not get hit!
// This is surprising because the credentials are valid
}
Который отличается от:
if (ctx.ValidateCredentials(username, password))
{
// Credentials are valid, this block gets hit
}
Документы заставляют меня поверить, что эти вызовы должны вести себя одинаково, но я получаю разные результаты. Почему это так и как правильно проверить соединение?