Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J'aurais aimé savoir si vous aviez déjà utilisé le Zend_Auth_Adapter_Http ?
Je souhaite en vain l'utiliser en mode digest mais rien n'y fait.
Je stocke dans le fichier password,
echo 'user:realm:' . md5('user:realm:test');
A savoir, le user, le domaine, et le hash md5 du user, domaine, password séparé par :.
Le code pour l'utiliser:
$path = 'application/passwd.txt'; $digestResolver = new Zend_Auth_Adapter_Http_Resolver_File($path); $config = array( 'accept_schemes' => 'digest', 'realm' => 'realm', 'digest_domains' => '/account', 'nonce_timeout' => 3600, ); $adapter = new Zend_Auth_Adapter_Http($config); $adapter->setDigestResolver($digestResolver); $adapter->setRequest($this->_request); $adapter->setResponse($this->_response); $result = $adapter->authenticate(); if (!$result->isValid()) {
Me renvoie toujours faux que ce soit avec IE 7 ou FF 2 en accédant à http://monsite.com/account
Sinon, j'ai tenté le mode basic et idem avec dans le fichier des mots de passe :
echo 'user:realm:' . base64_encode('test');
Je comprends pas.
cortex
Hors ligne
J'ai cherché un peu plus et en fait la documentation est érroné sur la partie basic. Le mot de passe doit etre en clair dans le fichier passwd et non encodé en base64.
Ceci dit, j'aimerais que le mode digest fonctionne, si vos essais ont été concluants je suis preneur.
cortex
Hors ligne
Tous mes essais Digest fonctionnent, je ne vois pas trop ce qui ne va pas dans ton code, bizarre, peut etre la requête est-elle altérée , as tu vérifié qu'elle possédait bien l'en-tête Authorization: et que celui-ci avait bien la valeur attendue ?
Pour le base64, ce n'est pas une erreur, l'adaptateur d'attend en effet à recevoir le mot de passe base64 encodé, cependant l'adaptateur le base64_decode() avant , donc tu na pas besoin de l'encoder.
Hors ligne
J'ai bien l'entete Authorization. Par contre, si pour le cas du mode basic, c'est facile de vérifier la valeur attendue. Pour le mode digest, ça l'est nettement moins. Tu me confirmes au moins que je ne me trompe pas dans la mise en place, que le formalisme de mon fichier est bien celui qu'il faut adopté ?
Dernière modification par cortex (24-06-2008 14:16:10)
Hors ligne
Après d'autres essais, ça a fonctionné comme par magie.
Par contre, de temps à autres, IE comme FF me redemande le login/password. FF me préremplit les champs si j'avais fait sauvegarder le mot de passe, mais IE lui ne le fais pas. Les champs sont remis à blanc à chaque fois, ce qui est gênant dans certain cas.
Le comportement semble aléatoire, et si c'est au bout d'un timeout donné, je n'arrive pas à savoir lequel.
Ma configuration est la suivante :
$config = array( 'accept_schemes' => 'digest', 'realm' => 'genev2', 'digest_domains' => '/account', 'nonce_timeout' => 3600 );
Hors ligne