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 :

ldap_search(): Server is unwilling to perform


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut ldap_search(): Server is unwilling to perform
    Bonjour à tous,

    Voilà je suis entrain de créer une petite appli de type annuaire WEB LDAP sensée s'intégrer à l'intranet de la société.

    Jusqu'à présent tout allait bien, j'ai réalisé la partie connexion à l'application liée à la connexion au LDAP pour un utilisateur.
    J'arrive à présent à devoir récupérer les infos de l'utilisateur connecté dans le LDAP et là soucis, ldap_search() ne fonctionne pas.

    Je suis quasi convaincu que mon code est bon, mais je ne trouve pas la raison pour laquelle cela ne marche pas voici ma fonction sensée récupérer les infos dont j'ai besoin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function getProfile(){
     
        include('setLDAP.php');//get connection to LDAP : works; name : $ldap
        $ldaptree = "ou=people,dc=myCompany,dc=com";
        $filter="(uid=".$_SESSION['user'].")";
        $justthese = array("sn","givenname","mail","employeetype");
     
        $result = ldap_search($ldap,$ldaptree,$filter,$justthese) or die ("Error in search query: ".ldap_error($ldap));
        $info = ldap_get_entries($ldap, $result);
     
        echo $info["count"]." entries returned\n";
    }
    L'erreur est la suivante : Warning: ldap_search(): Search: Server is unwilling to perform
    Merci d'avance pour votre aide, bonne journée

  2. #2
    Membre averti
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Points : 421
    Points
    421
    Par défaut
    Je pars de Zéro
    Code php : 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
    38
    39
    40
    41
    42
    /** * Test en remplaçant  $domain_name, $server_name, $user_name et $user_password par des données valides
     * Résultat concluent à toi de jouer
     */
    define('DOMAIN_FQDN', $domain_name); // Domaon
    define('LDAP_SERVER', $server_name); // Server AD
    $user = strip_tags($user_name) . '@' . DOMAIN_FQDN; // nom utilisateur sans @domain_name
    $pass = stripslashes($user_password); // Mot de passe utilisateur
    $conn = ldap_connect("ldap://" . LDAP_SERVER . "/"); // Connexion au serveur 
     
     
    // Construction des paramèters de connexion
    $bind = @ldap_bind($conn, $user, $pass);
     
     
    //ldap_get_option($conn, LDAP_OPT_DIAGNOSTIC_MESSAGE, $extended_error);
     
     
    if ($bind) {
        $base_dn = array("CN=Users,DC=" . join(',DC=', explode('.', DOMAIN_FQDN)),
            "OU=Users,OU=People,DC=" . join(',DC=', explode('.', DOMAIN_FQDN)));
     
     
        $result = ldap_search(array($conn, $conn), $base_dn, "(cn=*)");
     
     
        if (!count($result))
            $this->err = 'Impossible de se connecter: ' . ldap_error($conn);
     
     
        else {
            foreach ($result as $res) {
                $info = ldap_get_entries($conn, $res);
     
                for ($i = 0; $i < $info['count']; $i++) {
                    if (isset($info[$i]['userprincipalname']) AND strtolower($info[$i]['userprincipalname'][0]) == strtolower($user)) {
                        var_dump($info[$i]);                    echo '<br>';
                        var_dump($info[$i]['userprincipalname']);
                    }
                }
            }
        }
    }
    A toi de jouer +1 je suppose.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci de ta réponse, mais je ne peux tout refaire et en plus je n'utilise pas de serveur AD donc la moitié de ton code ne marchera pas pour moi.

    Je te joins les éléments qu'il te manque pour que tu vois mon code, mon but serait plus de corriger l'erreur que de tout refaire.

    Fichier connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $ldap_host = "X.X.X.X";//une ip
    $ldap_port = 3636; // le port
     
    $ldap = ldap_connect($ldap_host,$ldap_port) or die("Impossible de se connecter au serveur LDAP.");
    ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
    ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
    Fichier vérification authentification :
    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
     
    function authenticate($user, $password) {
    	include('../plugins/setLDAP.php');
    	if(empty($user) || empty($password)) return false;
     
    	// Active Directory DN
    	$ldap_dn = "ou=people,dc=myCompany,dc=com";
     
    	// Domain, for purposes of constructing $user
    	$ldap_usr_dn = 'uid='.$user.",".$ldap_dn;
     
    	// verify user and password
    	if($bind = @ldap_bind($ldap, $ldap_usr_dn, $password)) { // $ldap qui est la variable de connexion dans le fichier précédent 
     
    			session_start();
     
    			$_SESSION['user'] = $user;
    			return true;
     
    	} else {
    		// invalid name or password
    		return false;
    	}
    }
    Et enfin fichier avec les fonctions qui vont me permettre la recherche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function getProfile(){
     
        include('setLDAP.php');//get connection to LDAP : works; name : $ldap
        $ldaptree = "ou=people,dc=myCompany,dc=com";
        $filter="(uid=".$_SESSION['user'].")";
        $justthese = array("sn","givenname","mail","employeetype");
     
        $result = ldap_search($ldap,$ldaptree,$filter,$justthese) or die ("Error in search query: ".ldap_error($ldap));
        $info = ldap_get_entries($ldap, $result);
     
        echo $info["count"]." entries returned\n";
    }
    Une piste : cela peut il venir du fait que je n'encode pas mon mot de passe dans le php alors qu'il est encodé dans le ldap ?

  4. #4
    Membre averti
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Points : 421
    Points
    421
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    include('setLDAP.php');//get connection to LDAP : works; name : $ldap
    Il est où?

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Oui la fonction authenticate fonctionne.

    Le fichier setLDAP.php est en fait le premier code que j'ai mis celui qui établit la connexion et qui la stocke dans $ldap.

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/06/2011, 08h28
  2. Réponses: 3
    Dernier message: 17/01/2011, 15h18
  3. [LDAP] ldap_search, uidNumber en php
    Par sedannais dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 10/07/2007, 17h14
  4. [Sécurité] php + ldap
    Par XtofRoland dans le forum Langage
    Réponses: 2
    Dernier message: 23/01/2006, 12h41
  5. [Sécurité] PHP LDAP
    Par ripou dans le forum Langage
    Réponses: 2
    Dernier message: 24/10/2005, 18h00

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