begin process at 2010 03 19 07:37:20
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > ASP.NET - COMMENT QUESTIONNER UN CONTRÔLEUR DE DOMAINE ACTIVE DIRECTORY

ASP.NET - COMMENT QUESTIONNER UN CONTRÔLEUR DE DOMAINE ACTIVE DIRECTORY


 Information sur la source

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Source .NET ( DotNet ) Niveau :Initié Date de création :06/03/2003 Date de mise à jour :07/10/2004 12:46:42 Vu :35 094

Auteur : fabrice69

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (29)
Ajouter un commentaire et/ou une note


 Description

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

  • 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
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___)

  


 Historique

07 octobre 2004 12:46:43 :
Ajout de l'import du Namespace de l'AD.

 Sources du même auteur

Source .NET (Dotnet) SHAREPOINT 2007 - OBTENIR LA LISTE DES WEBPARTS DANS UNE PAG...
Source .NET (Dotnet) SHAREPOINT 2007 - OBTERNIR LA LISTE DES FEATURES D'UN SITE
Source avec une capture Source .NET (Dotnet) SHAREPOINT 2007 - CHARGER LA LISTE DES COLLATIONS SHAREPOINT...
Source avec une capture Source .NET (Dotnet) SHAREPOINT 2007 - CHARGER LA LISTE DES LANGUES INSTALLÉES DA...
Source .NET (Dotnet) C# - FONCTION TRÈS SIMPLE POUR ENVOYER UN MAIL VIA SMTP

 Sources de la même categorie

Source avec Zip UPLOAD ET SA GESTION VIA FSO par Caius_junioricus
Source avec Zip Source .NET (Dotnet) CLASSE AVEC QUE DES MEMBRES ET DES MÉTHODES STATIQUES POUR G... par tikrimi
Source .NET (Dotnet) ASP.NET - COMMENT OBTENIR LE CONTENU D'UNE PAGE WEB DISTANTE... par fabrice69
Source .NET (Dotnet) CLASSE .NET LISTANT LES ADRESSES MAC D'UNE MACHINE - COMPATI... par aKheNathOn
PING D'UNE LISTE DE POSTE : WHOSBAD par defrance

Commentaires et avis

Commentaire de Nocturne le 07/03/2003 17:19:25

Salut fabrice69,
Il est bien ton code.
Juste une question, je n'utilise pas Active directory mais la Gestion de l'ordinateur ou son parametre les comptes utilisateurs.
As tu une idee comment faire pour recuperer les infos sur un utilisateur.
Merci d'avance.
Bonne prog, a+

Commentaire de lg5 le 23/04/2004 12:57:10

Me met "type DirectoryEntry non défini"
A+

Commentaire de Doots78 le 01/06/2004 19:47:16

Pareil... type DirectoryEntry non défini, pourtant j'ai bien importé les espace de noms qu'il faut.
<%@ import Namespace="System" %>
<%@ import Namespace="System.DirectoryServices" %>
<%@ import Namespace="System.DirectoryServices.DirectoryEntry" %>

Est-ce moi qui fait une erreur... ou y a t'il un problème ? En tout cas ce code est trés prometteur et m'interesse beaucoup !! :)

@+

Commentaire de fabrice69 le 01/06/2004 20:35:00 administrateur CS

Il faut ajouter la DLL "System.DirectoryServices" .NET dans Visual Studio.NET.

C:\WINNT\Microsoft.NET\Framework\v1.1.4322\System.DirectoryServices.dll

F___

Commentaire de ssebounet le 21/06/2004 16:38:26

Non pas obliger d'avoir le framework 1.1 le 1.0 suffit.
J'ai reussi a me connecter et a recuperer des certificats...
tres bon code merci beaucoup fabrice69

Commentaire de panza le 17/08/2004 10:29:51

Bonjour

As tu un code pour réinitialiser le mot de passe d'un utilisateur de l'AD, par une chaine xxxx
?

merci : panzabitsaka@free.fr

Commentaire de eihpos le 04/10/2004 17:38:28

