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