Comment envoyer la clé du service Web de PrestaShop dans l’en-tête d’autorisation au lieu de l’URL

PrestaShop fournit une API de service Web complète qui permet aux développeurs de gérer par programmation les aspects critiques d’une boutique de commerce électronique, notamment les produits, les commandes, les clients, etc. Traditionnellement, l’accès à l’API PrestaShop implique l’ajout de la clé de service Web en tant que paramètre de requête dans l’URL. Bien que cette méthode soit fonctionnelle, elle pose des problèmes de sécurité importants en raison de l’exposition potentielle d’informations sensibles. Une approche plus sûre et plus professionnelle consiste à transmettre la clé de service Web via l’en-tête d’autorisation. Dans ce blog, nous examinons les raisons de l’adoption de cette approche, ses avantages techniques et un guide étape par étape pour la mettre en œuvre dans votre intégration PrestaShop.

Pourquoi utiliser l’en-tête d’autorisation ?

La transmission d’informations sensibles telles que la clé du service Web via l’en-tête d’autorisation offre plusieurs avantages techniques par rapport à son intégration dans l’URL :

Atténuation des risques de sécurité:

Les informations sensibles contenues dans les URL sont souvent enregistrées dans l’historique du navigateur, les journaux du serveur et les outils de surveillance. Cela augmente le risque d’accès non autorisé et d’exposition des données. Cela compromet la sécurité globale des informations sensibles. En utilisant l’en-tête Authorization, vous vous assurez que la clé reste cachée de ces journaux.

Respect des normes de sécurité:

Les directives de sécurité et les cadres de conformité modernes déconseillent de placer des données sensibles dans des chaînes de requête. L’utilisation de l’en-tête d’autorisation est conforme à ces normes et améliore la posture de sécurité globale de vos intégrations d’API.

Amélioration de la lisibilité des URL:

L’intégration de la clé de service Web dans l’URL génère des chaînes de requête encombrées et difficiles à lire. En utilisant l’en-tête Authorization, vous conservez des URL propres et professionnelles, ce qui simplifie le dépannage et le débogage.

Évolutivité et interopérabilité:

L’en-tête d’autorisation est largement adopté sur les API et les plateformes, garantissant la compatibilité et la pérennité de votre implémentation. 

Créez une application Android et iOS pour votre boutique Prestashop

Aucune compétence de codage requise

MAGASINER

Étapes à suivre pour envoyer la clé du service Web dans l’en-tête d’autorisation

L’implémentation de l’en-tête d’autorisation pour vos requêtes de service Web PrestaShop implique une série de configurations techniques. Vous trouverez ci-dessous les étapes détaillées :

Étape 1 : Activer le service Web PrestaShop

Pour commencer, assurez-vous que la fonctionnalité de service Web est activée dans votre boutique PrestaShop :

  1. Connectez-vous au Back Office de votre boutique PrestaShop.
  2. Accédez à Paramètres avancés > Webservice.
  3. Basculez le commutateur pour activer la fonctionnalité de service Web.

Cette étape garantit que votre boutique peut gérer les requêtes API.

Étape 2 : générer une clé de service Web

Ensuite, créez une clé de service Web unique avec les autorisations requises :

  1. Dans la section Webservice, cliquez sur Ajouter une nouvelle clé.
  2. Définissez les autorisations clés, telles que GET, POST, PUT et DELETE, en fonction de vos besoins d’intégration.
  3. Conservez la clé et conservez-la en lieu sûr, car elle sera nécessaire pour l’autorisation.

Étape 3 : Mettez à jour votre code pour utiliser l’en-tête d’autorisation

Modifiez votre code d’intégration API pour inclure la clé de service Web dans l’en-tête d’autorisation au lieu de l’URL.

Étape 4 : Testez votre implémentation

Après avoir intégré l’en-tête d’autorisation, vérifiez sa fonctionnalité en testant les requêtes API. Les points clés à valider sont les suivants :

  1. Le serveur accepte l’en-tête d’autorisation.
  2. La réponse contient les données attendues.
  3. La gestion des erreurs fonctionne comme prévu pour les clés non valides ou manquantes.

Les tests garantissent une intégration transparente et une fiabilité dans les environnements de production.

Étape 5 : mettre à jour les configurations du serveur (facultatif)

Dans certains cas, votre serveur PrestaShop peut vérifier explicitement la clé du service Web dans l’URL. Pour activer l’utilisation de l’en-tête Authorization, ajustez les configurations du serveur comme suit :

  1. Modifiez le fichier .htaccess pour contourner les vérifications des clés dans les chaînes de requête.
  2. Ajustez les paramètres du contrôleur d’API dans PrestaShop pour prioriser les en-têtes d’autorisation.

Ces configurations garantissent la compatibilité descendante et évitent les interruptions.

Considérations avancées

Pour les développeurs gérant des intégrations à grande échelle, tenez compte des améliorations suivantes :

  • Authentification basée sur des jetons: Remplacez les clés de service Web statiques par des jetons générés dynamiquement pour une sécurité et un contrôle améliorés.
  • Limitation du débit:Implémentez la limitation des requêtes pour éviter les abus et garantir des performances API optimales.
  • Application du protocole HTTPS:Utilisez toujours HTTPS pour crypter la communication API, protégeant ainsi les données sensibles pendant la transmission.
  • Journalisation des erreurs:Conservez des journaux complets pour les demandes et les réponses d’API afin de faciliter le débogage et l’audit.

Ces mesures renforcent votre écosystème API et le préparent à une évolutivité future.

Ajoutez des URL propres et des redirections 301/302/303 sur votre boutique Prestashop

MAGASINER

Pour aller plus loin

L’envoi de la clé de service Web dans l’en-tête d’autorisation constitue une mise à niveau importante de votre intégration API PrestaShop. En adoptant cette approche, vous atténuez les risques de sécurité, adhérez aux meilleures pratiques et pérennisez l’infrastructure de votre boutique en ligne. Pour mettre en œuvre cette amélioration, suivez méticuleusement les étapes décrites, testez rigoureusement et mettez à jour les configurations si nécessaire. Complétez cette pratique par des mesures de sécurité supplémentaires, telles que l’application HTTPS et l’authentification basée sur des jetons, pour une intégration API robuste. Si vous avez des questions ou des idées, n’hésitez pas à les partager dans la section commentaires. Ensemble, nous pouvons créer des solutions de commerce électronique sécurisées et efficaces. Bon codage !

Comment créer l’API du service Web du module Prestashop ?

Ce blog explique comment créer et utiliser l’API Prestashop Webservices. Prestashop dispose d’un outil de services Web par défaut qui permet d’accéder au magasin à partir d’applications distantes.

Pré-requis

  1. Votre boutique Prestashop devrait avoir la « réécriture de module » activée pour Apache.
  2. Il est préférable d’utiliser SSL (https:) pour les appels de services Web, car cela évite les problèmes de sécurité de type « homme du milieu ».
  3. Vérifiez que les cinq méthodes GET, POST, PUT, DELETE et HEAD sont supportées sur le serveur.

Pour garantir la sécurité et l’efficacité de vos services Web Prestashop, il est essentiel d’utiliser SSL (HTTPS) pour tous les appels de services Web. Cela évite les attaques de type « homme au milieu » et protège vos données pendant la transmission. De plus, vérifier que votre serveur prend en charge les méthodes HTTP GET, POST, PUT, DELETE et HEAD est crucial pour un fonctionnement transparent. En configurant ces paramètres, vous optimisez les performances et la sécurité de votre boutique, garantissant un accès et une gestion fiables de vos ressources Prestashop via l’API.

Comment configurer les Web Services dans Prestashop ?

1. Connectez-vous au back-office Prestashop. 2. Accédez aux options du menu Paramètres avancés -> Services Web pour ouvrir la page Services Web.

 

3. Il sera redirigé vers la page des services Web contenant la liste des services Web disponibles et le formulaire de configuration pour configurer le service. 4. Le formulaire de configuration comporte les champs suivants :

a) Activer le service Web de Prestashop: Activez le paramètre permettant d’utiliser le service Web dans la boutique Prestashop.

b) Activer le mode CGI pour PHP: Activez le paramètre pour utiliser PHP comme script CGI au lieu du module Apache. 5. Cliquez sur le bouton Enregistrer pour enregistrer la configuration. Vous pouvez désormais utiliser les services Web dans votre boutique Prestashop.

Comment ajouter/mettre à jour des services Web dans Prestashop ?

1. Connectez-vous au back-office Prestashop 2. Accédez aux options du menu Paramètres avancés -> Services Web pour ouvrir la page Services Web. 3. Il sera redirigé vers la page des services Web contenant une liste des services Web disponibles.

4. Cliquez sur le bouton “Ajouter une nouvelle clé de service Web” pour ajouter une nouvelle clé de service Web afin d’accéder uniquement à certaines ressources de la boutique Prestashop.

une clé: Il s’agit d’une clé unique. Vous pouvez la saisir manuellement ou cliquer sur le bouton Générer pour générer une clé aléatoire pour le service Web Prestashop.

b) Description de la clé: Vous pouvez fournir la description de la clé pour une meilleure compréhension.

c) Statut : activez la clé pour accorder une autorisation d’accès aux données à l’aide de la clé.

d) Autorisation: Fournissez l’autorisation d’accéder aux données à l’aide d’une certaine clé. Vous pouvez vérifier l’autorisation spécifique pour accorder l’accès aux données comme Ajouter, Modifier, supprimer ou afficher. Ici, nous avons vérifié l’autorisation des pays et de la devise. 5. Cliquez sur le bouton Enregistrer pour ajouter la clé aux services Web.

Comment accéder au Web Service ?

Une fois que vous avez créé la clé pour le service Web et correctement configuré, vous devez accéder à l’URL suivante dans votre navigateur : https://{chemin racine du magasin}/api/ Il vous demandera un nom d’utilisateur et un mot de passe pour accéder à la ressource.

a) Nom d’utilisateur : Entrez la clé du service Web généré à l’étape ci-dessus. Par exemple MWMHJVB9PBYBNYBSFTQ8ZXRCM43FQ2MW

b) Mot de passe : Il doit être vide car aucun mot de passe n’est requis. Après vous être connecté, vous accéderez à la liste des ressources et de toutes les options CRUD autorisées que vous avez configurées dans votre boutique Prestashop.

Vous êtes maintenant connecté avec succès au service Web Prestashop.

a) Pour OBTENIR la liste des entités pour une ressource particulière :

https://shop_root_url/api/resouce

Mise en situation : https://www.knowband.com/api/customers pour obtenir une liste de tous les clients.

b) Pour OBTENIR un client spécifique par ID :

https://shop_root_url/api/customers/1

Par exemple : Pour obtenir les détails du client ayant l’ID 10

https://www.knowband.com/api/customers/10

Recommander la montre : 

Comment créer l’API Webservice du module Prestashop pour Prestashop 1.7 ?

Nous allons vous montrer comment créer un module pour récupérer des clients. Pour cela, nous enregistrerons un hook addWebserviceResources de ServiceRequest pour les ressources au lieu de remplacer la fonction getResources() de la classe ServiceRequest dans Prestashop 1.7. La création d’API de service Web personnalisées dans Prestashop 1.7 implique l’utilisation de la classe WebserviceSpecificManagement. Celui-ci permet de définir des fonctionnalités spécifiques et de gérer le traitement des données. Par exemple, l’implémentation de la classe WebserviceSpecificManagementKbCustomer vous permet de gérer efficacement les données client. Par conséquent, cette approche fournit une solution flexible et robuste pour étendre les capacités de Prestashop, permettant des interactions personnalisées avec les données de votre boutique. En tirant parti de ces options de personnalisation avancées, vous pouvez créer des solutions de commerce électronique plus dynamiques et réactives qui répondent aux besoins commerciaux uniques. 1. Enregistrez le hook addWebserviceResources dans le module.

fonction publique install() { parent::install(); $this->registerHook('addWebserviceResources'); renvoie vrai ; }

2. Ajoutez un écouteur hook pour définir la classe et la description. Définissez Specific_management sur true si vous souhaitez utiliser WebserviceSpecificManagement au lieu du fichier ObjectModel.

public function hookAddWebserviceResources() { return array( 'kbcustomer' => array( 'description' => 'Knowband Custom Customer', 'special_management' => true, ), 'kbaddress' => array( 'description' => 'Knowband Adresse personnalisée', 'class' => 'kbaddress' ) ); }

3. Créez un fichier de classe WebserviceSpecificManagement en tant que WebserviceSpecificManagementCLASSNAME qui implémente WebserviceSpecificManagementInterface Par exemple – WebserviceSpecificManagementKbCustomer qui est similaire à /classes/webservice/WebserviceSpecificManagementImages.php. Vous devez inclure les fonctions définies dans la classe WebserviceSpecificManagementImages.php. Ceux-ci sont:

  • setObjectOutput
  • setWsObject
  • getWsObject
  • getObjectOutput
  • setUrlSegment
  • obtenirUrlSegment
  • Obtenir du contenu
  • gérer (où les données sont traitées)

1. Ajoutez maintenant la clé ayant la ressource kbcustomer dans le service web du back-office. 2. Maintenant, visitez le https://{youstore.com}/api/kbcustomer pour voir la réponse en XML. Dans l’exemple ci-dessous, nous affichons la liste de tous les clients disponibles dans le magasin. Ajoutez include_once(_PS_MODULE_DIR_.’YOURMODULENAME/classes/WebserviceSpecificManagementKbCustomer.php’); dans votre fichier de module.

la classe WebserviceSpecificManagementKbcustomer implémente WebserviceSpecificManagementInterface { /** @var WebserviceOutputBuilder */ protected $objOutput; sortie $ protégée ; /** @var WebserviceRequest */ protected $wsObject; public function setUrlSegment($segments) { $this->urlSegment = $segments; renvoie $this ; } public function getUrlSegment() { return $this->urlSegment; } public function getWsObject() { return $this->wsObject; } public function getObjectOutput() { return $this->objOutput ; } /** * Cela doit renvoyer une chaîne avec des valeurs spécifiques comme l'attend WebserviceRequest. * * @return string */ public function getContent() { return $this->objOutput->getObjectRender()->overrideContent($this->output); } fonction publique setWsObject(WebserviceRequestCore $obj) { $this->wsObject = $obj; renvoie $this ; } /** * @param WebserviceOutputBuilderCore $obj * @return WebserviceSpecificManagementInterface */ public function setObjectOutput(WebserviceOutputBuilderCore $obj) { $this->objOutput = $obj; renvoie $this ; } fonction publique gérer() { $objects_products = array(); $objects_products['empty'] = nouveau client(); $customer_list = Client::getCustomers(); foreach ($customer_list as $list) { $objects_products[] = nouveau client ($list['id_customer']); } $this->_resourceConfiguration = $objects_products['empty']->getWebserviceParameters(); $this->output .= $this->objOutput->getContent($objects_products, null, $this->wsObject->fieldsToDisplay, $this->wsObject->profondeur, WebserviceOutputBuilder::VIEW_LIST, false); } }

La capture d’écran ci-dessous vous fournit le visuel de la sortie :

Si vous souhaitez la sortie au format JSON, ajoutez &output_format=JSON à la fin de l’URL. Par exemple: https://{yourstore.com}/api/kbcustomer&output_format=JSON

Sortie : {“customers”:[{“id”:1},{“id”:2},{“id”:3},{“id”:4},{“id”:5},{“id”:6},{“id”:7},{“id”:8},{“id”:9},{“id”:10},{“id”:11},{“id”:12},{“id”:13},{“id”:14},{“id”:15},{“id”:16},{“id”:17},{“id”:18},{“id”:19},{“id”:20},{“id”:21}]}

À la fin!

Avec plus de 13 ans d’expertise technique, Knowband propose des services complets de développement d’applications et de sites Web utilisant les dernières technologies, notamment divers frameworks PHP et React. Nous fournissons plus de 100 extensions prêtes à l’emploi pour les plateformes de commerce électronique populaires telles que Prestashop, Opencart, WooCommerce et Magento 2. Pour toute question, n’hésitez pas à nous contacter à support@knowband.com. Knowband est également un partenaire Prestashop Premium et un Superher Seller fournissant plus de 100 modules Prestashop pour répondre à tous vos besoins de commerce électronique. Consultez nos plus populaires Module Supercheckout d’une page pour Prestashop ici.

 

Module complémentaire Prestashop One Page Supercheckout

L’addon Prestashop One Page Supercheckout de Knowband rend le paiement plus rapide et plus facile en mettant tout sur une seule page, contribuant ainsi à réduire les abandons de panier.

Achetez maintenant