Проблема с DirectoryServices и UserEnabledFlag - PullRequest
0 голосов
/ 23 января 2020

У меня проблемы с получением «userAccountProperty» в DirectoryEntry. Мне нужно свойство, чтобы проверить, активирован ли пользователь в ActiveDirectory, и я пытался сделать это часами.

Чтобы получить большинство свойств, я могу использовать следующий код.

string objectDN = "CN=Tyler,CN=Users,DC=MYDC1,DC=MYDC2"
DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://" + objectDN);
PropertyValueCollection value = dirEntry.Properties["name"];
if (value.Value != null)
{
         string name = value.Value.ToString();
}

одна и та же операция для «userAccountControl» всегда приводит к нулевому результату.

Я выяснил, что это может иметь какое-то отношение к разрешениям, поэтому я попробовал его с аутентификацией в качестве администратора. Сначала с конструктором DirectoryEntry, подобным этому:

DirectoryEntry objDirEntry = new DirectoryEntry("LDAP://" + objectDN", username, password)

, который дал тот же результат, что и без аутентификации (null для "userAccountControl").

Итак, я попробовал его с PrincipalContext.

PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, "mydomain", "DC=MYDC1,DC=MYDC2", username, password);
bool isValid = principalContext.ValidateCredentials(username, password);
UserPrincipal user = UserPrincipal.FindByIdentity(principalContext, "tyler");
DirectoryEntry dirEnt = (DirectoryEntry)user.GetUnderlyingObject();
var test1= dirEnt.Properties["distinguishedName"];
var test2= dirEnt.Properties["userAccountControl"];

Аутентификация действительна, и для пользователя существует свойство, которое вызывается (что всегда ложно). При использовании нижележащего объекта свойство userAccountControl по-прежнему равно нулю.

Дополнительным фактором, который я действительно не могу понять, является то, что я вошел в систему как adminUser в домене. Я занимаюсь разработкой в ​​VisualStudio, и когда я запускаю приложение от имени администратора, я могу получить свойство userAccountControl. Но почему это не работает, когда я аутентифицируюсь как этот пользователь, не запустив его в качестве администратора? Я полностью смущен этим.

...