IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Acl & Zend_Auth PHP Discussion :

[Zend_Auth_Adapter_Http][1.9.5]Basic/digest : header de request perdus ? [ZF 1.9]


Sujet :

Zend_Acl & Zend_Auth PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Par défaut [Zend_Auth_Adapter_Http][1.9.5]Basic/digest : header de request perdus ?
    Bonjour,

    Je tente de mettre en place une authentification HTTP digest pour mon application. Ci-dessous mon code (tiré directement de la doc Zend) :

    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
     
     
          $logger = Zend_Registry::get('logger');
     
          $config = array(
              'accept_schemes' => 'digest',
              'realm'          => 'zks',
              'digest_domains' => '/',
              'nonce_timeout'  => 3600,
          );
     
          $adapter = new Zend_Auth_Adapter_Http($config);
     
          //$basicResolver = new Zend_Auth_Adapter_Http_Resolver_File();
          //$basicResolver->setFile(dirname(__FILE__).'/../security/basicPasswd.txt');
     
          $digestResolver = new Zend_Auth_Adapter_Http_Resolver_File();
          $digestResolver->setFile(dirname(__FILE__).'/../security/digestPasswd.txt');
     
          //$adapter->setBasicResolver($basicResolver);
          $adapter->setDigestResolver($digestResolver);
     
          $response = Zend_Controller_Front::getInstance()->getResponse();
          $request = Zend_Controller_Front::getInstance()->getRequest();
     
          assert($request instanceof Zend_Controller_Request_Http);
          assert($response instanceof Zend_Controller_Response_Http);
     
          $adapter->setRequest($request);
          $adapter->setResponse($response);
          //Authorization
          $result = $adapter->authenticate();
          if (!$result->isValid()) {
     
              $logger->log('[preDispatch] IDENTITY : '.print_r($result->getIdentity(),true).' <br /><br />', Zend_Log::DEBUG);
     
              $logger->log('[preDispatch] ERREURS : '.print_r($result->getMessages(),true).' <br /><br />', Zend_Log::DEBUG);
     
              $logger->log("RESPONSE : ".print_r($response->getHeaders(),true).' <br /><br />', Zend_Log::DEBUG);
     
            $logger->log("REQUEST : ".$request->getHeader("Authorization").' <br /><br />', Zend_Log::DEBUG);
     
          }
    Lorsque je tente d'accéder à mon appli, le browser affiche bien la fenêtre de login. Lorsque je rentre mes login/password, il semble ne pas les reconnaître comme corrects et me réaffiche la fenêtre de login. J'ai essayé en basic et en digest et j'ai le même problème dans les deux cas.

    Voici l'output que j'obtiens sur la page :

    2010-01-29T14:16:41+01:00 DEBUG (7): [preDispatch] IDENTITY : Array ( )

    2010-01-29T14:16:41+01:00 DEBUG (7): [preDispatch] ERREURS : Array ( [0] => Invalid or absent credentials; challenging client )

    2010-01-29T14:16:41+01:00 DEBUG (7): RESPONSE : Array ( [0] => Array ( [name] => Www-Authenticate [value] => Digest realm="zks", domain="/", nonce="98112168bacad0dab7a0db892f127b2a", opaque="d75db7b160fe72d1346d2bd1f67bfd10", algorithm="MD5", qop="auth" [replace] => ) )

    2010-01-29T14:16:41+01:00 DEBUG (7): REQUEST :


    Côté fichiers contenant les données sur les users, j'ai :

    pour le basic :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    thomas:zks:thomas
    pour le digest :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    thomas:zks:ca53835d2a7e04669ccf2dd1410acbe4
    D'après l'output généré, il semble que la requête reçue par le serveur ne contient pas le header "Authorization". Pourtant, cette même requête contient bien ce header lorsque je sniff le réseau entre les deux. J'ai le problème sur Firefox comme sur IE.

    J'en suis venu à penser qu'il s'agirait peut-être d'un problème de configuration d'Apache qui empêcherait les requêtes de type authentification de garder leurs headers. Quelqu'un a-t-il déjà rencontré ce problème ? (Je travaille en local sur un Zend server)

    Merci d'avance pour votre aide.

  2. #2
    Membre averti
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Par défaut
    ok, je viens de trouver le problème.

    PHP est installé en script CGI sur l'Apache de Zend Server, ce qui cause le problème : voir cette doc

    Je n'ai pas le problème sous mon Xampp où PHP est installé en module...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/09/2013, 14h28
  2. [ZF 1.10] Zend_Auth_Adapter_Http test en mode basic
    Par oxomichael dans le forum Zend_Acl & Zend_Auth
    Réponses: 2
    Dernier message: 23/04/2012, 14h16
  3. [Security] authentification via url - Edit: basic/Digest comment ça marche ?
    Par malakan dans le forum Spring
    Réponses: 6
    Dernier message: 18/03/2010, 12h34
  4. Différences entre Delphi et Visual Basic ?
    Par Anonymous dans le forum Débats sur le développement - Le Best Of
    Réponses: 75
    Dernier message: 30/03/2009, 20h09
  5. Créer un interpréteur de langage inspiré du Basic
    Par Picasso dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 11/05/2002, 17h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo