Как подключиться к активному серверу каталогов? - PullRequest
2 голосов
/ 01 мая 2011

Я использую приведенный ниже код для подключения к активному серверу каталогов и получения его пользователей.

Но мой веб-сервер не находится в поддомене. Могу ли я подключиться к нему?

Или я должен включить его IP-адрес или что-то еще?

DirectoryEntry entry = new DirectoryEntry("LDAP://dps.com", "Raymond", "xxxxxxx");

DirectorySearcher mySearcher = new DirectorySearcher(entry);
mySearcher.Filter = ("(&(objectCategory=person)(objectClass=user))");

foreach (SearchResult result in mySearcher.FindAll())
{
   ResultPropertyCollection myResultPropColl = result.Properties;
   DataRow dr=reader.Tables[0].NewRow();
   dr[0]=myResultPropColl["samaccountname"][0].ToString()+"@"+Domain;
   reader.Tables[0].Rows.Add(dr);
   Response.Write(myResultPropColl["samaccountname"][0].ToString());
}

1 Ответ

6 голосов
/ 01 мая 2011

Если вы используете .NET 3.5 и выше, вы должны проверить пространство имен System.DirectoryServices.AccountManagement (S.DS.AM).Узнайте все об этом здесь:

Управление принципами безопасности каталогов в .NET Framework 3.5

По сути, вы можете определить контекст домена и легко находить пользователей и / или группыв AD:

// set up domain context - connects to the current default domain
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

// find user by name
UserPrincipal user = UserPrincipal.FindByIdentity("John Doe");

// find all users in your AD directory - set up a "query-by-example" 
// template to search for; here: a UserPrincipal, which is not locked out
UserPrincipal userTemplate = new UserPrincipal(ctx);
userTemplate.IsAccountLockedOut = false;

// create a PrincipalSearcher, based on that search template
PrincipalSearcher searcher = new PrincipalSearcher(userTemplate);

// enumerate all users that this searcher finds
foreach(Principal foundPrincipal in searcher.FindAll())
{
   UserPrincipal foundUser = (foundPrincipal as UserPrincipal);

   // do something with the userTemplate
}

Новый S.DS.AM позволяет очень легко поиграть с пользователями и группами в AD:

Если вы не можете перейти на S.DS.AM,Что вам нужно сделать, это убедиться, что вы используете правильную строку LDAP для подключения к вашему серверу.Эта строка должна выглядеть примерно так:

 LDAP://servername/OU=Users,DC=YourCompany,DC=com

servername является необязательным - вы также можете не указывать это.Но строка LDAP должна состоять как минимум из одной строки DC=xxxxx и, возможно, других сегментов LDAP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...