begin process at 2012 05 27 04:27:52
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > [ASP] - ACTIVE DIRECTORY - TESTER (RÉCURSIVEMENT) SI UN UTILISATEUR EST DANS UN CONTAINER CN...

[ASP] - ACTIVE DIRECTORY - TESTER (RÉCURSIVEMENT) SI UN UTILISATEUR EST DANS UN CONTAINER CN...


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Niveau :Débutant Date de création :25/04/2003 Date de mise à jour :25/04/2003 10:37:43 Vu :32 911

Auteur : meech

Ecrire un message privé
Site perso
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

 Description

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

Source

  • <%
  • ' 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
  • %>
<%
' 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
%>



 Sources de la même categorie

Source avec Zip Source avec une capture OBJETS IMBRIQUÉES EN TABLEAU (EN VBSCRIPT OU ASP) par internetdev
Source avec Zip GESTION DES SKIN par youdream
UTILISATION DE FTP.EXE DE WINDOWS EN ASP par Nicolas_kojack
FONCTION SIMPLE POUR ALTERNER LES COULEURS DES LIGNES D'UN T... par pakito_77
Source .NET (Dotnet) COMMENT PASSER UN PARAMÈTRE C# À FLASH ? par zigxag

Commentaires et avis

Commentaire de fabrice69 le 25/04/2003 11:01:57 administrateur CS

Pour ceux que la manipulation en ASP des données de l'active directory intéresse, un lien très utile est celui-ci :
- http://www.microsoft.com/technet/treeview/default.asp?url=/technet/ScriptCenter/user/ScrUG146.asp

F___

Commentaire de Apolos le 27/05/2003 12:25:52

le code est clair, mais il ne marche pas chez moi, j'aimeais bien comprendre. Aucundes codes sur ce sujet (AD) ne marche, pourtant en VB ça marche

Commentaire de neferti le 09/02/2004 14:19:19

Bonjour,
Lors du test de cette page, le navigateur me dit qu'il y a une erreur de synthaxe sur la ligne

    Set dso = GetObject("LDAP:")

En cherchant sur d'autre site, j'ai vu qu'il pouvait y avoir des paramètres ????
Pouvez-vous m'aidez SVP.

merci

neferti

Commentaire de panza le 17/08/2004 10:34:09

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 meech le 04/01/2005 12:47:59

Salut Panza,

Ci-dessous une petite classe .NET en C# pour changer le mot de passe d'un utilisateur :

using System;
using System.DirectoryServices;

public class ChangePass {

public static void Main(string[] args) {

DirectoryEntry DirEntry;
DirEntry = new
DirectoryEntry("WinNT:\/\/domaine\/nomutilisateur,utilisateur");

DirEntry.Invoke("setPassword", "motdepasse");

DirEntry.CommitChanges();
}
}

Au cas où le C# n'est pas ton truc, voici sensiblement la même chose en ASP 3.0 :

Dim utilisateur_a_modifier
Dim nomutilisateur
Dim domaine
Dim nouveau_motdepasse
Dim ancien_motdepasse

domaine = "test.local"
nomutilisateur = "moi"
utilisateur_a_modifier = "nathalie"
ancien_motdepasse = "vieux_motdepasse"
nouveau_motdepasse = "neuf_motdepasse"

Set User = GetObject("WinNT://" & domaine & "/" & nomutilisateur & "," & utilisateur_a_modifier)

Call User.ChangePassword(ancien_motdepasse, nouveau_motdepasse)
User.SetInfo

En espérant que cela t'aide et en m'excusant du retard...

Commentaire de meech le 04/01/2005 13:13:10

Neferti,

Peut-être faut-il que tu spécifie le "dn" (distinguished name) dans la chaîne de connexion, du style :

Set dso = GetObject(“LDAP://cn=neferti,ou=admin,dc=neferti,dc=com”)

Mais je n'en suis pas certain...

Commentaire de idealyo le 05/04/2005 13:36:29

ca marche pas du tout chez moi...

Commentaire de idealyo le 05/04/2005 13:48:07

a quoi correspond
cn
dc
ou

Merci de ta réponse :)

Commentaire de fabrice69 le 05/04/2005 15:01:08 administrateur CS

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.

Commentaire de idealyo le 06/04/2005 09:35:06

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

Commentaire de fabrice69 le 06/04/2005 09:51:07 administrateur CS

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

Commentaire de idealyo le 06/04/2005 10:08:17

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<br>")
%>


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 :(

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 1,966 sec (4)

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