LDAP???

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : LDAP???

par sadeq » 14 oct. 2005, 13:03

tu ne peux pas faire une recherche directe en même temps sur deux noeuds distincts de l'arbre LDAP.
Autrement dit, les 2 sites que tu consulte sont différents et les unités d'organisation "Users" qui s'y trouvent aussi.

Donc logiquement, tu dois d'abord lancer une recherche dans un site, stocker les résultats dans un tableau global et ensuite refaire la recherche dans l'autre site et ajouter les résultats trouvés dans le tableau global.

A la fin de cette recherche multisites, le résultat se trouve dans le tabeau global.

Techniquemnt parlant, il te faut une fonction de recherche dans un site X donné qui retourne le résultat trouvé.

La signature d'une telle fonction peut être :
function chercher_utilisateurs ($ds, $site, $critère) {
//$d s: Connexion existante au domaine
//$site : site de recherche
//$critère : valeur recherchée

//la fonction retourne null par défaut et la liste des utilisateurs s'il ya résultat
return null;
}
Ton programme doit appeler cette fonction autant de fois que de sites à intérroger. Algorithme de style:
//Connexion au préalable à la racine LDAP
$ds = .....

//Interroger le 1° site
$critère = ?; //donner une valeur de recherche
$résultats [] = chercher_utilisateurs ($ds, "Cointrin", $critère) ;

//Interroger le second
$critère = ?; //donner si le critère doit changer
$résultats [] = chercher_utilisateurs ($ds, "madrid", $critère) ;

//le tableau $résultats contient alors tous les résulats des recherches
print_r($résultats);

par ruly » 14 oct. 2005, 11:35

//recuperation des utilisateurs:
$person = '';
$dn = "ou=Users,[b] o=Cointrin[/b]	";
$filtre="(&(objectclass=person)(cn=$person*))";
$restriction = array( "cn", "sn", "givenname", "objectclass=person");
$sr=ldap_search($ds, $dn, $filtre);
$info = ldap_get_entries($ds, $sr); 
donc comme ca ca marche... j'ai tout les utilisateurs de cointrin....

mais j'aimerais aussi ceux de madrid???

je rajoute
$dn = "ou=Users,[b] o=Cointrin[/b]	";
si je change o=cointrin par o= madridben ca marche juste pour mardid.

mais alors pour avoir les 2...

donc je peux pas avoir 2 groupes , c'est quant meme bizarre , non???

pourquoi je peux pas acceder en meme temps a mardid et cointrin???

par sadeq » 11 oct. 2005, 12:19

