S'authentifier sur une appli web en https

S'authentifier sur une appli web en https - PHP - Programmation

Marsh Posté le 26-05-2014 à 17:49:08    

Bonjour,
 
Je voudrais automatiser certaines actions sur une appli web qui nécessite, pour accéder au contenu, de s'authentifier en https. J'ai essayer avec la lib Simpletest, mais ça marche pas, cette lib semble avoir un pb avec le ssl (elle fait du tls à la place) :/
 
Est-ce vous connaitriez une lib en PHP permettant relativement facilement de se connecter en https (ssl:443) à uue appli web (avec, bien entendu, la possibilité de poster des formulaires en POST), svp ?
 
Merci par avance pour votre aide :jap:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 26-05-2014 à 17:49:08   

Reply

Marsh Posté le 27-05-2014 à 09:26:10    

Simpletest c'est pas juste pour les tests unitaire ?

Reply

Marsh Posté le 27-05-2014 à 10:20:31    

curl ?


---------------

Reply

Marsh Posté le 27-05-2014 à 10:52:32    

Pablo Escrobarbe a écrit :

Simpletest c'est pas juste pour les tests unitaire ?


Non, tu peux faire des tests d'intégration avec. En tout cas, moi, j'ai pu le faire pour une appli web il y a qq années, mais l'auth se faisait sans https.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 27-05-2014 à 10:56:33    


Oui, mais j'aurais bien aimé qq chose d'un peu plus haut niveau :/ Mais si y'a rien d'autre, ben j'essaierai...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 27-05-2014 à 10:57:21    

N'en sachant pas plus  sur ce que tu veux faire, je ne vais pas pouvoir être plus précis


---------------

Reply

Marsh Posté le 27-05-2014 à 14:02:24    