Salut Fabrice69,
J'ai comme d'hab une petite question angoissante. Est-il possible à partir d'un site en ASP.net de modifier certains attributs d'un objet LDAP.
En fait ce que je voudrait faire c'est un intranet avec differents types d'utilisateurs. Ceci en utilisant LDAP. Je me demande si un administrateur pourrait par le biais de l'appli ASP.net définir les attributs qui définissent le type d'utilisateur de l'appli. Je ne sais pas si j'ai été claire.
Merci de ton aide.

Commentaire de rickymix le 06/10/2004 16:05:48

Me met "type DirectoryEntry non défini"

Il faut ajouter la DLL "System.DirectoryServices" .NET dans Visual Studio.NET.

C:\WINNT\Microsoft.NET\Framework\v1.1.4322\System.DirectoryServices.dll

J'utilise Webmatrix et je n'arrive pas a utiliser cette DLL. je ne connais pas la procédure pour que la classe soit reconnue.
Merci pour votre aide.

RM

Commentaire de HalfScrum le 06/10/2004 22:37:23

Yo Ricky,
Pour Web Matrix copie "system.DirectoryServices.dll" dans le répertoire "bin" de ton application

Commentaire de fabrice69 le 07/10/2004 10:00:01 administrateur CS

De quels attributs parles tui eihpos ?

Ce sont les propriétés (nom, prénom, ...) ou non ?

F___

Commentaire de eihpos le 07/10/2004 10:16:21

oui ce genre d'attribut en fait c'est un attribut de la classe user qui permet de définir un profil applicatif à l'utilisateur : ex pour l'appli X l'utilisateur a pour profil QUALIF. A partir de là on en déduit les droits qu'il a dans l'appli intranet.
Il s'agit d'un attribut optionnel.
Je voudrai pouvoir en modifier la valeur à partir de l'appli ASP.NET.
Est-ce possible à ta connaisssance ?

Commentaire de fabrice69 le 07/10/2004 10:41:31 administrateur CS

Je ne parle pas de la partie de ton application Intranet, mais des paramètres de L'AD que tu veux modifier.

Qu'est ce que tu veux changer pour un Compte Utilisateur de l'AD ? Est-ce un profil ? Est-ce son appartenance à des Groupes LDAP ?

F___

Commentaire de zack67 le 07/10/2004 12:07:26

Cette source a l'air excellent (non, non, ce n'est pas une faute de français!), mais impossible de l'utiliser. Comme pour "lg5" ou "rickymix" j'ai le message "Type 'Directoryentry' non défini", pourtant j'ai ajouté la dll "System.DirectoryServices" dans mes références ainsi que dans le répertoire bin de l'appli (bien que je travaille sur visual studio). Aurrais-tu une idée pour corriger ce pb ?

J'en profite pour te remercier de partager tes connaissances, c'est un sacré boulot que tu réalises !

Commentaire de fabrice69 le 07/10/2004 12:45:30 administrateur CS

En entete du code :
Imports System.DirectoryServices


Dans les références de VS.NET, tu ajoutes System.DirectoryServices.dll à ton projet.

Pour ce qui est de WebMatrix, ne travaillant pas avec cet outil, je ne peux pas vous aider.

Romelard Fabrice.

Commentaire de eihpos le 07/10/2004 13:45:46

Qu'est ce que tu veux changer pour un Compte Utilisateur de l'AD ? Est-ce un profil ? Est-ce son appartenance à des Groupes LDAP  ----
En fait je veut changer un paramètre qui est du meme genre que sn st ou autre postaladress.
Je voudrais savoir si ils sont accessibles en modif depuis ASP.NET

Commentaire de rickymix le 07/10/2004 16:30:30

Merci pour votre aide...
Au top, en ajoutant <%@ import Namespace="System.DirectoryServices" %> en haut de ma page ca fonctionne, enfin je n'ai plus d'erreur.
Maitenant il faut que je vérifie si ma connexion se fait bien car lorsque j'appelle la fonction par un clik sur bouton
Sub Button1_Click(sender As Object, e As EventArgs)
    CherchePersonne("Nomdelapersonne")
    End Sub

Rien ne se passe.
Avez vous une idée ?

Merci

RM

Commentaire de broyer le 25/10/2004 18:43:22

Je n'ai qu'un mot à dire... Merci !

Commentaire de molkin le 08/11/2004 20:35:55

Aaaah comprend pas... j'ai le message que tout le monde a : "Type 'DirectoryEntry' is not defined." Grrrr.

Je n'utilise pas visual Studio, donc je ne sais pas ou je dois ajouter System.DirectoryServices.dll.

Je l'ai copié dans le repertoire "bin" de l'appli.
J'ai saisi : <%@ Import Namespace="System.DirectoryServices" %>

Mais toujours pareil...
Si quelqu'un a une petite idée... MERCI d'avance !

Commentaire de molkin le 08/11/2004 20:37:37

Desolé, mon navigateur, a un peu planté sur ce coup... En esperant qu'un admin supprime les doublons... Thanks

Commentaire de molkin le 08/11/2004 22:54:43

Bon j'ai trouvé a peu près une reponse sur ce site : http://www.developer.com/lang/other/print.php/10942_982451_4

Rajouter :

<%@ Import Namespace="System.DirectoryServices" %>
<%@ Assembly Name="System.DirectoryServices" %>

Permet de savoir ce qui ce passe pendant le chargement de la dll. et les divers repertoires ou .net framework recherche la dll.

Dans mon cas il fallait creer manuellement un repertoire et placer la dll a l'interieur.

ça marche mieux maintenant, meme si j'ai encore des bugs... mais c'est une autre histoire.

Merci @tout

Commentaire de myroots le 17/02/2005 12:31:20

O que c bien trouvé com solution ! sincères Félicitations  Fabrice !

je n'ai pas encore testé cette jolie source, mai elle me parrait parfaite pour ce que j'ai a mettre en oeuvre.

Malheureusement, il me manque une information...

J'aurai besoin de récupérer le login que saisi le user au demarrage de la sesssion, pour ensuite aller voir à quel groupe il appartient...

en gros ma question c'est :

comment puis je savoir quel est le user de la session sous laquelle tourne mon appli ...?

ca me permettra de définir a quel groupe appartien le user pour définir ses accès à l'application que je developpe... (ca m'éviterai d'avoir un 're-login' specifique pr l'appli)

Merci d'avance :-)

MyRooTs

Commentaire de myroots le 17/02/2005 14:21:59

Des recherches plus approfondies sur le sujet m'on données ma réponse :

http://www.vbfrance.com/forum.v2.aspx?ID=11663

sur un site code-source en plus ;-)

je sais, j'ai pas l'air con à me répondre,
mais bon si qq peu economiser d recherches grace a ces quelques lignes

Commentaire de Tanis49 le 04/07/2005 15:59:39

Félicitation ta source fonctionne très bien (je l'utilise Merci ;) )
Mon soucis est de trouver la liste des "searcher.PropertiesToLoad.Add " comme "cs" ect...
ce ne sont pas les champs de l'active directory? ...
pourrai tu m'indiquer ou chercher, parce que la je tourne un peu en rond...  

Commentaire de garnier54 le 30/03/2007 15:34:35

merci pour ton code
j'ai juste un probleme avce le code qui plante quand la zone est vide
malgre le test. Avez vous une solution

suis en framework v2

merci

Commentaire de diabolo72 le 03/10/2007 14:07:31

bonjour,
je suis vraiment un débutant en asp.net et j'ai éssayé votre solution pour récupéré des informations de l'AD seulement ça ne marche pas et je tourne en rond je ne comprend pas pourquoi cela ne marche pas! (je suis en train de faire un site utilisant l'AD.) Pourriez vous me fournir le projet complet, cela m'aiderai beaucoup pour mon travail.
merci de votre compréhension

Commentaire de trialman53 le 06/05/2008 08:48:19

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.

Commentaire de imedo le 10/06/2008 08:42:57

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

Commentaire de Kikuts le 25/08/2009 10:05:53

@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 ^^

Commentaire de Kikuts le 25/08/2009 10:16:14

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 ^^

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales