Bonjour à tous,

Après beaucoup de lectures de tutos sur Zend_auth, j'ai commencé à coder.

Voila, je débute sur zf c'est la première fois que je fais de l'authentification et d'autant plus avec Zend .

Quand je rafraîchis la page, cela me met An error occurred Application error.

Voici mon code.

Dans le controller:

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
 
$username = $this->_request->getParam('username');
        $password = $this->_request->getParam('password');
         // Instanciation de la classe Zend_Auth
        $auth = Zend_Auth::getInstance();
 
        $config = new Zend_Config_Ini('../application/config/application.ini','ldap');
        $log_path = $config->ldap->log_path;
        $options = $config->ldap->toArray();
        unset($options['log_path']);
        // Paramètres LDAP
 
        // Définition de l'adaptateur d'authentification
            $adapter = new Zend_Auth_Adapter_Ldap($options,$username,$password);
            $resultat = $auth->authenticate($adapter);
 
        if (!$resultat->isValid()) {
            // Echec de l'authentification ; afficher pourquoi
            foreach ($resultat->getMessages() as $message) {
                echo "$message\n";
            }
        } else {
            // Authentification réussie ; l'identité ($identifiant) est
            // stockée dans la session
             $resultat->getIdentity() === $auth->getIdentity();
             $resultat->getIdentity() === $username;
        }
 
    }
le code de mon fichier conf:

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
38
39
40
41
42
43
 
[production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
phpSettings.date.timezone = "Europe/Paris"
resources.db.adapter = "PDO_MYSQL"
resources.db.params.host = "blabla"
resources.db.params.username = "root"
resources.db.params.password = "mdp"
resources.db.params.dbname = "blabla"
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
 
 
 
 
[staging : production]
 
[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
 
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
phpSettings.date.timezone = "Europe/Paris"
 
 
[ldap]
host = "adresse"
useStartTls = true
accountDomainName = "blabla"
accountDomainNameShort = "blabla"
accountCanonicalForm = 3
username = "CN=blabla,DC=blabla,DC=blabla,DC=blabla"
password = "Azerty12*"
baseDn = "CN=blabla,DC=blabla,DC=blabla,DC=blabla"
Apparemment, c'est mieux de mettre la config ldap dans un fichier. Et donc avant ce bout de code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
$config = new Zend_Config_Ini('../application/config/application.ini','ldap');
        $log_path = $config->ldap->log_path;
        $options = $config->ldap->toArray();
        unset($options['log_path']);
j'avais mis cela:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
$options = array(array(
                'host' => 'adresse',
                'accountDomainName' => 'blabla',
                'accountDomainNameShort' => 'blabla',
                'accountCanonicalForm' => 3,
                'username' => 'uid='.$username.',CN=blabla,DC=blabla,DC=blabla,DC=blabla',
                'password' => $password,
                'baseDn' => 'CN=blabla,DC=blabla,DC=blabla,DC=blabla',
                'bindRequiresDn' => false
                ));

l'erreur affichée était la suivante :


Invalid credentials 0x31 (Invalid credentials; 80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db0): uid=blabla,CN=blabla,DC=nsoblablac,DC=obiblablaane,DC=blablal host=adresse,accountDomainName=blabla.blabla.blabla,accountDomainNameShort=NSOC,accountCanonicalForm=3,username=uid=QKVX0524,CN=QKVX0524,DC=nsoc,DC=obiane,DC=local,password=*****,baseDn=CN=Users,DC=blabla,DC=blabla,DC=local,bindRequiresDn= blabla authentication failed: 0x31 (Invalid credentials; 80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db0): uid=blabla,CN=blabla,DC=blabla,DC=blabla,DC=blabla.

Le fichier conf est application.ini qui se trouve comme à l'habitude dans /application/config/application.ini.
Je ne comprends absolument pas d'où vient l'erreur.
J'espère que cela est compréhensif.
J'ai lu pas mal de tutos mais soit ils ne sont pas complet ou il y a des erreurs, ou encore mal expliqués.
Pourriez vous m'aider s'il vous plaît ?

Merci d'avance.

Cordialement,