il me semble que le problème n'est pas attaché à la syntaxe PHP dans un premier temps.
Il faut d'abord nous dire si le site de madrid dispose d'une entrée LDAP (autrement dit : est qu'il existe en tant que domaine ou sous-domaine et quel est son chemin?)

Mais si tu dis que tu sais faire pour extraire les users d'un site, je vois pas pourquoi tu ne pourras le faire pour N sites. La question est connais tu le chemin LDAP des autres sites et existent-ils vraiment en tant qu'entrée LDAP.

par Cyrano » 11 oct. 2005, 12:06

Ok, attends, que je comprenne bien: tu disposes donc d'une liste: il s'agit en quelque sorte de la trier ?

Si c'est ça, à quoi ressemble cette liste (exemple bienvenu) et que dois-tu en faire au juste pour obtenir quoi en sortie (exemple tout aussi bienvenu)

par ruly » 11 oct. 2005, 11:41

Je visualise très mal le schéma de ton appli: disposes-tu de valeurs permettant de faire un test afin d'affecter madrid ou cointrin à ta variable ?
en fait je dois juste recupere dans une liste deroulante les users des differents endroit (cointrin ou madrid)... c juste ca mon probleme.... sinon ca marche nickel sauf que je dois faire apparaitre les gens de madrid et qu'ils n'apparaissent pas car je n'arrive pas a prendre les 2... j'arrive juste l'un ou l'autre separer mais les 2 ensemble je n'y arrive pas....

par Cyrano » 11 oct. 2005, 11:28

Je visualise très mal le schéma de ton appli: disposes-tu de valeurs permettant de faire un test afin d'affecter madrid ou cointrin à ta variable ?

par ruly » 11 oct. 2005, 11:18

en fait je dois affecter des utilisateurs qui sont dans un annuaire ldap avec des machines (ex: pc, ecran, etc...)

et au debut ben ca devait juste etre utile pour le siege de l'entreprise mais depuis qq jours on me dis qu'il faut aussi prendre en compte les utilisateur de madrid....

et la est mon probleme quand ya juste un o ca va mais quand je dois jouer avec plusieur ben je suis bloque...

par Cyrano » 11 oct. 2005, 11:14

non, effectivement, tu ne peut pas faire une affectation de valeur comme ça. il te reste la solution de mettre les vleurs dans un tableau indexé. Mais ça va modifier le traitement, je n'ai pas suivi le sujet depuis le début, mais l'alternative que je proposais n'est valable que dans un test genre if ou elseif.

par ruly » 11 oct. 2005, 11:11

marche pas:
$dn = "ou=Users, ((o=Cointrin) || (o=Madrid))";	



l'erreur c'est:

Code : Tout sélectionner

Warning: ldap_search(): Search: Invalid DN syntax in c:\program files\easyphp1-8\www\tag_it\application\inc\hardware\hardware_affect.php on line 89 Warning: ldap_get_entries(): supplied argument is not a valid ldap result resource in c:\program files\easyphp1-8\www\tag_it\application\inc\hardware\hardware_affect.php on line 90

par Cyrano » 11 oct. 2005, 11:08

 ((o=Cointrin) || (o=madrid)) 

par ruly » 11 oct. 2005, 11:01

je vais reutilise mon post pour poser la question car elle est un peu en rapport.

donc j'ai reussi a utiliser ldap mais la mon soucy c'est que la compagnie pour qui j'ai fait l'application a ouvert un nouveau bureau et comme par hasard ce nouveau bureau doit etre pris en compte dans ma recherche....

mais la je but.... je sais pas comment lui dire de cherche soit dans la root et de cherche que les user ou alors donner les compagnie dans lesquelle je dois cherche.

si qqn peut m'aider ca serait gentil.... merci 'davance


voiy mon code pour l'attaque de ldap:
//recuperation des utilisateurs:
$person = '';
$dn = "ou=Users,[b] o=Cointrin[/b]	";
$filtre="(&(objectclass=person)(cn=$person*))";
$restriction = array( "cn", "sn", "givenname", "objectclass=person");
$sr=ldap_search($ds, $dn, $filtre);
$info = ldap_get_entries($ds, $sr); 

la ou j'ai o = cointrin c justement la que je dois rajouter ma nouvelle compagnie.... mais je butte.

j'ai fait ((o=Cointrin)&(o=madrid)) ou des o=Cointrin or Madrid

mais j'ai chaque fois des erreur:

Code : Tout sélectionner

dap_search(): Search: No such object in c:\program files\easyphp1-8\www\tag_it\application\inc\hardware\hardware_affect.php on line 89

par lebyb » 28 juin 2005, 11:52

salut a tous , je suis interreser par la solutions , j ai le meme problem sauf que j ai installer apache2 php 5.04 et mysql 4.1 .
Selon les extensions que je choisi il les trouve et dautres pas !!!
Pourtant il sont tous au meme endroit .
Si la majorite de mes extension sont trouve sa veut dire qu il sait ou sont mes extensions ....
Pourquoi il ne trouve pas les autres:php_ldap et php_pdf entre autres .

par ruly » 22 juin 2005, 15:12

c bon je crois ke j'ai reussi

merci kan meme

:wink:

good day

par ruly » 22 juin 2005, 13:54

sur internet j'ai trouve ceci...

est ce ke qqn popurrait mâider a faire ce ki est demander a savoir compiler php et mettre ceci with-ldap[=DIR]??? (je sais pas ocmment on fait)

----------------------------------------------------------
Les versions par defaut de php ne supportent pas le protocole ldap. Il faut compiler php avec certaines options en parametres pour optenir une version compatible.

EXTRAIT DE LA DOC PHP DE NEXEN : ///////////////////////////////
8.53.2 Pré-requis

Vous devez télécharger et compiler les bibliothèques clientes LDAP, soit celles de University of Michigan ldap-3.3 package , soit le Netscape Directory SDK 3.0 ou OpenLDAP , pour compiler le support LDAP.

8.53.3 Installation de l'extention ldap :

Le support LDAP de PHP n'est pas activé par défaut. Vous devez utiliser l'option de configuration --with-ldap[=DIR] lorsque vous compilez PHP, où DIR est le répertoire d'installation du serveur LDAP.

Note aux utilisateurs Win32:
Afin d'activer ce module dans l'environnement Windows, vous devez copier les bibliothèques libsasl.dll depuis le dossier DLL de PHP/Win32 dans le dossier système SYSTEM32 de votre machine (par exemple : C:\WINNT\SYSTEM32 or C:\WINDOWS\SYSTEM32). Pour PHP <= 4.2.0, copiez libsasl.dll , pour PHP >= 4.3.0, copiez libeay32.dll et ssleay32.dll dans votre dossier système SYSTEM.

8.53.4 Configuration à l'exécution :

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini

Nom Par défaut Modifiable
ldap.max_links "-1" PHP_INI_SYSTEM
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set .

FIN DE L'EXTRAIT ///////////////////////////////////////////////////////////////

----------------------------------------------------------

au secours svpppppp

merci :wink:

par ruly » 21 juin 2005, 11:51

je me suis peut etre tromper en faisant le tout...

qqn peut me dire se kil faut faire depuis le debut pour pouvoir se connecter en ldap a un serveur annuaire...

j'ai easyphp1.7 et xp

je crois ke c mieux de recommencer du debut car chui perdu


merci