Fonction ASP de recherche d’un utilisateur Active Directory
<% Function RechercheUtilisateur(utilisateur, attribut) 'Déclaration des variables Dim objConn, objRS Dim Base, Filtre, Scope, Cmd Dim ServeurAD, CompteAD, PwdAD, OU, DC, AttributFiltre 'Paramétrage ServeurAD = "127.0.0.1" 'Machine hébergeant Active Directory CompteAD = "DOMAINE\admin.ad" 'Utilisateur autorisé à interroger Active Directory PwdAD = "********" 'Mot de passe de cet utilisateur OU = "OU=Utilisateurs" 'OU à interroger DC = "DC=domaine,DC=fr" 'DC à interroger AttributFiltre = "sAMAccountName" 'Filtre de recherche de l'utilisateur 'Connexion à l'annuaire Active Directory Set objConn = CreateObject("ADODB.Connection") objConn.Provider = "ADsDSOObject" objConn.Properties("User ID") = CompteAD objConn.Properties("Password") = PwdAD objConn.Properties("Encrypt Password") = true objConn.Open 'Création de la requête if attribut="" then 'Permet la recherche simple de l'utilisateur (sans recherche d'attribut) attribut = "sAMAccountName" end if Base = "<LDAP://" & ServeurAD & "/" & OU & "," & DC & ">" Filtre = "(" & AttributFiltre & "=" & utilisateur & ")" Scope = "subtree" Cmd = Base & ";" & Filtre & ";" & attribut & ";" & Scope set objRS = Server.CreateObject("ADODB.Recordset") set objRS = objConn.Execute(Cmd) If objRS.RecordCount = 0 Then 'Aucun utilisateur trouvé RechercheUtilisateur = false Else if IsNull(objRS(attribut)) then 'Utilisateur trouvé, attribut recherché vide RechercheUtilisateur = "NULL" else if attribut="sAMAccountName" then 'Utilisateur trouvé, pas d'attribut recherché RechercheUtilisateur = true else 'Utilisateur trouvé, attribut recherché non-nul RechercheUtilisateur = objRS(attribut) end if end if End If 'Fermeture du recordset et de la connexion objRS.Close objConn.Close End Function %>
Exemple de recherche avec un attribut en paramètre :
<% Response.Write "E-mail : " & RechercheUtilisateur("utilisateur.alpha", "mail") %>
Résultat :
E-mail : utilisateur.alpha@domaine.fr
Exemple de recherche « simple » :
<% Response.Write "Utilisateur existant : " if RechercheUtilisateur("utilisateur.alpha","")=true then Response.Write "oui" else Response.Write "non" end if %>
Résultat :
Utilisateur existant : oui

ça sucks ASP, Ruby ça rox :-)
En Ruby, c’est tellement plus simple :
print « E-mail : utilisateur.alpha@domaine.fr« ;
print « Utilisateur existant : oui »;
:-D
C’est exactement le script que je recherche
Par contre je bloque sur => set objRS = Conn.Execute(Cmd)
Il me dit « Variable non définie: ‘Conn’ »
Si je la définie, il me dit « Objet requis: ‘Conn’ »
Je suis un peu perdue !
Au temps pour moi Maelle, petite erreur dans le script :
set objRS = Conn.Execute(Cmd)
=>
set objRS = objConn.Execute(Cmd)
Voilà :-)
Bonjour,
J’ai un petit souci sur set objRS = objConn.Execute(Cmd)
cela me renvoi une erreur
Active Directory error ’80040e37′
There is no such object on the server.
Que dois-je faire ? Merci