IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Sécurité] probleme intranet php ldap


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 53
    Par défaut [Sécurité] probleme intranet php ldap
    Bonjour a tous,

    Je suis en trin de développer une application intranet php ldap avec comme annuaire active directory. Mais j'ai un problème au niveau de ma fonction qui retourne tous mes utilisateurs.

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    // Eléments d'identification LDAP
    $ldaprdn  = 'Administrateur';    //nom d'administrateur du domaine 
    $ldappass = '';           //mot de passe
     
    //Connexion au serveur LDAP
    $ldapconn = ldap_connect("chs-stalban.fr")    or die("Impossible de se connecter au serveur LDAP.");
    if ($ldapconn) 
    {    
    //Connexion au serveur LDAP
        $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);   
     
     if ($ldapbind) {        
     echo "Connexion LDAP réussie";    
    	ldap_search($ldapconn, "dc=chs-stalban,dc=FR","objectclass=person");
     } else {
     echo "Connexion LDAP échouée";    
     }        
     }
    Erreur retourné:

    Warning: ldap_search(): Search: Operations error in c:\php\index.php on line 15 // c'est à dire a la ligne du ldap_search(...)


    merci de vos suggestions

  2. #2
    Membre éclairé Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Par défaut
    Il semble que tu ne mettes pas de restriction ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $restriction = array('uid', 'sn', 'givenName');
    		$ldap_query =ldap_search($ldapconn, "dc=chs-stalban,dc=FR","objectclass=person", $restriction);
    Essai d'en mettre une ... il y a peut etre des brides sur ton serveur LDAP qui t'empechent de faire des requetes si vastes ...

  3. #3
    Membre averti
    Inscrit en
    Février 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 53
    Par défaut
    je suis qu'un novice en php

    Non, je n'est pas mis de restriction dans mon code.

    A quoi correspond chaque paramètre de la variable restriction pour savoir quoi y mettre pour pouvoir tester ceci?

    merci de ta reponse[/code]

  4. #4
    Membre averti
    Inscrit en
    Février 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 53
    Par défaut
    je suis qu'un novice en php

    Non, je n'est pas mis de restriction dans mon code.

    A quoi correspond chaque paramètre de la variable restriction pour savoir quoi y mettre pour pouvoir tester ceci?

    merci de ta reponse

  5. #5
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Par défaut
    salut

    ldap_search retourne un identifiant de résultat, ou bien FALSE en cas d'erreur.

    voici un exemple d'un code que j'exploite en développement, et qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    public function authentifie($user='',$pass='') {
     
       if(empty($pass)) throw new Exception("Mot de passe obligatoire");
       $user="cn=".$user;
       $nom='';
       $domaine="ou=info,ou=md1,o=orga";
     
       // connexion
       $ds=ldap_connect("xx.xx.xx.xx:389");
       if(!$ds) throw new Exception ("Connexion LDAP impossible");
     
       // setting
       $vs = ldap_set_option($ds,LDAP_OPT_PROTOCOL_VERSION, 3);
       if(!$vs) throw new Exception ("Impossible de modifier la version de protocole du serveur LDAP");
     
       $vs = ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
       if(!$vs) throw new Exception ("Impossible de modifier la version referrals du serveur LDAP");
     
       // recherche
       $read=ldap_search($ds,$domaine,$user);
       if(!$read) throw new Exception("recherche impossible");
     
       // recuperation des donnees
       $info=ldap_get_entries($ds,$read);
       $dn=$info[0]['dn'];
       if(empty($dn)) throw new Exception("Utilisateur non trouvé");
       $rep=$info[0]['fullname'];
       $nom=$rep[0]; 
       $cn=ldap_bind($ds,$dn,$pass);
       if(!$cn) throw new Exception ("Mot de passe invalide");
     
       // fermeture
       if(! ldap_close($ds)) throw new Exception ("Echec de fermeture connexion LDAP");
       return $nom;
     
    }
    bon, au départ, il s'agit d'une classe que je viens de modifier pour l'exemple...

  6. #6
    Membre averti
    Inscrit en
    Février 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 53
    Par défaut
    J'ai modifié ton code pour mon application ska_root mais j'ai un probléme doffet pour ces 2 lignes :

    $dn=$info[0]['dn'];
    $nom=$rep[0];

    message erreur:

    Notice: Undefined offset: 0

  7. #7
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Par défaut
    fais un print_r de $info STP...

  8. #8
    Membre averti
    Inscrit en
    Février 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 53
    Par défaut
    J'ai fait un print_r($info);

    et sa me donne sa :
    Array ( [count] => 0 )

    Celà veut-il dire qu'il ne trouve personne?
    Si oui comment celà se fait-il vu que j'ai des utilisateurs dans mon active directory

    Cordialement

  9. #9
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Par défaut
    je pense qu'il faut que tu vérifies ta chaine de connexion correspondant au DIT de active directory (Directory Information Tree), en l'occurence ce qui est contenu dans la variable $domaine dans ce code.

  10. #10
    Membre averti
    Inscrit en
    Février 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 53
    Par défaut
    Mon nom de domaine est bon vu que lorsque je modifie objectclass=person en ObjectClass=*, ce dernier me retourne des resultats mais ce n'est pas que des utilisateurs.

Discussions similaires

  1. [PostgreSQL] [PostgreSQL] Probleme entre PHP & PostgreSQL
    Par flo78 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 13/01/2006, 10h51
  2. [Sécurité] PHP LDAP
    Par ripou dans le forum Langage
    Réponses: 2
    Dernier message: 24/10/2005, 18h00
  3. [SGBD] Probleme Avec Php et Mysql
    Par junior258 dans le forum Installation
    Réponses: 2
    Dernier message: 20/09/2005, 10h39
  4. probleme postgresql php
    Par jbaudens dans le forum PostgreSQL
    Réponses: 10
    Dernier message: 14/04/2005, 12h46
  5. Réponses: 2
    Dernier message: 05/10/2004, 22h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo