Active Directory & .Net 2.0


précédentsommairesuivant
existe déjà

2. Ce que vous devez savoir avant de coder

J'ai volontairement placé cette partie avant de commencer à entrer dans le détail du code pour que vous connaissiez les choses importantes à savoir pour une compréhension plus aisée du code et du principe de fonctionnement de ce que nous allons voir au cours de cet article.

Remarque : il ne faut pas d'oublier d'ajouter une référence à l'assembly "System.DirectoryServices" dans votre projet, et également ajouter deux "Imports" en entête de votre classe : "Imports System.DirectoryServices" et "Imports System.DirectoryServices.ActiveDirectory". Sans cela vous ne pourriez pas utiliser les classes que nous allons employer tout au long de cet article.

2.1. Etablir une connexion avec l'annuaire

Pour nous connecter à Active Directory, nous allons utiliser la classe DirectoryEntry qui permet d'accéder à un objet dans l'annuaire. Pour nous connecter à un objet dans l'annuaire, il suffit de fournir son nom unique LDAP.

Remarque : un nom unique LDAP est un dérivé de la convention de nommage X500. Voilà un exemple de nom unique du compte utilisateur Administrateur du domaine Developpez.local : CN=Administrateur,CN=Users,DC=Developpez,DC=local. Attention cependant à ne pas confondre l'identifiant unique qui est attribué à un objet par Active Directory : le GUID (Globally Unique Identifier).

Etablir une connexion
Sélectionnez

Dim monEntry As New DirectoryEntry("LDAP://" & cheminLdapConteneur, monUsername, monPassword, AuthenticationTypes.Secure)

Comme vous pouvez le voir le constructeur de DirectoryEntry prends en paramètres le nom unique LDAP de l'objet, le nom d'ouverture de session et le mot de passe du compte que vous utilisez pour accéder à l'annuaire. Il prends en paramètre le type d'authentification à employer, au cours de cet article nous utiliserons systématiquement "secure" qui permet d'établir une connexion sécurisée à l'annuaire grâce au protocole Kerberos (car nous utilisons le "provider LDAP", et non "WINNT" par exemple). Si aucun identifiant ou mot de passe n'est donné, alors c'est le contexte de sécurité dans lequel s'exécute votre application qui est utilisé. Les opérations que nous allons effectuer nécessitent des droits de base quand il s'agît d'accéder en lecture seulement, et des droits administratifs lorsqu'il s'agît de modifier quoi que ce soit dans l'annuaire, mais il faut adapter cela à chaque situation, le niveau d'autorisation pourra varier, comme par exemple un utilisateur souhaitant modifier l'adresse inscrite dans son propre compte Active Directory.

2.2. Membres principaux de la classe DirectorySearcher

  • ClientTimeOut : spécifie la durée maximale durant laquelle le client effectuant la requête attend la réponse du serveur, au-delà de ce délai la recherche est annulée.
  • Filter : cette propriété est une chaîne de caractères " au format LDAP " qui permet d'établir un filtre sur la recherche, c'est-à-dire que par exemple, nous allons pouvoir spécifier que nous recherchons par exemple des objets de type " user " (voici ce que cela donne dans ce cas précis : "(objectClass=user)" ). Il existe de très nombreux types d'objets, je vous renvoie donc à la documentation officielle, idem pour la syntaxe à employer, mais rassurez vous, je vous donne tous les liens nécessaires dans la section ressources de cet article.
  • FindAll : cette méthode exécute la recherché que vous avez paramétré, et renvoie l'ensemble des réponses qu'elle aura trouvé dans l'annuaire.
  • FindOne : cette méthode comme la précédente exécute la recherche, mais à la différence prés, qu'elle ne renvoie que le premier résultat qu'elle aura pu trouver, et se stop immédiatement après.
  • PropertiesToLoad : par le biais de cette propriété, il est possible de spécifier quelle est le type de propriétés qu'il est nécessaire de récupérer pour les objets recherchés, par exemple, si vous ne recherchez que la propriété adresse des objets comptes d'utilisateurs, il n'est pas nécessaire et encore moins recommandé de récupérer toutes les propriétés, ainsi grâce à PropertiesToLoad, vous ne récupérez que les propriétés qui vous sont utiles.
  • SearchRoot : cette propriété permet de spécifier ou de récupérer le noeud dans la hiérarchie Active Directory à partir duquel commence la recherche.
  • SearchScope : la valeur que prend cette propriété indique si la recherche s'effectue uniquement dans le noeud de l'objet concerné par la recherche ou également dans tous les enfants de celui-ci. Par défaut la recherche est effectuée dans tous les noeuds "enfants".
  • ServerTimeLimit : spécifie la durée maximale que doit prendre la recherche, dès que ce délai est atteint, elle est stoppée et seuls les objets jusqu'alors trouvés sont inclus dans le résultat renvoyés au client.
  • SizeLimit : permet de spécifier le nombre maximal d'objets que peut retourner une recherche dans l'annuaire. La valeur par défaut est 0, ce qui signifie que le serveur retournera un nombre maximal de 1000 entrées si aucun paramètre contraire ne lui est précisé.

précédentsommairesuivant
existe déjà

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2005 Ronald VASSEUR. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.