Me voilà de retour avec mon problème d'authentification.
Finalement j'ai abandonné l'idée d'utiliser zend_ldap pour utiliser
une fonction beaucoup plus légère.
Je vous partage le code (qui fonctionne sa peut-être bien de préciser)
en espérant que sa puisse servir à quelqu'un.

class myLDAP extends sfGuardSecurityUser
{
  public static function checkLDAPPassword($username, $password)
  {
    $host = "ldap://intra.domaine.net";;
    $username = $username."@intra.domaine.net";
    $ldapconn = ldap_connect($host);
    if ($ldapconn)
    {
      $ldapbind = @ldap_bind($ldapconn, $username, $password);
      if ($ldapbind)
      {
        ldap_unbind($ldapconn);
        return true;
      }
      else
      {
        return false;
      }
    }
    else
    {
      return false;
    }
  }
}

Bonne année 2010 ++

On 29 déc 2009, 12:38, eddie <[email protected]> wrote:
> Bon j'ai trouvé pourquoi ma classe n'était pas chargé (je suis tombé
> dessus par hasard)
> je suis sous un environnement windows, j'utilise notepad++ comme
> éditeur.
> en éditant le fichier "myLDAP.class.php" j'ai remarqué en bas à droite
> de notepad++ à gauche du format ansi pour ce fichier il y avait marqué
> Macintosh alors que tous les autres fichiers (le peux que j'ai ouvert)
> sont marqués Dos\Windows !
> J'ai créé un nouveau fichier avec le même nom en faisant du copier/
> coller à présent il y a marqué Dos/Windows et sa fonctionne comme quoi
> ^^
>
> Bon maintenant il me reste plus qu'a créer la fonction
> checkLDAPPassword que je ne manquerai pas de coller ici à moins que
> quelqu'un me devance.
> Pour info j'ai lu sur un forum qu'il faut aussi avoir les users dans
> la bdd mais la vérification du mot de passe est effectué sur
> l'annuaire ldap.
>
> On 29 déc, 11:22, eddie <[email protected]> wrote:
>
> > Après le test suivant :
>
> > j'ai désactivé la sécurité sur le fichier "/main/config/
> > security.yml" :
>
> > default:
> >   is_secure: false
>
> > j'ai créé un module home chargé par défaut via le routing et dans
> > l'action j'ai le code suivant :
>
> > class homeActions extends sfActions
> > {
> >   public function executeIndex(sfWebRequest $request)
> >   {
> >     myLDAP::checkLDAPPassword('test', 'test');
> >   }
>
> > }
>
> > j'obtiens l'erreur suivante :
>
> > Fatal error: Class 'myLDAP' not found in ..\monprojet\apps\main\modules
> > \home\actions\actions.class.php
>
> > visiblement la classe myLDAP n'est pas chargé pourtant tout est nommé
> > correctement il me semble.
> > Les classes ne sont elles pas chargées automatiquement ?
>
> > /monprojet/apps/main/lib/myLDAP.class.php (class myLDAP extends
> > sfGuardSecurityUser)
>
> > ++
>
> > On 29 déc, 09:52, eddie <[email protected]> wrote:
>
> > > Re,
>
> > > Bon j'ai du neuf. Je viens de charger des fixtures pour le plugin
> > > sfguard et quand je me connecte avec un user qui existe dans la table
> > > sf_guard_user j'obtiens l'erreur suivante :
>
> > > Warning: call_user_func_array() [function.call-user-func-array]: First
> > > argument is expected to be a valid callback,
> > > 'myLDAP::checkLDAPPassword' was given in ..\monprojet\plugins
> > > \sfDoctrineGuardPlugin\lib\model\doctrine\PluginsfGuardUser.class.php
> > > on line 79
>
> > > C'est quand même bizarre que l'utilisateur doit exister dans la base
> > > de données pour lancer la fonction checkLDAPPassword non ?
>
> > > Par contre même avec la fonction suivante j'obtiens la même erreur :
>
> > >   public static function checkLDAPPassword($username, $password)
> > >   {
> > >     return true;
> > >   }
>
> > > ++
>
> > > On 28 déc, 16:07, eddie <[email protected]> wrote:
>
> > > > Bonjour,
>
> > > > Je suis en train de démarrer un projet avec symfony 1.4 j'ai installé
> > > > le plugin sfguard.
> > > > Le plugin sfguard est visiblement bien installé car les tables sont
> > > > générées dans la base de données et j'ai bien le formulaire de
> > > > connexion (je n'ai pas chargé les fixtures).
> > > > Maintenant je souhaite faire l'authentification via l'annuaire LDAP et
> > > > c'est là que je suis bloqué, je pense avoir fait le tour sur google à
> > > > ce sujet.
>
> > > > J'ai suivi les instructions marquées sur la documentation du plugin 
> > > > :http://www.symfony-project.org/plugins/sfDoctrineGuardPlugin
>
> > > > dans "/apps/main/config/app.yml" j'ai le code suivant :
>
> > > > all:
> > > >   sf_guard_plugin:
> > > >     check_password_callable: [myLDAP, checkLDAPPassword]
>
> > > > dans "/apps/main/lib/myLDAP.class.php" :
>
> > > > class myLDAP extends sfGuardSecurityUser
> > > > {
> > > >   public static function checkLDAPPassword($username, $password)
> > > >   {
> > > >     $user = LDAP::getUser($username);
> > > >     if ($user->checkPassword($password))
> > > >     {
> > > >       return true;
> > > >     }
> > > >     else
> > > >     {
> > > >       return false;
> > > >     }
> > > >     return true;
> > > >   }
>
> > > > }
>
> > > > Pour le moment la fonction checkLDAPPassword est celle proposé dans la
> > > > documentation de sfguard mais d'après ce que j'ai compris sur d'autre
> > > > site il faut utiliser une classe pour établir la liaison avec
> > > > l'annuaire.
> > > > J'ai repéré 2 classes "adLDAP" et "Zend_ldap", j'aurai une préférence
> > > > pour Zend_ldap car je pense que pour ce projet j'aurai besoin d'autres
> > > > librairies de Zend.
> > > > Donc je ne sais pas trop comment modifier ma fonction
> > > > checkLDAPPassword pour la faire fonctionner avec Zend_ldap.
>
> > > > J'ai ajouté l'ensemble des librairies de Zend dans "/lib/vendor/Zend/"
> > > > puis j'ai modifié le fichier "/config/ProjectConfiguration.class.php"
> > > > pour activer Zend (code récupéré dans un pdf) :
>
> > > > class ProjectConfiguration extends sfProjectConfiguration
> > > > {
> > > >   public function setup()
> > > >   {
> > > >     $this->enablePlugins(array(
> > > >       'sfDoctrinePlugin',
> > > >       'sfDoctrineGuardPlugin',
> > > >     ));
>
> > > >     // Chargement des librairies Zend
> > > >     set_include_path(sfConfig::get('sf_lib_dir').'/
> > > > vendor'.PATH_SEPARATOR.get_include_path());
> > > >     require_once sfConfig::get('sf_lib_dir').'/vendor/Zend/Loader/
> > > > Autoloader.php';
> > > >     Zend_Loader_Autoloader::getInstance();
> > > >   }
>
> > > > }
>
> > > > D'après quelques tests j'ai l'impression que la fonction
> > > > checkLDAPPassword n'est pas utilisé car avec le code suivant je ne
> > > > suis pas connecté :
>
> > > >   public static function checkLDAPPassword($username, $password)
> > > >   {
> > > >     return true;
> > > >   }
>
> > > > Merci d'avance de partager votre expérience sur le sujet !
> > > > ++

--

Vous recevez ce message, car vous êtes abonné au groupe Google 
Groupes Symfony-fr.
Pour envoyer un message à ce groupe, adressez un e-mail 
à [email protected].
Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse 
[email protected].
Pour plus d'options, consultez la page de ce groupe : 
http://groups.google.com/group/symfony-fr?hl=fr


Répondre à