Aller au contenu principal

Protection du flux — Clé secrète et authentification Basic Auth du générateur

Le module utilise deux mécanismes de protection distincts : une clé secrète qui contrôle qui peut déclencher la génération du flux, et des identifiants HTTP Basic Auth qui permettent au générateur de franchir un mot de passe .htaccess au niveau serveur sur votre site.

remarque

Disponible depuis la v2.4.5

Vue d'ensemble

La génération du flux est déclenchée par une requête HTTP vers le front-office de votre boutique (/module/facebookproductsfeed/GenerateFeed). Sans protection, toute personne connaissant cette URL pourrait lancer une génération à tout moment, consommant des ressources serveur. La clé secrète évite cela en exigeant un token correspondant dans l'URL avant que le module n'effectue tout traitement.

Par ailleurs, de nombreuses configurations d'hébergement — notamment les environnements de staging et certains hébergements mutualisés — protègent l'intégralité du site ou les chemins équivalents à wp-admin avec une authentification HTTP Basic Auth via .htaccess. Lorsque le module effectue son appel cURL interne pour poursuivre un cycle, cette requête cURL se heurte au même blocage .htaccess et échoue silencieusement. Les identifiants Basic Auth du générateur indiquent au module le nom d'utilisateur et le mot de passe à inclure dans ces requêtes cURL internes afin qu'elles puissent passer.

Il s'agit de deux paramètres indépendants qui résolvent deux problèmes différents.

La clé secrète

La clé secrète est un token dérivé de la _COOKIE_KEY_ de votre boutique et du nom du module. Elle est stockée globalement (FPF_SECRET_KEY) et doit être présente en tant que paramètre URL (fpf_secret_key) pour toute demande de génération via le web.

Le contrôleur du générateur vérifie cela dès le début :

?fpf_secret_key=<valeur>

Si la valeur est absente ou incorrecte, le contrôleur s'arrête immédiatement sans aucune sortie. La génération en ligne de commande (cron via PHP CLI) contourne entièrement cette vérification — la clé n'est requise que pour les requêtes web.

Le module pré-renseigne la clé secrète dans toutes les URL qu'il vous affiche : l'URL cron dans l'onglet Tâches Cron, l'URL de la console dans l'onglet Tableau de bord, et l'URL que le générateur utilise en interne pour la poursuite des cycles. Vous n'avez jamais besoin de rechercher ou copier la clé manuellement.

Réinitialiser la clé secrète

Si vous pensez que votre URL de génération a été exposée ou souhaitez changer la clé, vous pouvez la régénérer en visitant l'URL de votre back-office avec fpf_reset_secret=1 en suffixe :

https://votreboutique.com/admin/index.php?controller=AdminModules&configure=facebookproductsfeed&fpf_reset_secret=1

Le module régénère la clé à partir de md5(_COOKIE_KEY_ . 'facebookproductsfeed') et stocke le résultat globalement. Après la réinitialisation, toutes les URL de tâches cron que vous avez configurées sur votre serveur cesseront de fonctionner — vous devez copier la nouvelle URL cron depuis l'onglet Tâches Cron et mettre à jour l'entrée cron de votre serveur.

La clé secrète est stockée en tant que valeur de configuration globale PrestaShop, ce qui signifie qu'elle s'applique à toutes les boutiques dans une configuration multiboutique. La réinitialiser invalide les URL cron existantes pour toutes les boutiques simultanément.

Basic Auth du générateur

Cette section se trouve dans l'onglet Protection du flux (#fieldset_security), sous le titre Basic Auth pour la génération.

ChampDescription
Nom d'utilisateur Basic AuthLe nom d'utilisateur HTTP Basic Auth que le module envoie dans les requêtes cURL internes lors de la génération par cycle
Mot de passe Basic AuthLe mot de passe correspondant. Une fois enregistré, le champ affiche un badge à la place de la valeur — le mot de passe n'est plus jamais affiché

Lorsque les deux champs sont renseignés, chaque appel cURL interne effectué par le générateur inclut un en-tête Authorization: Basic .... Cela permet à la poursuite des cycles de fonctionner sur les serveurs qui exigent des identifiants pour accéder au front-office.

Pour supprimer les identifiants Basic Auth, videz le champ Mot de passe Basic Auth et enregistrez. Lorsque le champ mot de passe est vide à l'enregistrement, le module supprime à la fois le nom d'utilisateur et le mot de passe.

Ces identifiants sont uniquement destinés aux requêtes cURL internes du module. Ils ne sont pas liés au commutateur Protéger l'URL des flux ? décrit ci-dessous, qui contrôle l'accès aux fichiers XML de flux finaux.

Onglet Protection du flux affichant les champs Nom d&#39;utilisateur Basic Auth et Mot de passe Basic Auth

Protection de l'URL du flux (connexe)

L'onglet Protection du flux contient également un commutateur distinct Protéger l'URL des flux ? (FPF_SECURITY). Lorsqu'il est activé avec un nom d'utilisateur et un mot de passe, le module écrit un fichier .htaccess et .htpasswd dans le dossier feeds/, exigeant des identifiants HTTP Basic Auth pour télécharger les fichiers XML de flux.

Il s'agit d'une couche de protection différente — elle restreint qui peut lire les fichiers de flux finaux, et non qui peut déclencher la génération. Facebook Commerce Manager doit pouvoir récupérer l'URL du flux ; si vous activez la protection de l'URL du flux, vous devez également fournir ces identifiants à Facebook lors de la configuration de votre catalogue.

Clé de configValeur par défautRôle
FPF_SECURITYDésactivéIndique si le dossier feeds/ exige une HTTP Basic Auth
FPF_SECURITY_USERNom d'utilisateur pour l'accès aux fichiers de flux
FPF_SECURITY_PASSMot de passe pour l'accès aux fichiers de flux
FPF_BASIC_AUTH_USERNAMENom d'utilisateur pour les requêtes cURL internes du module
FPF_BASIC_AUTH_PASSWORDMot de passe pour les requêtes cURL internes du module
FPF_SECRET_KEYGénéré automatiquementToken requis dans l'URL de génération

Points importants

  • La clé secrète n'est pas stockée par boutique — c'est une valeur globale. Dans les configurations multiboutique, toutes les boutiques partagent la même clé et le même format d'URL de génération.
  • La réinitialisation de la clé secrète n'affecte pas l'accès aux fichiers de flux (FPF_SECURITY), uniquement la capacité à déclencher la génération.
  • Les identifiants Basic Auth du générateur sont stockés par boutique (en utilisant Configuration::get plutôt que Configuration::getGlobalValue), de sorte que différentes boutiques peuvent avoir des identifiants différents.
  • La clé secrète est générée une fois lors de l'installation du module. Elle ne change que si vous la réinitialisez explicitement via ?fpf_reset_secret=1 ou réinstallez le module.

Dépannage

ProblèmeSolution
La tâche cron a cessé de fonctionner après la réinitialisation de la clé secrèteCopiez la nouvelle URL cron depuis l'onglet Tâches Cron et mettez à jour l'entrée cron de votre serveur
La génération du flux démarre mais s'arrête après le premier cycleVotre serveur dispose d'une protection HTTP Basic Auth via .htaccess. Renseignez Nom d'utilisateur Basic Auth et Mot de passe Basic Auth dans l'onglet Protection du flux pour que le générateur puisse poursuivre les cycles
"Vous n'avez pas accès à cette page" lors de la visite de l'URL de générationLe paramètre fpf_secret_key dans l'URL est absent ou obsolète. Copiez l'URL correcte depuis l'onglet Tâches Cron
L'URL du flux renvoie une erreur 401 à FacebookLa protection de l'URL du flux (FPF_SECURITY) est activée. Fournissez ces identifiants à Facebook Commerce Manager lors de la configuration du catalogue
L'enregistrement du mot de passe Basic Auth affiche le badge "mot de passe défini" mais la génération échoue toujours avec une erreur d'authentificationVérifiez que les identifiants correspondent à ce qu'attend votre serveur — testez avec curl -u username:password <generation-url> depuis votre terminal

Foire aux questions

Dois-je configurer une protection ?

La clé secrète est toujours active et générée automatiquement — vous n'avez rien à configurer pour une protection de base. La Basic Auth du générateur n'est nécessaire que si votre environnement d'hébergement exige des identifiants HTTP pour accéder au front-office.

Où trouver l'URL de génération actuelle avec la clé secrète ?

Rendez-vous dans l'onglet Tâches Cron. Le module affiche l'URL de génération complète incluant le paramètre fpf_secret_key. Copiez-la depuis cet onglet plutôt que d'essayer de la construire manuellement.

J'ai réinitialisé la clé secrète et ma tâche cron ne fait plus rien. Que s'est-il passé ?

La valeur fpf_secret_key de l'ancienne URL ne correspond plus à ce qu'attend le module, donc chaque requête est silencieusement rejetée. Rendez-vous dans l'onglet Tâches Cron, copiez la nouvelle URL et mettez à jour l'entrée cron sur votre serveur.

Quelle est la différence entre les champs Basic Auth et le commutateur « Protéger l'URL des flux ? » ?

Les champs Nom d'utilisateur/Mot de passe Basic Auth sont des identifiants que le module envoie dans ses propres requêtes cURL sortantes afin que la génération par cycle puisse se poursuivre malgré un blocage d'authentification au niveau serveur. Le commutateur Protéger l'URL des flux ? crée son propre blocage d'authentification autour des fichiers XML de flux finaux afin que les visiteurs externes aient besoin d'identifiants pour les télécharger. Ce sont deux fonctionnalités indépendantes.

Puis-je utiliser les mêmes identifiants pour la Basic Auth du générateur et la protection de l'URL du flux ?

Oui, si votre serveur exige déjà une authentification pour toutes les requêtes, utiliser les mêmes identifiants pour les deux est logique. Les deux paramètres sont stockés séparément et peuvent différer si nécessaire.

La réinitialisation de la clé secrète affecte-t-elle d'autres boutiques que la boutique actuelle ?

Oui. La clé secrète est stockée globalement, donc la réinitialiser invalide simultanément les URL cron de toutes les boutiques de votre configuration multiboutique. Mettez à jour toutes les tâches cron après une réinitialisation.

Fonctionnalités associées