Asp.net - comment questionner un contrôleur de domaine active directory

Soyez le premier à donner votre avis sur cette source.

Snippet vu 50 441 fois - Téléchargée 35 fois

Contenu du snippet

Dans le cadre de l'administration des Utilisateurs sur un domaine Active Directory, un système d'intérogation du Contrôleur de Domaine est bien utile pour récupérer toutes les informations disponible sur un Utilisateur.

Par exemple :
Connaître le Nom et Prénom de la personne se connectant avec le login toto10

Source / Exemple :


Imports System.DirectoryServices
...

' Le code de la fonction simple 

' -----------------------------------------------------
Public ChaineConn As String = "LDAP://MonControleurdeDomaineActiveDirectory"
Public rootEntry As New DirectoryEntry(ChaineConn, LoginAD, PasswordAD)

Public Login As String = ""
Public Nom As String = ""
Public Prenom As String = ""
Public Telephone As String = ""
Public Email As String = ""
Public Bureau As String = ""
Public Initials As String = ""
Public Description As String = ""
Public Entreprise As String = ""
Public Service As String = ""

' -----------------------------------------------------
Public Sub CherchePersonne(ByVal LeLogin As String)
 ' Cherche les Informations Sur le Compte suivant le Login Transmis

 Dim searcher As New DirectorySearcher(rootEntry)

 ' Mettre ici les valeurs des différents attributs
 searcher.PropertiesToLoad.Add("cn")
 searcher.PropertiesToLoad.Add("givenname")
 searcher.PropertiesToLoad.Add("sn")
 searcher.PropertiesToLoad.Add("telephoneNumber")
 searcher.PropertiesToLoad.Add("mail")
 searcher.PropertiesToLoad.Add("physicalDeliveryOfficeName")
 searcher.PropertiesToLoad.Add("Initials")
 searcher.PropertiesToLoad.Add("Description")
 searcher.PropertiesToLoad.Add("department")
 searcher.PropertiesToLoad.Add("Company")

 searcher.Filter = "(&(anr=" & LeLogin & ")(objectCategory=person))"

 Dim results As SearchResultCollection
 results = searcher.FindAll()

 If results.Count > 0 Then
   Dim result As SearchResult
   For Each result In results
     Login = CStr(result.Properties("cn")(0))
     If Not (result.Properties("givenname") Is Nothing) Then
       Nom = Trim(CStr(result.Properties("givenname")(0)))
     End If
     If Not (result.Properties("sn") Is Nothing) Then
       Prenom = Trim(CStr(result.Properties("sn")(0)))
     End If
     If Not (result.Properties("telephoneNumber") Is Nothing) Then
       Telephone = Trim(CStr(result.Properties("telephoneNumber")(0)))
     End If
     If Not (result.Properties("mail") Is Nothing) Then
       Email = Trim(CStr(result.Properties("mail")(0)))
     End If
     If Not (result.Properties("physicalDeliveryOfficeName") Is Nothing) Then
       Bureau = Trim(CStr(result.Properties("physicalDeliveryOfficeName")(0)))
     End If
     If Not (result.Properties("Initials") Is Nothing) Then
       Initials = Trim(CStr(result.Properties("Initials")(0)))
     End If
     If Not (result.Properties("Description") Is Nothing) Then
       Description = Trim(CStr(result.Properties("Description")(0)))
     End If
     If Not (result.Properties("Company") Is Nothing) Then
       Entreprise = Trim(CStr(result.Properties("Company")(0)))
     End If
     If Not (result.Properties("department") Is Nothing) Then
       Service = Trim(CStr(result.Properties("department")(0)))
     End If
   Next
 End If
End Sub

Conclusion :


On peut très bien a partir de ce système faire une personnalisation d'une page Intranet avec Authentification sur le Contrôleur LDAP.

Ainsi une fois que toto10 aura entré son mot de passe pour lancer la page Intranet de son entreprise il verrait apparaître son nom prénom, ...

De la même facon un Annuaire complêt d'une entreprise avec un AD déja enrichi peut être "Webisé".

Romelard Fabrice (Alias F___)

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
vendredi 23 avril 2010
Statut
Membre
Dernière intervention
23 avril 2010

Bonjour à tous,

je cherche à automatiser ce genre de requette , en ce qui concerne la récupération des noms des propriétés (ex : uid, cn, sn etc...), pour ne pas à avoir à taper du code en cascade.

Donc simplifier la partie qui suit:

# searcher.PropertiesToLoad.Add("cn")
# searcher.PropertiesToLoad.Add("givenname")
# searcher.PropertiesToLoad.Add("sn")
# searcher.PropertiesToLoad.Add("telephoneNumber")
# searcher.PropertiesToLoad.Add("mail")
# searcher.PropertiesToLoad.Add("physicalDeliveryOfficeName")
# searcher.PropertiesToLoad.Add("Initials")
# searcher.PropertiesToLoad.Add("Description")
# searcher.PropertiesToLoad.Add("department")
# searcher.PropertiesToLoad.Add("Company")

quelqu'un pourrait-il me dire s'il est possible de récupérer ces valeurs dans une variable ?

Merci de votre aide.
Messages postés
162
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
5 novembre 2010

Ou alors je suis un gros boulet qui n'a pas vu qu'au lieu d'ajouter la référence à mon Web Service, je tentais de l'ajouter à mon projet silverlight ... Et forcément pour raison de sécurité, c'est pas possible ...

Tssss on voit tout de suite que c'est le matin, je vais me faire un café, ptêtre ça me réveillera et m'évitera d'être à côté de la plaque ^^
Messages postés
162
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
5 novembre 2010

@Fabrice69 :
"Il faut ajouter la DLL "System.DirectoryServices" .NET dans Visual Studio.NET.
C:\WINNT\Microsoft.NET\Framework\v1.1.4322\System.DirectoryServices.dll"

On pense pas toujours à aller chercher "là dedans" xD

Donc, merci grandement, je vois partout ajouter la dll System.DirectoryServices" !! Mais où se trouve t elle ?!!! Je commençais à croire qu'il s'agissait d'un mythe ! Et bien non =) un grand merci à toi pour toute tes sources, toutes utiles :D

Big UP pouyr toi :)
Bonne journée ^^
Messages postés
21
Date d'inscription
lundi 15 janvier 2007
Statut
Membre
Dernière intervention
31 mars 2009

bonjour a tous
comment je peut telecharger le fichier System.DirectoryServices.dll
si quelqu'un a ce fichier SVP envoyer moi
voila mon email imedo_bena@hotmail.com
maeci
Messages postés
1
Date d'inscription
mercredi 1 novembre 2006
Statut
Membre
Dernière intervention
6 mai 2008

Bonjour,
Je réalise une interface graphique en VB.NET pour interagir avec Active Directory mais il m'est impossible d'importer le namespace System.DirectoryServices. Pourtant la dll correspondante est bien présente.
Quelqu'un pourrait-il m'aider ?
Merci d'avance.
Max.
Afficher les 30 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.