Documentation · Configuration requise pour le système

Configuration requise pour l'API, le réseau et le SSL

Objectif

ADP Car Market Hub est fondamentalement un plugin d'intégration : il passe la majeure partie de son temps d'exécution à communiquer avec des points de terminaison HTTPS distants — l'API AutoScout24 pour les véhicules et les images, le point de terminaison géré Google Gemini pour la génération de contenu par IA optionnelle, et (indirectement) WordPress.org pour les mises à jour du plugin. Ce document spécifie les attentes en matière de réseau sortant et de TLS que le plugin impose à l'hébergeur, et explique comment les valider avant la mise en production.

Quand utiliser ce document

Utilisez ce document lorsque vous :

  • Configurez un pare-feu, une politique de sortie ou un proxy sortant pour un environnement d'hébergement.
  • Choisissez une URL de base de l'API pour le marché AutoScout24 du concessionnaire (par exemple .com, .ch, .de, …).
  • Examinez des erreurs de connexion ou d'authentification signalées par l'importateur ou par le Test de connexion.
  • Validez la configuration TLS, DNS et des certificats CA sur un nouveau serveur.
  • Auditez les points de terminaison tiers que le plugin contactera en production.

Aperçu

Le plugin utilise exclusivement l'API HTTP standard de WordPress (wp_remote_get / wp_remote_post), qui utilise cURL en arrière-plan, de sorte qu'il hérite de la configuration TLS/CA du système et de toutes les constantes définies dans wp-config.php pour les transports HTTP et les proxys.

Le profil réseau est le suivant :

  • Sortant uniquement. Le plugin n'ouvre jamais de ports entrants au-delà de ce que WordPress lui-même fait. Le déclencheur de cron est exposé via l'API REST standard de WordPress, qui s'exécute déjà sur l'écouteur HTTPS existant du site.
  • HTTPS uniquement. Tous les points de terminaison tiers sont en HTTPS sur le port standard 443. Il n'y a pas de solutions de repli en HTTP simple.
  • Authentification basée sur des jetons. L'API AutoScout24 utilise les identifiants de client OAuth 2.0. Le plugin demande un jeton d'accès à l'URL de jeton configurée, le met en cache dans un transient jusqu'à peu de temps avant son expires_in, et l'envoie sous forme de jeton porteur (bearer token) lors des requêtes ultérieures.
  • Pas de sockets persistants. Chaque requête est un appel d'API HTTP WordPress distinct avec un délai d'expiration de 30 secondes pour les demandes de jeton ; les téléchargements d'images utilisent les délais d'expiration de téléchargement standard de WordPress.

Points de terminaison sortants requis

L'hébergeur doit autoriser le trafic HTTPS sortant (TCP/443) vers les destinations suivantes.

Obligatoire

  • URL de base de l'API AutoScout24 — configurée dans Réglages → URL de base de l'API, par exemple https://api.autoscout24.com (les autres marchés utilisent l'hôte spécifique au pays tel que api.autoscout24.ch, api.autoscout24.de, etc.). Utilisée pour les jetons OAuth, la récupération des annonces et la découverte des URL d'images.
  • Point de terminaison de jeton AutoScout24 — par défaut <base URL>/public/v1/clients/oauth/token. Une option distincte URL de jeton est disponible lorsque le point de terminaison OAuth réside sur un hôte différent de la base de l'API.
  • Hôtes d'images AutoScout24 — les charges utiles des annonces renvoient des URL d'images absolues qui sont téléchargées directement dans la bibliothèque de médias de WordPress. Ces noms d'hôte varient selon le marché et peuvent changer au fil du temps, la politique du pare-feu doit donc autoriser les CDN d'images AutoScout24 en tant que classe plutôt que de cibler un nom d'hôte unique.

Optionnel

  • https://generativelanguage.googleapis.com — requis lorsque l'Assistant IA est activé. Utilisé pour appeler le point de terminaison géré Google Gemini configuré dans AS24CI\Ai_Config.
  • Hôte de l'API carcuro — requis lorsque la source carcuro est utilisée. HTTPS sortant vers le point de terminaison carcuro pour récupérer l'inventaire du concessionnaire avec le jeton d'entreprise configuré.
  • Source de flux automatique — requise lorsqu'un flux automatique est utilisé. Selon l'emplacement du flux configuré, il s'agit de HTTPS sortant (URL https:// et liens de partage cloud tels que Dropbox/Google Drive/OneDrive/Google Sheets) sur TCP/443, ou de FTP / FTPS sortant (généralement TCP/21 plus les ports de données en mode passif) ou SFTP (TCP/22) vers le serveur de flux. Un flux via un dossier serveur / chemin de fichier absolu ne nécessite aucun accès réseau sortant. SFTP utilise l'extension PHP ssh2 ou un wrapper de flux SFTP.
  • Source d'importation d'e-mails — requise lorsque la source d'importation d'e-mails est utilisée. IMAP sortant vers l'hôte de la boîte de réception configuré (généralement TCP/993 pour IMAPS, ou TCP/143 avec STARTTLS). Nécessite l'extension PHP imap.

Ces destinations par source ne sont pertinentes que lorsque la source d'Universal Import correspondante est configurée ; un site qui importe uniquement depuis AutoScout24 n'a besoin d'aucune d'entre elles.

Recommandé

  • https://api.wordpress.org — pour les vérifications de mise à jour du cœur de WordPress, du thème et des plugins.
  • Le propre site du plugin (lorsqu'il est appelé par un cron externe) doit être accessible depuis le planificateur qui le déclenche.

URL de base de l'API et URL de jeton

Le plugin rend l'URL de base de l'API et l'URL de jeton entièrement configurables afin que tout marché AutoScout24 et tout futur changement d'hôte OAuth puissent être pris en charge sans mise à jour du code. La connexion AutoScout24 — et les identifiants de toutes les autres sources de données — se saisissent désormais sur la page centrale Universal Import (as24ci-universal-import) ; dans les versions antérieures, cela se trouvait sous Réglages. Le Client Secret et les autres secrets de source sont stockés chiffrés au repos. Voir la Référence de l'importateur universel (Universal Import).

  • URL de base de l'API (as24ci_base_url). Requis. Doit être le schéma + l'hôte (sans barre oblique finale), par exemple https://api.autoscout24.ch. Le plugin supprime les barres obliques finales et refuse d'effectuer des appels si ce champ est vide.
  • URL de jeton (as24ci_token_url). Optionnel. Lorsqu'il est vide, le plugin le déduit sous la forme <base URL>/public/v1/clients/oauth/token. Définissez-le explicitement uniquement si AutoScout24 a fourni un hôte OAuth différent pour votre compte.
  • Audience du jeton (as24ci_token_audience). Optionnel. Lorsqu'il est vide, le plugin déduit l'audience à partir du schéma + hôte de l'URL de base.
  • Client ID et Client Secret — identifiants requis fournis par AutoScout24.
  • Seller ID(s) — liste d'identifiants de concessionnaires séparés par des virgules.

Après l'enregistrement, l'action Onglet Outils → Test de connexion effectue une véritable récupération OAuth + annonce et signale une erreur claire si l'un des éléments ci-dessus est incorrect.

Chaîne SSL et TLS

  • Certificats. L'hébergeur doit faire confiance aux chaînes de certificats servies par AutoScout24 (et par le point de terminaison géré Google Gemini lorsque les fonctionnalités d'IA sont activées). Sur les distributions Linux modernes, cela est vrai par défaut ; sur les conteneurs de longue durée ou les images isolées, le bundle CA (/etc/ssl/certs/ca-certificates.crt sur Debian/Ubuntu, /etc/pki/tls/certs/ca-bundle.crt sur les systèmes de la famille RHEL) doit être maintenu à jour.
  • Versions TLS. Le plugin utilise la pile OpenSSL/cURL du système, qui sur les environnements PHP 8.1+ pris en charge négocie TLS 1.2 ou 1.3 par défaut. AutoScout24 attend un TLS moderne ; les sites bloqués sur des versions plus anciennes échoueront avec des erreurs de handshake.
  • Pas d'exceptions auto-signées. Le plugin ne désactive pas la vérification des certificats. Les proxys sortants qui effectuent une interception TLS doivent installer leur propre CA racine dans le magasin de confiance du système ; sinon, chaque requête échouera avec une erreur de certificat.
  • TLS entrant. Un certificat public valide est également requis sur le site WordPress lui-même, à la fois pour la sécurité générale de WordPress et pour que les planificateurs externes puissent appeler le point de terminaison REST du cron sans avertissements de certificat.

DNS, pare-feu et proxys

  • DNS. Le processus PHP doit résoudre les noms d'hôte AutoScout24 (et generativelanguage.googleapis.com lorsque les fonctionnalités d'IA sont activées). Sur les serveurs sécurisés avec un DNS split-horizon ou filtré, assurez-vous que les destinations sortantes du plugin se résolvent depuis le réseau de l'application, et pas seulement depuis le poste de travail de l'opérateur.
  • Pare-feu sortant. Autorisez le port TCP/443 vers les destinations répertoriées ci-dessus. Si le pare-feu applique une liste d'autorisation explicite de noms de domaine complets (FQDN), autorisez au moins l'hôte de l'API AutoScout24 que vous avez configuré ainsi que les noms d'hôte du CDN d'images AutoScout24 visibles dans les réponses de l'API.
  • Proxys HTTP. WordPress respecte les constantes standard WP_PROXY_HOST, WP_PROXY_PORT, WP_PROXY_USERNAME, WP_PROXY_PASSWORD et WP_PROXY_BYPASS_HOSTS dans wp-config.php. Si votre environnement d'hébergement impose un proxy sortant, configurez-les afin que les appels de wp_remote_* passent par celui-ci.
  • Fixation de l'IP de sortie. Certains comptes d'entreprise AutoScout24 peuvent exiger que le concessionnaire fournisse les IP de sortie que le plugin utilisera. Vérifiez cela avec votre responsable de compte AutoScout24 et réservez une IP de sortie stable si nécessaire.
  • WAF / proxy inverse côté WordPress. Assurez-vous que le WAF ne supprime ni ne modifie l'en-tête Authorization sur le point de terminaison REST du cron, et ne met pas en cache les réponses /wp-json/as24ci/v1/*.

Test de connexion

Le plugin est livré avec plusieurs outils intégrés pour vérifier le réseau et le chemin de l'API de bout en bout. Utilisez-les dans cet ordre :

  1. Onglet Outils → Test de connexion. Récupère un jeton OAuth à partir de l'URL de jeton configurée, puis appelle le point de terminaison des annonces. Une réponse réussie confirme les identifiants, l'URL de base, l'audience, le DNS, le TLS et le pare-feu sortant en une seule étape. Les échecs renvoient des messages compréhensibles par l'homme tels que "URL de base de l'API manquante", "Échec de la demande de jeton" ou des codes d'erreur HTTP spécifiques.
  2. Onglet Système & Aide / Santé. Affiche l'URL de base configurée, les horodatages de la dernière exécution, le mode cron et l'état des intégrations optionnelles. Utile comme tableau de bord unique avant et après les modifications de déploiement.
  3. Onglet Outils → Effacer le cache des jetons. Invalide le jeton OAuth mis en cache afin que le prochain appel en obtienne un nouveau. Utilisez cette option immédiatement après avoir renouvelé les identifiants clients ou modifié l'URL du jeton.
  4. Onglet Journaux. Lorsque le Test de connexion échoue, l'erreur sous-jacente (par exemple, l'erreur cURL 6 "Impossible de résoudre l'hôte", l'erreur 28 "Délai d'attente de l'opération dépassé", HTTP 401 du point de terminaison du jeton) est enregistrée avec suffisamment de contexte pour identifier les problèmes de DNS, de pare-feu, de TLS ou d'identifiants.

Pour une validation plus approfondie en ligne de commande, les commandes suivantes exécutées depuis le serveur web lui-même sont généralement concluantes :

  • DNS : getent hosts api.autoscout24.com (ou l'hôte configuré).
  • Accessibilité et chaîne TLS : curl -v https://api.autoscout24.com/ doit terminer le handshake TLS sans erreur de certificat.
  • Point de terminaison de jeton : curl -v -X POST -d "grant_type=client_credentials" https://<your-token-url> doit renvoyer un code HTTP 4xx avec un corps d'erreur structuré, confirmant que l'URL est accessible même sans identifiants.

Dépannage

  • "Missing API Base URL". Configurez Settings → API Base URL (par ex. https://api.autoscout24.ch) et enregistrez avant de réessayer.
  • "Missing API credentials (Client ID/Secret)". Collez les identifiants fournis par AutoScout24 et enregistrez.
  • "Token request failed" avec HTTP 401/403. Les identifiants sont incorrects, expirés, ou l'URL du jeton/audience ne correspond pas à ce pour quoi AutoScout24 a délivré les identifiants. Vérifiez dans le portail partenaire AutoScout24.
  • "Token request failed" avec HTTP 5xx. Problème temporaire du côté de AutoScout24. Réessayez après quelques minutes ; l'importateur se rétablira automatiquement lors de sa prochaine exécution cron.
  • Erreur cURL 6 ("Could not resolve host"). Le DNS est en panne sur le serveur web. Vérifiez /etc/resolv.conf, le service DNS de l'hébergeur et toute configuration split-horizon.
  • Erreur cURL 7 ("Failed to connect"). Le pare-feu sortant bloque le port TCP/443 vers la destination, ou un proxy amont est requis (configurez WP_PROXY_* dans wp-config.php).
  • Erreur cURL 28 ("Operation timed out"). Soit une latence réseau, soit un proxy sortant qui retarde la connexion. Vérifiez l'accessibilité avec curl -v depuis le serveur web lui-même.
  • Erreur cURL 60 ("SSL certificate problem"). Le bundle CA du système est obsolète ou un proxy d'interception présente un certificat non approuvé. Mettez à jour ca-certificates (ou équivalent) et installez l'autorité de certification racine de l'entreprise dans le magasin de confiance du système.
  • Le téléchargement des images échoue alors que les annonces fonctionnent. Les URL des images peuvent résider sur différents hôtes AutoScout24 ; élargissez la liste d'autorisation sortante pour couvrir les CDN d'images AutoScout24.
  • Les appels cron externes renvoient une erreur 404 pour /wp-json/as24ci/v1/cron-import. Les permaliens WordPress doivent être activés (tout réglage autre que "Simple"). Enregistrez à nouveau la page des Permaliens et réessayez.
  • Les appels cron externes renvoient une erreur 403 "Invalid or missing token". L'en-tête ou le paramètre de requête ne correspond pas au jeton enregistré. Régénérez le jeton dans l'onglet Importations et limites et mettez à jour le planificateur.
  • Les appels IA échouent alors que les appels AutoScout24 réussissent. L'hôte Gemini géré (generativelanguage.googleapis.com) n'est pas autorisé par le pare-feu sortant, ou la configuration Gemini gérée dans AS24CI\Ai_Config n'a pas été provisionnée. L'importateur principal n'est pas affecté.

Documents connexes