Dissitou Posted August 5, 2019 Share Posted August 5, 2019 (edited) Bonjour Je tente d'activer le webservice sur ma boutique sous Prestashop 1.7.6. J'ai créé une clé d'API (pour la mise à jour automatique des taux de change), avec toutes les permissions pour la ressource "currencies" (GET, PUT, POST, DELETE et HEAD) Malheureusement j'ai le message d'alerte suivant sur la page Paramètres avancés > Webservice Quote Vous devez activer le module Apache 'mod_auth_basic' afin de permettre l'authentification au service web. Lorsque je tente d'atteindre la page https://mondomaine/API/ le dialogue d'autorisation me demande la clé d'API, mais ne l'accepte pas et réaffiche le dialogue sans arrêt La boutique est hébergée chez OVH sur un contrat mutualisé (offre perf2014x2), et je pense que le module Apache mod_auth_basic est activé (d'ailleurs comment le vérifier ?) car c'est assez commun. Sauriez-vous me metre sur la piste ? Merci Edited August 6, 2019 by Dissitou titre modifié pour précisions (see edit history) Link to comment Share on other sites More sharing options...
doekia Posted August 5, 2019 Share Posted August 5, 2019 lorsque l'hébergement est moisi tu peux utiliser la méthode alternative - enfin en 1.5 à 1.6 c'est sûr: https://<ton-domaine>/api/...?ws_key=<ta-cle-api> ATTENTION: si non https, il y a une énorme faille de sécurité Link to comment Share on other sites More sharing options...
Dissitou Posted August 5, 2019 Author Share Posted August 5, 2019 Merci doekia Effectivement, par l'url je parviens à consulter le fichier xml https://www.mondomaine.com/api/currencies/2/?ws_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx mais pas avec la méthode recommandée par la documentation https://[email protected]/api/currencies/2/ ni directement sur l'adresse mondomaine.com/api/. Dans ces deux derniers cas, le dialogue d'authentification tourne en boucle Est-on certain que l'hébergement est en cause ? (je pose cette question non pas pour te mettre en doute, mais parce que j'ai vu plusieurs sujets sur des forums par des utilisateurs qui ont le même souci que moi et avec d'autres hébergeurs) Je vais interroger OVH pour déterminer si l'hébergement est en cause, et si on peut corriger le problème. Link to comment Share on other sites More sharing options...
doekia Posted August 5, 2019 Share Posted August 5, 2019 Oui c'est l'hébergement qui ne passe pas l'authentification au php Soit parce que fastcgi qui requiert une méthode spéciale Soit parce que fpm car il faut aussi déclarer un dispositif dpecifique Soit car le couche mod_authz est géré par le frontal du cluster mais par par les éléments de la ferme Ou un mélange de tout cela Link to comment Share on other sites More sharing options...
Dissitou Posted August 5, 2019 Author Share Posted August 5, 2019 Server API FPM/FastCGI Loaded Configuration File /images/stable/usr/local/php-config/7.2/php-fpm.ini Je trouve ça au début du phpinfo(), ce qui semble confirmer tes soupçons... Je reste en attente du support d'OVH. Ça me ferait quand même mal si leur hébergement web n''était pas compatible avec Prestashop. Merci encore. Link to comment Share on other sites More sharing options...
Dissitou Posted August 6, 2019 Author Share Posted August 6, 2019 J'ai précisé le titre en y ajoutant le nom de l'hébergeur, j'espère que la modération le permet. Un détail de plus : après recherches, j'ai vu plusieurs fois la même solution (répétée telle quelle d'un blog à l'autre...), que j'ai tentée sans succès : 1) mettre dans le répertoire webservice un fichier .htaccess avec cette directive <IfModule mod_rewrite.c> RewriteEngine on RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] </IfModule> 2) ajouter dans ce même répertoire les lignes suivantes au fichier dispatcher.php if (strpos(@php_sapi_name(), 'CGI')) { list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6))); } Mais le .htaccess empêche tout accès et redirige vers la page 404 de Prestashop. Si quelqu'un a une autre idée ? J'attends toujours une réponse au ticket ouvert chez l'hébergeur. Link to comment Share on other sites More sharing options...
Dissitou Posted August 23, 2019 Author Share Posted August 23, 2019 Je reviens pour compléter et terminer ce sujet. Après de nombreux échanges où le support d'OVH affirmait que leur infrastructure était totalement compatible avec le webservice, j'ai fini par obtenir une réponse bien différente d'un administrateur : Quote La nouvelle fonctionnalité de Prestashop ne fonctionne pas sur nos hébergements mutualisés. Vous devez basculer sur une offre VPS pour installer ce type de service Je laisse ça là, pour ceux qui auraient eu le même souci et se poseraient la question... Pour ma part, je ne me risquerai pas à tenter l'expérience avec leur VPS, échaudé par la qualité de leur support (3 semaines pour finir par avouer que leur hébergement est en cause), et je déménage chez Gandi Link to comment Share on other sites More sharing options...
doekia Posted August 23, 2019 Share Posted August 23, 2019 (edited) La nouvelle fonctionnalité date de 7ans. (1.5.0.17) Il n'est pas garanti que cela fonctionne mieux chez un autre mutus. Mais pourquoi ne pas utiliser l'option ?ws_key= qui a été justement désigné pour palier a des effets parasite sur les configs système? C'est pas parce que la documentation à omis de donner un exemple avec ce mode d'utilisation qu'il n'est pas officiellement supporté. Il l'est comme précisé quelques lignes plus haut de cette même documentation Edited August 23, 2019 by doekia (see edit history) Link to comment Share on other sites More sharing options...
Dissitou Posted August 23, 2019 Author Share Posted August 23, 2019 3 hours ago, doekia said: Il n'est pas garanti que cela fonctionne mieux chez un autre mutus. C'est un VPS, avec un accès SSH et moins de limitations qu'un mutualisé, et le webservice en PS 1.7.6 y fonctionne bien pour moi Pour l'option ?ws_key que j'avais aussi vue dans la doc, je n'ai pas trouvé comment l'utiliser avec la mise à jour auto des taux de change et une tâche cron, qui était mon principal besoin. Link to comment Share on other sites More sharing options...
doekia Posted August 23, 2019 Share Posted August 23, 2019 Le 8/5/2019 à 1:06 PM, doekia a dit : lorsque l'hébergement est moisi tu peux utiliser la méthode alternative - enfin en 1.5 à 1.6 c'est sûr: https://<ton-domaine>/api/...?ws_key=<ta-cle-api> ATTENTION: si non https, il y a une énorme faille de sécurité Il suffit d'ajouter le ?ws_key= dans n'importe quel appel en lieu et place <key>@ ou si tu utilise la librairie https://github.com/PrestaShop/PrestaShop-webservice-lib/blob/master/PSWebServiceLibrary.php remplacer protected function executeRequest($url, $curl_params = array()) { $defaultParams = array( CURLOPT_HEADER => TRUE, CURLOPT_RETURNTRANSFER => TRUE, CURLINFO_HEADER_OUT => TRUE, CURLOPT_HTTPAUTH => CURLAUTH_BASIC, CURLOPT_USERPWD => $this->key.':', CURLOPT_HTTPHEADER => array( 'Expect:' ) ); $session = curl_init($url); par protected function executeRequest($url, $curl_params = array()) { $defaultParams = array( CURLOPT_HEADER => TRUE, CURLOPT_RETURNTRANSFER => TRUE, CURLINFO_HEADER_OUT => TRUE, //CURLOPT_HTTPAUTH => CURLAUTH_BASIC, //CURLOPT_USERPWD => $this->key.':', CURLOPT_HTTPHEADER => array( 'Expect:' ) ); $session = curl_init($url.'?ws_key='.$this->key); 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now