2011-01-20 6 views
0

У меня есть требование поиска пользователя в подразделении. Мое решение до сих пор выглядит следующим образом: -Поиск пользователя в OU

// s = "ou=myou1,ou=myou2,ou=muou3,dc=myad,dc=com" & t = "myad.com" 

PrincipalContext context = new PrincipalContext(ContextType.Domain, t, s); 
UserPrincipal user = UserPrincipal.FindByIdentity(context, "boborwhoever"); 
if (user != null) found him! 

(простите пожалуйста очевидное псевдокод, но вы получите картину)

Проблема, которую я имею, что, хотя мой UserPrincipal пользователь населен и я нахожу «боб «если он находится в« myou3 », я могу изменить s на« ou = myou1, dc = myad, dc = com »и по-прежнему найти« bob ». Таким образом, кажется, что UserPrincipal.FindByIdentity также проверяет sub OU.

Как это получить, чтобы просто проверить OU? Или, может быть, я миль и должны делать все это в лучшую сторону :-)

Спасибо Steve

+0

Что такое OU? А кто такой Стив? – Joe

+0

Привет, Джо, попробуйте ввести активный каталог в Википедии и оттуда оттуда. Спасибо, Стив – user474541

ответ

1

Это, как я хотел бы сделать это

using System.DirectoryServices 

DirectoryEntry de = new DirectoryEntry(); 
de.Path = "LDAP://**Your connection string here**"; 
de.AuthenticationType = AuthenticationTypes.Secure; 

DirectorySearcher search = new DirectorySearcher(de); 
search.Filter = "(SAMAccountName=" + account + ")"; 

//What properties do we want to return? 
search.PropertiesToLoad.Add("displayName"); 
search.PropertiesToLoad.Add("mail"); 

search.SearchScope = SearchScope.OneLevel //this makes it only search the specified level 

SearchResult result = search.FindOne(); 

if (result != null) 
{ 
    //Get Him! } 
else 
{ 
    //Not Found 
} 

использовали это в рабочие процессы с sharepoint, и он функционировал нормально.

+0

Спасибо Stuart, я ранее написал нечто похожее на этот пример (за исключением установки поискового сервера), с которым мне, возможно, придется придерживаться. Мне очень хотелось найти способ использования пространства имен System.DirectoryServices.AccountManagement для стандартизации, но я еще не смог найти способ. Вы предложили способ отлично работать, хотя так спасибо :-) – user474541

Смежные вопросы