1

Je n'arrive pas à comprendre comment fournir le challenge au serveur pour l'authentification. C'est une architecture RESTFul. De mon serveur, je retourne ceci:Authentification RESTFul après l'obtention d'un challenge du serveur

function authenticate() 
    { 
     $realm = 'Logging'; 
     $users = array('admin' => 'mypass', 'guest' => 'guest'); 
     if (empty($_SERVER['PHP_AUTH_DIGEST'])) 
     { 
      header('HTTP/1.1 401 Unauthorized'); 
      //header('WWW-Authenticate: Digest realm="'.$realm.'",qop="auth",nonce="'.uniqid().'",opaque="'.md5($realm).'"'); 
      echo json_encode(array("realm"=>$realm,"qop"=>"auth","nonce"=>uniqid(),"opaque"=>md5($realm)));   
      exit;  
     } 

     // analyze the PHP_AUTH_DIGEST variable 
     if (!($data = MyFunction::http_digest_parse($_SERVER['PHP_AUTH_DIGEST'])) || !isset($users[$data['username']])) 
     die('Wrong Credentials!'); 

     // generate the valid response 
     $A1 = md5($data['username'] . ':' . $realm . ':' . $users[$data['username']]); 
     $A2 = md5($_SERVER['REQUEST_METHOD'].':'.$data['uri']); 
     $valid_response = md5($A1.':'.$data['nonce'].':'.$data['nc'].':'.$data['cnonce'].':'.$data['qop'].':'.$A2); 

     if ($data['response'] != $valid_response) die('Wrong Credentials!'); 
     // ok, valid username & password 
     echo 'You are logged in as: ' . $data['username']; 
     exit; 
    } 

maintenant sur le client, comment puis-je fournir le défi contient le nom d'utilisateur et le mot de passe au serveur? Dites-moi simplement la procédure que je dois effectuer avec les valeurs obtenues à partir du serveur.

+0

quel est le client (un service, une application, un navigateur Web, etc.)? –

+0

Sur le serveur, j'utilise la récréation, sur le client j'utilise GWT, en fait, je juste les procédures nécessaires pour effectuer l'authentification ?? – Noor

Répondre

0

Il existe une question similaire sur la façon de compléter le processus d'authentification en utilisant AJAX and jQuery, ce qui peut aider à combler le fossé. Quelle structure utilisez-vous du côté serveur?