L'idée est de se connecter sur une application web (donc authentification via du https) puis, d'aller sur certaines pages et, en fonction, d'extraire quelques données bien identifiées et suivant la valeur de ses données faire quelques actions sur l'appli (ces actions se traduisant par le remplissage d'un formulaire et son envoi au serveur). Comme il s'agit d'actions répétitives, je me suis dit que ça serait plus pratique de les automatiser. On est assez proche de tests d'intégration d'une appli web ;) Le truc, c'est que je souhaite éviter de devoir passer par l'ouverture d'une instance d'un navigateur web quelconque (ça exclut du coup des outils comme AutoIt, Selenium...).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 28-05-2014 à 15:27:45    

Pouffff, je galère avec cURL pour la partie auth :cry:
 
Je me suis basé sur ce site : http://oseox.fr/curl/session.html
Et celui-là : http://www.dewep.net/Blog/Article-9/Utiliser-cURL-PHP


Message édité par rufo le 28-05-2014 à 15:55:34

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 28-05-2014 à 16:34:20    

J'ai trouvé ça :
http://unitstep.net/blog/2009/05/0 [...] ted-sites/
 
ça correspond non ?

Reply

Marsh Posté le 28-05-2014 à 16:49:56    

Moi aussi, j'ai trouvé cet article mais ça marche pas :( Je précise, j'ai fait la solution "moins secure"...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 28-05-2014 à 16:49:56   

Reply

Marsh Posté le 28-05-2014 à 16:56:27    

et tu as quoi comme erreur dans la log ?

Reply

Marsh Posté le 28-05-2014 à 16:58:15    

quel log ?
Moi, j'ai juste un false retourné suite au curt_exec :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 28-05-2014 à 17:35:45    

et curl_error /curl_errno ne te retourne rien ?
 
 
Car normalement tu devrais avoir une des erreurs de la libcurl http://curl.haxx.se/libcurl/c/libcurl-errors.html

Message cité 1 fois
Message édité par dreameddeath le 28-05-2014 à 17:38:52
Reply

Marsh Posté le 28-05-2014 à 20:23:25    

rufo a écrit :


Oui, mais j'aurais bien aimé qq chose d'un peu plus haut niveau :/ Mais si y'a rien d'autre, ben j'essaierai...


 
http://www.php.net/manual/fr/funct [...] php#108309
 
Bon après si t'as des besoins particuliers, ça peut ne pas être suffisant.

Reply

Marsh Posté le 02-06-2014 à 13:45:40    

czh a écrit :


 
http://www.php.net/manual/fr/funct [...] php#108309
 
Bon après si t'as des besoins particuliers, ça peut ne pas être suffisant.


Ca ressemble plus à une authentification http/https "apache" (via les header donc) et non à une authentification via un formulaire + une BD. J'ai testé malgré tout, sans succès :(


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 02-06-2014 à 13:50:05    

dreameddeath a écrit :

et curl_error /curl_errno ne te retourne rien ?
 
 
Car normalement tu devrais avoir une des erreurs de la libcurl http://curl.haxx.se/libcurl/c/libcurl-errors.html


connect() timed out! (code 28) -> ça veut juste dire que ma requête pour m'authentifier n'aboutit pas, non ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 02-06-2014 à 14:37:08    

rufo a écrit :


Ca ressemble plus à une authentification http/https "apache" (via les header donc) et non à une authentification via un formulaire + une BD. J'ai testé malgré tout, sans succès :(


 
Pour l'authentification par formulaire, il faut fournir les paramètres dans le corps de la requête POST, récupérer le header Set-Cookie dans la réponse et réinjecter ce header dans le header Cookie des prochaine requêtes. Et il faut faire la même chose pour curl, à moins que le test ne soit constitué d'une requête unique consistant à tester l'authentification.
 
Exemple:
 

Code :
  1. $opts = array('http' =>
  2.   array(
  3.     'method'  => 'POST',
  4.     'content' => 'login=toto&motdepasse=secret',
  5.     'timeout' => 60
  6.   )
  7. );
  8.                        
  9. $context  = stream_context_create($opts);
  10. $url = 'https://'.$https_server;
  11. $result = file_get_contents($url, false, $context, -1, 40000);

Reply

Marsh Posté le 02-06-2014 à 15:37:34    

Avec curl, j'ai fait ça :

Code :
  1. $timeout  = 10;
  2. $urlBase  = 'https://serveur.fr/app/';
  3. $username = 'toto';
  4. $password = 'titi';
  5.  
  6. $cookies_file = dirname(__FILE__).'/cookies.txt';
  7.  
  8. /**************************************************
  9. * Première requête : Connexion
  10. **************************************************/
  11.  
  12. $url = $urlBase.'identification/default.cgi';
  13.  
  14. $userCredentials = array(
  15.                          '_cm_app' => 'SITFIN',
  16.                          '_cm_idtype' => '',
  17.                          '_cm_langue' => 'fr',
  18.                          '_cm_user=' => $username,
  19.                          '_cm_pwd=' => $password,
  20.                          'submit' => 'OK'
  21.                         );
  22. $userCredentials = http_build_query($userCredentials);
  23.  
  24. $ch = curl_init($url);
  25.  
  26. curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
  27. curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
  28. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  29.  
  30. if (preg_match('`^https://`i', $url))
  31. {
  32.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  33.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  34. }
  35.  
  36. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  37. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  38. curl_setopt($ch, CURLOPT_NOBODY, true);
  39.  
  40. // Forcer cURL à utiliser un nouveau cookie de session
  41. curl_setopt($ch, CURLOPT_COOKIESESSION, true);
  42.  
  43. curl_setopt($ch, CURLOPT_POST, true);
  44. curl_setopt($ch, CURLOPT_POSTFIELDS, $userCredentials);
  45.  
  46. // Fichier dans lequel cURL va écrire les cookies
  47. // (pour y stocker les cookies de session)
  48. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies_file);
  49.  
  50. curl_exec($ch);
  51.  
  52. echo curl_error($ch).' / '.curl_errno($ch);
  53.  
  54. curl_close($ch);


Y'a un truc qui cloche ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed