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


Commentaires (4)

Nicolas26 juillet 2010 à 23 h 55 min

ç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

Maelle25 août 2010 à 18 h 40 min

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 !

Nicolas4 septembre 2010 à 10 h 36 min

Au temps pour moi Maelle, petite erreur dans le script :

set objRS = Conn.Execute(Cmd)

=>

set objRS = objConn.Execute(Cmd)

Voilà :-)

Jean-Marc24 janvier 2012 à 15 h 27 min

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

Laisser un commentaire

Votre commentaire