C # – Recherche d’utilisateurs dans plusieurs domaines Active Directory

J’utilise System.DirectoryServices.AccountManagement pour fournir une fonctionnalité de recherche d’utilisateur.

L’entreprise possède plusieurs domaines AD spécifiques à une région: AMR, EUR, JPN, etc.

Ce qui suit fonctionne pour le domaine EUR, mais ne renvoie pas les utilisateurs des autres domaines (naturellement):

var context = new PrincipalContext(ContextType.Domain, "mycorp.com", "DC=eur,DC=mycorp,DC=com"); var query = new UserPrincipal(GetContext()); query.Name = "*Bloggs*"; var users = new PrincipalSearcher(query).FindAll().ToList(); 

Toutefois, si je cible tout l’annuaire, les utilisateurs de l’ un des domaines spécifiques à la région ne sont pas renvoyés:

 var context = new PrincipalContext(ContextType.Domain, "mycorp.com", "DC=mycorp,DC=com"); 

Comment rechercher dans tout l’annuaire?

Mettre à jour

Consultez la rubrique “Fonctionnement des recherches Active Directory”:

http://technet.microsoft.com/en-us/library/cc755809(v=ws.10).aspx

Si je suffixe le nom du serveur avec le port 3268, il recherche dans le catalogue global:

 var context = new PrincipalContext(ContextType.Domain, "mycorp.com:3268", "DC=mycorp,DC=com"); 

Cependant, c’est très, très lent. Des suggestions sur la façon d’améliorer les performances?

Les requêtes qui ont des caractères génériques initiaux (*Bloggs*) seront lentes à moins que vous n’ayez un index de tuple sur l’atsortingbut en cours de requête. Aucun des atsortingbuts dans AD n’a cet ensemble par défaut. Mieux vaut ne pas faire les wildcards initiaux.