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?
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
- Tous Les Utilisateurs
- Utilisateurs
- exemple
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();
}
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
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 + ")";
....