[asp] - active directory - tester (récursivement) si un utilisateur est dans un container cn...

Soyez le premier à donner votre avis sur cette source.

Snippet vu 35 589 fois - Téléchargée 36 fois

Contenu du snippet

Cette page vérifie si un utilisateur est dans un container d'un Active Directory.

Source / Exemple :


<%
' en paramètre :
' - le nom de connexion de l'utilisateur (propriété sAMAccountName d'une personne dans ActiveDirectory)
' - la requete complète du container

' resultat de la fonction :
' * 1 si l'utilisateur appartient au container
' * 0 si l'utilisateur n'appartient pas au container
' * -1 si la requete LDAP est invalide

function UserInCN(LogonUser, Chemin)
	' VARIABLES DE CONNEXION A L'ACTIVE DIRECTORY
	adUsername="utilisateur"
	adPassword="motdepasse"

	Dim dso
	Set dso = GetObject("LDAP:")
	
	Dim obj
	On Error Resume Next
	' CONNEXION A L'ACTIVE DIRECTORY
	Set obj = dso.OpenDSObject(Chemin, adUsername, adPassword, 1)
	if (Err.Number <> 0) then
		UserInCN = -1
		exit function
	end if
	
	' POUR CHAQUE MEMBRE TROUVE DANS LE CONTAINER (CN=...)
	for each item in obj.members
		' si le membre est un groupe                                
		if (item.Class = "group") then
			' alors on exécute de nouveau la fonction avec le nouveau chemin du container groupe
			resultat = UserInCN(LogonUser, item.Adspath)
			
			' lorsque le résultat de la fonction est vrai, 
			if resultat = 1 then 
				UserInCN = 1
				exit function
			end if
		end if
	
		' si le membre correspond à UserNameLogon alors la fonction retourne 1
		if lcase(item.sAMAccountName) = lcase(LogonUser) then
			UserInCN = 1
			exit function
		end if

	next
	Set obj = nothing
	Set dso = nothing
	UserInCN = 0
end function

' --- PROGRAMME PRINCIPAL
if (UserInCN("utilisateur", "LDAP://192.168.1.111/CN=Developpeurs,OU=Service informatique,DC=machine,DC=domaine") = 1) then 
	response.write "L'utilsateur appartient au container Developpeurs" & VbCrLf
else
	response.write "L'utilsateur n'appartient pas au container Developpeurs" & VbCrLf
end if
' --- FIN: PROGRAMME PRINCIPAL
%>

A voir également

Ajouter un commentaire

Commentaires

Messages postés
44
Date d'inscription
mercredi 16 juillet 2003
Statut
Membre
Dernière intervention
19 août 2006

Je cherche, je cherche ne t'inquiete pas pour ca, je t'en remercie...
<%
on error resume next
set dso = GetObject("LDAP:")
' set container = dso.OpenDSObject("LDAP://10.1.19.11/CN=frapp042_web,OU=Security,OU=FR_Groups,DC=fr,DC=nextiraone-eu,dc=ned", _
'"francois.peyronnet_segula@nextiraone.fr","Azerty01", 1)
set container = dso.OpenDSObject("LDAP://FRLOG001/CN=FRAPP042_WEB,OU=Applicatif,OU=FR_Groups,DC=fr,DC=nextiraone-eu,DC=ned", _
"leLogin","leMdp", 1)
if err <> 0 then
erreur = "Erreur lors la connexion de l'uilisateur '" & "future var" & "'\nNuméro de l'erreur : " & err.number & "'\nDescription de l'erreur : " & err.number
Response.Write(erreur)
else
Response.Write ("Page 1 --> si ca s'affiche tu fais parti de FR_STAFFS
")
%>


la ce bout de code marche, car lorsque je mets un groupe dont je n'ai pas l'accès ca me l'erreur...

donc la en gros ca marche, mais mon souci c'est de faire une requete LDAP qui m'affiche tous les utilisateurs d'un groupe...

Stp aide moi :(
Messages postés
1765
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
4
Commence par lire le cours et te renseigner sur le mode de fonctionnement de LDAP.
Etre stagiaire ne veut pas dire être idiot et refuser de chercher. La solution pour toi n'est pas que je te donne la réponse toute faite mais que tu la trouves par toi même.
Je rappelle que l'apprentissage est basé sur la recherche personnelle et non sur la copie de solution toute faite.

Bonne chance et bon stage.

Cordialement
Romelard Fabrice
Messages postés
44
Date d'inscription
mercredi 16 juillet 2003
Statut
Membre
Dernière intervention
19 août 2006

je dois faire une requete ldap sous asp, afin de voir si l'utilisateur a le droit d'ouvrir une page ou pas...
Code:

<%
Dim WsNet
Set WsNet = Server.CreateObject("Wscript.Network")
Response.Write "Bienvenue : "& Request.ServerVariables("WsNet.UserName")
%>


ensuite ce que j'aimerai faire, c'est interrogé LDAP afin de savoir si cet utilisateur fait partie d'un groupe ou pas.

Voila ne m'y connaissant en rien LDaP, étant un simple stagiaire, j'aurai besoin d'aide...

Pour l'instant j'aimerai juste faire une requete qui me liste tous les utilisateurs d'un groupe... donc
ou=FR_STAFFS
DC=fr,DC=nextiraone-eu,dc=ned

voila alors comment je m'y prends
Code:

set dso = GetObject("LDAP:")
set container = dso.OpenDSObject("LDAP://10.1.19.11/ou=FR_STAFFS,DC=fr,DC=nextiraone-eu,dc=ned", _
"unLoginpouvantallersurLdap","sonMdp", 1)

voila donc ma requête mais comment faire maintenant pour lister son contenu .

En esperant que quelqu'un pourra et voudra bien m'aider

ou bien m'aider adapter ton code, a la requete que je dois faire...

MErci
Messages postés
1765
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
4
C'est du standard LDAP :
DC = Domain Controler
OU = Organisation Unit
...

Un tutorial est disponible ici :
- http://www-sop.inria.fr/semir/personnel/Laurent.Mirtain/ldap-livre.html

Cordialement
Romelard Fabrice.
Messages postés
44
Date d'inscription
mercredi 16 juillet 2003
Statut
Membre
Dernière intervention
19 août 2006

a quoi correspond
cn
dc
ou

Merci de ta réponse :)
Afficher les 12 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.