Maison > Article > développement back-end > Active Directory avec C#
Active Directory avec C# sert avant tout à organiser les ordinateurs, les utilisateurs de l'entreprise, etc. L'essentiel est un système de gestion des utilisateurs qui est généralement utilisé par les réseaux d'entreprise et à des fins commerciales. Un administrateur d’entreprise l’utilisera pour organiser l’historique complet de l’entreprise à partir des ordinateurs appartenant au réseau, du profil et des autorisations d’accès, etc. Active Directory est un type de base de données comme Oracle et SQL, il possède son propre langage de type de requête et un ensemble de règles basées sur LDAP.
Syntaxe :
Pour accéder à l'objet DirectoryEntry, nous avions besoin du nom d'utilisateur, du mot de passe et de l'adresse du serveur Active Directory. L'adresse du serveur contient l'adresse IP ou le chemin de LDAP ressemble à la syntaxe suivante,
LDAP://domain_name.com/DC=domain_name,DC=com
Active Directory aide vraiment les administrateurs informatiques, car il les aide à organiser les utilisateurs, les ordinateurs de bureau et plus encore de leur entreprise. Il possède une structure hiérarchique complète à quel réseau et ce que montre la photo de profil et qui accède aux stockages, etc. La plupart des entreprises font évoluer leurs applications depuis les applications de bureau vers les applications Web détenant l'authentification LDAP basée sur un formulaire. Parfois, les applications .NET interagissent avec Microsoft Active Directory (AD) pour récupérer la liste des utilisateurs, rechercher des groupes, authentifier les utilisateurs et également vérifier quels utilisateurs appartiennent à quel groupe Active Directory. En utilisant certaines approches, nous pouvons récupérer les informations de la base de données AD au sein de notre domaine.
Il existe différentes approches, l'une consiste à utiliser le LDAP (Lightweight Directory Access Protocol), il contient les classes DirectoryEntry et DirectorySearch qui appartiennent à l'espace de noms System.DirectoryServices. Une autre approche consiste à utiliser l'ensemble des wrappers de classe dans Active Directory (AD) sous l'espace de noms System.DirectoryServices.AccountManagement. En utilisant les requêtes LDAP, nous pouvons obtenir les informations de la base de données AD. Cette classe permet d'accéder à l'intégralité d'AD mais la classe wrapper permet de récupérer les utilisateurs, les objets informatiques, les groupes dans AD. Les objets classes DirectoryEntry et DirectorySearch sont plus rapides que l'objet System.DirectoryServices.AccountManagement.
L'élément de base d'Active Directory avec C# inclut la bibliothèque System.DirectoryService, cela permet d'interroger avec les routines de la bibliothèque AD. Active Directory communique via les objets de DirectoryEntry. Ces objets constituent les connexions les plus importantes à la base de données LDAP que nous pouvons interroger pour des objets et des dossiers supplémentaires. Pour accéder à l'objet DirectoryEntry, nous avions besoin du nom d'utilisateur, du mot de passe et de l'adresse du serveur Active Directory. L'adresse du serveur contient l'adresse IP ou le chemin de LDAP ressemble à ceci,
LDAP://domain_name.com/DC=domain_name,DC=com
Pour se connecter à Active Directory pour les objets de DirectoryEntry, car nous devons créer l'utilisateur de type d'authentification sécurisée qui indique la connexion authentifiée sécurisée à Active Directory. Lors de la connexion avec un compte de l'administrateur, nous pouvons exécuter les fonctions Active Directory de l'administrateur telles que la création de nouveaux utilisateurs, la mise à jour des utilisateurs, la suppression des utilisateurs, etc.
Obtenir l'objet DirectoryEntry de l'objet Directory
private DirectoryEntry Reterieve_DirectoryObject( ) { DirectoryEntry Obj_de; Obj_de=new DirectoryEntry("LDAP://IP_Address", "admin","password", AuthenticationTypes Secure); return _de; }
Récupérer l'utilisateur depuis Active Directory en C#
Une fois connecté à Active Directory, nous devons rechercher un objet comme obtenir un utilisateur comme suit ci-dessous,
private DirectoryEntry Reterieve_User(string User_Name) { DirectoryEntry obj_de = Reterieve_DirectoryObject( ); DirectorySearcher obj_deSearch = new DirectorySearcher(); obj_deSearch.SearchRoot = obj_de; obj_deSearch.Filter = "(&(objectClass=user)(JOHNAccountName=" + User_Name + "))"; obj_deSearch.SearchScope = SearchScope.Subtree; SearchResult getPath = obj_deSearch.FindOne(); if (!(getPath == null)) { obj_de = new DirectoryEntry(getPath.Path, "administrator", "password", AuthenticationTypes.Secure); return obj_de; } else { return null; } }
Le code ci-dessus explique comment récupérer l'utilisateur depuis Active Directory en fonction de ses informations de connexion. Nous devons utiliser un langage de requête Active Directory particulier inclus entre parenthèses, il contient le nom comme « JohnAccountName » et le nom d'utilisateur comme dans Active Directory. Une fois trouvé le DirectoryEntry à côté, codez le nouvel objet DirectoryEntry qui renvoie au résultat et utilisez les informations de connexion de l'administrateur dans la connexion.
Créer un utilisateur authentifié
Pour créer un utilisateur authentifié pour Active Directory, nous devons transmettre la chaîne de chemin LDAP valide au constructeur de la classe DirectoryEntry, elle suit le format LDAP://Doamin_name. Voyons la méthode suivante,
private bool AuthenticateUser(string domain_name, string user_name, string password) { bool result = false; try { DirectoryEntry obj_de = new DirectoryEntry("LDAP://" + domainName, userName, password); DirectorySearcher obj_dsearch = new DirectorySearcher(obj_de); SearchResult _sResult = null; sResult = obj_dsearch.FindOne(); result = true; } catch { result = false; } return result; }
Modifier les détails de l'utilisateur dans Active Directory en C#
Modifier les propriétés d'un objet Active Directory en C# est tout simplement simple en C#, d'abord accéder aux champs de propriété DirectoryEntry et modifier les valeurs si nécessaire avant cela pour vérifier s'il est nul ou non, puis enfin appeler la fonction ComminChanges pour exécuter et enregistrer les modifications effectuées. Voyons le code ci-dessous qui montre qu'il modifie la propriété du nom de l'utilisateur,
DirectoryEntry obj_de = Reterieve_User ("smith.rio"); if (obj_de!= null) { if (obj_de.Properties["displayName"] != null && obj_de.Properties["displayName"].Value != null) { de.Properties["displayName"].Value = "Smith, Rio (Welcome)"; de.CommitChanges(); } }
The above code describes the CommitChanges(), which will save the changes made in the Active Directory. The most important thing is that whatever changes are made will not be immediately visible in the applications of Active Directory like users of Active Directory and computers in the control panel it takes around 5-30 minutes to visible during changes because it needs to synchronize over the servers all through the network.
Querying Multiple Users in Active Directory with C# ASP .NET
The code above explained was to query the single DirectoryEntry object, whereas if we required for the list of objects we need to use the type SearchResultCollection joined with obj_deSearch, to search out all the things instead of finding one,
SearchResultCollection findUsers = retrieve_allUsers(); if (findUsers!= null && findUsers.Count > 0) { foreach (SearchResult getUser in findUsers) { DirectoryEntry obj_de = getUser.GetDirectoryEntry(); } }
In this article, I have explained about the Active Directory and how to retrieve details of users, system usage, groups, and also to authenticate the user. By using some classes, we can easily retrieve the details from the active directory (AD) database. Active Directory with C# is a foremost tool for enterprise networks and for businesses. When designing with web applications which suit for desktop applications to the web to make powerful organizations.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!