Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] Re: problème ldap

Posted by axolotus on 11/01/2011 22:39

j'ai modifier le fichier comme ce-ci

 if ($bind) {
                //get connected user infos
                 if (ldap_bind($connect,$this->_params['ldapUser'], $this->_params['ldapPassword'])) {
                    if ($this->_params['ldapUser'] == '') {
                    $bind = ldap_bind($connect);
                }
                else {
                    $bind = ldap_bind($connect,$this->_params['ldapUser'], $this->_params['ldapPassword']);
                }   
                 if ($bind) {     
                    if (($search = ldap_search($connect, $this->_params['searchBaseDN'], $this->_params['uidProperty'].'='.$login,$this->_params['searchAttributes']))) {
                        if (($entry = ldap_first_entry($connect,$search))) {
                            $attributes = ldap_get_attributes($connect,$entry);
                            if($attributes['count']>0){
                                $user = new jAuthUserLDAP();
                                $this->setAttributesLDAP($user, $attributes);
                                $user->login = $login;
                                $user->password = '';
                                ldap_close($connect);
                                return $user;
                            }
                        }
                    }
                }
            }
            ldap_close($connect);
        }
        return false;
    }

Quand je me logue il y a une page blanche... :(

  [Opened] problème ldap

Reply #1 Posted by laurentj on 11/01/2011 23:07

mon patch indiquait que la ligne suivante devait être supprimée :

 if (ldap_bind($connect,$this->_params['ldapUser'], $this->_params['ldapPassword'])) {

  [Opened] Re: problème ldap

Reply #2 Posted by axolotus on 11/02/2011 15:52

Après une nuit de sommeil. Je me suis remis dessus. J'avais mal modifié la fonction effectivement.

Dans le fichier \jelix\lib\jelix\plugins\auth\ldap\ldap.auth.php J'ai du modifié d'autres lignes également pour que cela fonctionne : dans la fonction constructeur

//'uidProperty'       =>  'cn'
'uidProperty'       =>  'uid'

je ne pense pas que uidProperty soit modiié par le fichier de configuration auth.coord.ini.php mais je peux me tromper...:)

d'autre part dans la fonction verifyPassword

 public function verifyPassword($login, $password) {

        $connect = $this->_getLinkId();

        if ($connect) {
            //authenticate user
            $bind = @ldap_bind($connect, $this->_buildUserDn($login), $this->cryptPassword($password));
            
            if ($bind) {
            
              jLog::log("bind passe", "ldap");
                //get connected user infos
               
               if ($this->_params['ldapUser'] == '') {
                    $bind = ldap_bind($connect);
                }
                else {
                    $bind = ldap_bind($connect,$this->_params['ldapUser'], $this->_params['ldapPassword']);
                }
              
                if ($bind) {
                    if (($search = ldap_search($connect, $this->_params['searchBaseDN'], $this->_params['uidProperty'].'='.$login,$this->_params['searchAttributes']))) {
                        if (($entry = ldap_first_entry($connect,$search))) {
                        jLog::log("entry passe", "ldap");
                            $attributes = ldap_get_attributes($connect,$entry);
                            if($attributes['count']>0){
                                $user = new jAuthUserLDAP();
                                $this->setAttributesLDAP($user, $attributes);
                                $user->login = $login;
                                $user->password = $password;
                                ldap_close($connect);
                                return $user;
                            }
                        }
                    }
                }
            }
            else{jLog::log("bind passe pas", "ldap");
            }
            ldap_close($connect);
        }
        return false;
    }

dans cette fonction j'ai modifier cette ligne
$user->password = '';

en cette ligne

$user->password = $password;

Autrement il me refusait toujours l’accès et en effet en anonyme on ne peut pas avoir en réponse du serveur ldap le mot de passe... ce qui est la plus élémentaire des sécurités... je ne penses pas avoir commis de faille de sécurité qu'en penses-tu?

En tout cas je te remercie pour ton aide efficace et rapide. Tu me réconcilies un peu avec jelix. je vais attaquer le module acl et j'ai quelques appréhension...

  [Opened] problème ldap

Reply #3 Posted by laurentj on 11/02/2011 16:18

je ne pense pas que uidProperty soit modifié par le fichier de configuration auth.coord.ini.php

Si tu le met dans ce fichier, oui, cette propriété est modifiée. Les valeurs de ce tableau sont des valeurs par défaut, si elles n'existent pas dans le fichier ini. Il manque c'est vrai une entrée dans le fichier de conf fourni, mais rien ne t'empêche de la rajouter.

dans cette fonction j'ai modifier cette ligne $user->password = ''; Autrement il me refusait toujours l’accès

j'avoue ne pas voir le rapport entre cette ligne de code et le fait qu'il refuse l'accès, puisque là tu modifie un objet après que la connexion soit faite, que les éléments soient lu etc... Comment peut-il refuser l'accès après avoir.. accepter l'accès ?

  [Opened] Re: problème ldap

Reply #4 Posted by axolotus on 11/02/2011 17:00

Je ne peux pas te répondre??? la seule chose est que si je ne modifie pas cette ligne ça marche pas :( Je viens de refaire l'essai... et ça marche avec la modification...

Je ne sais pas comment jauth fait pour authentifier mais il regarde peut-être dans l'objet user qui lui est retourné par la fonction verifyPassword. Si le user à bien un login et un password dans ce cas il authentifie sinon il refuse l'authentification ?? c'est une hypothèse....

  [Opened] Re: problème ldap

Reply #5 Posted by laurentj on 11/02/2011 23:03

non, jauth ne fait rien à propos de password. l'authentification est considérée comme ok si verifyPassword renvoi un objet representant le user, ou false sinon. bref, tout est dans le verifyPassword.

 
Page
  1. Re: problème ldap