Мне нужно проверить учетные данные, которые используются для подключения к серверу 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
}
Документы наводят меня на мысль, что эти вызовы должны вести себя одинаково, но у меня разные результаты Почему это так и как правильно проверить соединение?