Se connecter à Active Directory via LDAP

je veux me connecter à notre répertoire actif local avec C#.

j'ai trouvé cette bonne documentation.

<!-Mais je ne vois vraiment pas comment me connecter via LDAP.

est-ce quelqu'un de vous expliquer comment utiliser les paramètres?

Exemple De Code:

  static DirectoryEntry createDirectoryEntry()  
  {  
     // create and return new LDAP connection with desired settings  

     DirectoryEntry ldapConnection     = new DirectoryEntry("rizzo.leeds-art.ac.uk");  
     ldapConnection.Path               = "LDAP://OU=staffusers,DC=leeds-art,DC=ac,DC=uk";  
     ldapConnection.AuthenticationType = AuthenticationTypes.Secure;  
     return ldapConnection;  
  }  

Je n'ai que le nom D'hôte et L'adresse IP de notre serveur Active Directory. Ce n' DC=xxx,DC=xx et ainsi de suite dire?

37
demandé sur Draken 2013-02-11 17:55:26

3 réponses

DC est votre domaine. Si vous voulez vous connecter au domaine example.com que vos dc sont: DC=example, DC=com

vous n'avez en fait pas besoin de nom d'hôte ou d'adresse ip de votre contrôleur de domaine (il pourrait y en avoir beaucoup).

imaginez que vous vous connectez au domaine lui-même. Donc, pour se connecter au domaine example.com vous pouvez simplement écrire

DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://example.com");

et c'est fini.

Vous pouvez également spécifier un utilisateur et un mot de passe utilisé pour se connecter:

DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://example.com", "username", "password");

veillez également à toujours écrire LDAP en majuscules. J'ai eu des problèmes et des exceptions étranges jusqu'à ce que je lise quelque part que je devrais essayer de l'écrire en majuscule et qui a résolu mes problèmes.

directoryEntry.Path propriété vous permet de plonger plus profondément dans votre domaine. Donc, si vous voulez rechercher un utilisateur dans un OU (unité organisationnelle) spécifique, vous pouvez le définir là.

DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://example.com");
directoryEntry.Path = "LDAP://OU=Specific Users,OU=All Users,OU=Users,DC=example,DC=com";

cela correspondrait à L'annonce suivante hiérarchie:

  • com
    • exemple
      • Utilisateurs
        • Tous Les Utilisateurs
          • Utilisateurs Spécifiques

il suffit d'écrire la hiérarchie du plus profond au plus haut.

Maintenant, vous pouvez faire beaucoup de choses

Par exemple, rechercher un utilisateur par le nom de compte et d'obtenir de l'utilisateur nom:

DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://example.com");
DirectorySearcher searcher = new DirectorySearcher(directoryEntry) {
    PageSize = int.MaxValue,
    Filter = "(&(objectCategory=person)(objectClass=user)(sAMAccountName=AnAccountName))"
};

searcher.PropertiesToLoad.Add("sn");

var result = searcher.FindOne();

if (result == null) {
    return; // Or whatever you need to do in this case
}

string surname;

if (result.Properties.Contains("sn")) {
    surname = result.Properties["sn"][0].ToString();
}
66
répondu The-First-Tiger 2018-04-10 16:37:47

ldapConnection est l'adresse du serveur: ldap.example.com Ldap.Connexion.Le chemin est le chemin à l'intérieur des annonces que vous aimez utiliser insert dans le format LDAP.

OU=Your_OU,OU=other_ou, dc = example, dc=com

vous commencez au plus profond OU en travaillant de nouveau à la racine de la publicité, puis Ajouter dc=X pour chaque section de domaine jusqu'à ce que vous ayez tout, y compris le domaine de premier niveau

maintenant je manque un paramètre pour m'authentifier, cela fonctionne de la même façon que le chemin pour le nom d'utilisateur

CN=nom d'utilisateur,OU=utilisateurs,DC=exemple,DC=com

Introduction to LDAP

2
répondu s.lenders 2013-02-11 14:13:39

XYZ est un paramètre optionnel s'il existe dans le répertoire mydomain

static DirectoryEntry createDirectoryEntry()
{
    // create and return new LDAP connection with desired settings
    DirectoryEntry ldapConnection = new DirectoryEntry("myname.mydomain.com");
    ldapConnection.Path = "LDAP://OU=Users, OU=XYZ,DC=mydomain,DC=com";
    ldapConnection.AuthenticationType = AuthenticationTypes.Secure;
    return ldapConnection;
}

Ce sera essentiellement de vérifier pour com -> mondomaine -> XYZ -> Utilisateurs -> abcd

la fonction principale se présente comme suit:

try
{
    username = "Firstname LastName"
    DirectoryEntry myLdapConnection = createDirectoryEntry();
    DirectorySearcher search = new DirectorySearcher(myLdapConnection);
    search.Filter = "(cn=" + username + ")";
    ....    
0
répondu Pavan 2015-10-23 19:22:29