Bonjour, j'ai mis en place une authentification http pour protéger un dossier, la méthode basique (non cryptée) fonctionne mais digest (crypté en md5) ne fonctionne pas, pour crypter mon mot de passe j'ai utilisé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
<?php
echo md5('mon_mot_de_passe');
?>
que j'ai ensuite copié dans mon fichier password :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
identifiant:Administration:mont_mot_de_passe_crypté
Voici dans mon fichier Module.php :

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
44
45
46
47
class Module {
 
    public function onBootstrap(MvcEvent $e) {
        $sharedEvents=$e->getApplication()->getEventManager()->getSharedManager();
        $sharedEvents->attach(__NAMESPACE__, MvcEvent::EVENT_DISPATCH, array($this, 'authHttp'));
    }
 
    public function authHttp(MvcEvent $e) {
         $config=array(
            'accept_schemes'=>'basic digest',
            'realm'=>'Administration',
            'digest_domains'=>'/admin',
            'nonce_timeout'=>3600
        );
        $adapter=new Http($config);
        //
        $basicResolver=new FileResolver();
        $basicResolver->setFile(__DIR__.'/password');
 
        $digestResolver=new FileResolver();
        $digestResolver->setFile(__DIR__.'/password');
 
        $adapter->setBasicResolver($basicResolver);
        $adapter->setDigestResolver($digestResolver);
 
        $request=$e->getRequest();
        $response=$e->getResponse();
 
        assert($request instanceof \Zend\Http\Request);
        assert($response instanceof \Zend\Http\Response);
 
        $adapter->setRequest($request);
        $adapter->setResponse($response);
 
        $result=$adapter->authenticate();
        if(!$result->isValid()) {
            $response->setContent('Access denied');
            $response->setStatusCode(\Zend\Http\Response::STATUS_CODE_401);
            $e->setResult($response);
            return FALSE;
        } else {
            return TRUE;
        }        
    }
 
[...]
}
Merci de votre aide !