2012-07-19 1 views
2

J'ai actuellement une des méthodes couple ici:Extension d'une requête LDAP avec C#

public ADHelper() 
     { 

      connection = InitializeConnection(); 

     } 

     private DirectoryEntry InitializeConnection() 
     { 
      DirectoryEntry ldapConnection = new DirectoryEntry("LDAP://servername.domain.com:389/DC=domain,DC=com"); 
      ldapConnection.Username = "user" 
      ldapConnection.Password = "password"; 

      ldapConnection.AuthenticationType = AuthenticationTypes.Secure; 
      return ldapConnection; 

     } 

Je voudrais créer une autre méthode pour vérifier et voir si un objet existe dans ce domaine. Je le fais actuellement avec ce qui suit:

public bool Exists(string objectPath) 
     { 
      bool found = DirectoryEntry.Exists("LDAP://" + objectPath); 
      return found; 
     } 

Mais cela me force à spécifier une chaîne LDAP entière. Je souhaite étendre simplement le LdapConnection initial avec un paramètre OU CN et peut-être dans la méthode exists(). Est-il possible d'y arriver sans le rendre public la méthode initialize()?

Merci beaucoup!

+2

Si vous avez juste besoin de chercher un '' DirectoryEntry' sur la base CN', vous pouvez utiliser 'DirectorySearcher' pour le faire. –

Répondre

0

Peut-être quelque chose comme ceci:

public bool AccountExists(string userEmail) 
{ 
    using (var root = GetLdapRoot()) 
    { 
     using (var searcher = new DirectorySearcher(root)) 
     { 
      searcher.Filter = string.Format("(&(objectClass=User)(mail={0}))", userEmail); 
      searcher.PropertiesToLoad.Add("email"); 
      var result = searcher.FindAll(); 
      return result.Count > 0; 
     } 
    } 
} 


private static DirectoryEntry GetLdapRoot() 
{ 
    return new DirectoryEntry("LDAP://DC=com"); //or whatever your root domain is. Set credentials if you need to 
} 

en définissant un filtre et d'être précis sur ce que les propriétés à charger dans, la recherche sera plus efficace. En utilisant la racine comme LDAP: // chaîne, vous devez être à la recherche dans le répertoire entier.