2014-02-21 2 views
0

Я пишу приложение, которое может использовать идентификаторы Windows для аутентификации входа вместо имени пользователя и пароля, но я хочу добавить функцию проверки, чтобы подтвердить, что имя пользователя существует либо локально, либо в активном домене Служба каталогов, в отличие от Outlook «Check Names».Доменное имя полного домена от частичного

Так что если администратор начинает создавать нового пользователя и вводит его в mfd\john.smith и нажимает кнопку «Подтвердить», то он проверяет и разрешает создание пользователя.

Хотя я могу сделать это просто отлично, используя класс DirectorySearcher, проблема заключается в доменном имени. Здесь у нас есть доменное имя, которое технически «mfd.local», но Environment.UserDomainName, а имена пользователей обычно вводятся как только MFD\username. Когда я пытаюсь использовать метод DirectorySearcher, он выдает исключение, говорящее: «реферал был возвращен сервером » без какой-либо информации относительно реферала.

Когда я вручную меняю его на mfd.local\username, поисковик работает. Когда я установил DirectorySearcher.ReferralChasing, все это все еще не работает.

Есть ли способ принять короткую версию имени домена при поиске LDAP?

ответ

0

И вот так я нашел решение! Он принимает более короткое доменное имя MFD, где полное доменное имя mfd.local.

private static bool DomainUserExists(string domain, string username) 
{ 
    try { 
     var context = new PrincipalContext(ContextType.Domain, domain); 
     var userPrincipal = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, username); 
     return userPrincipal != null; 
    } 
    catch (Exception exc) 
    { 
     // handle if necessary 
     return false; 
    } 
} 
Смежные вопросы