Intégrer reCAPTCHA pour WAF à Cloudflare

Ce document vous explique comment intégrer reCAPTCHA pour WAF à Cloudflare.

Pour terminer l'intégration, vous devez implémenter une ou plusieurs fonctionnalités de reCAPTCHA pour WAF, créer des règles de pare-feu reCAPTCHA et effectuer l'intégration à Cloudflare en déployant et en configurant une application Cloudflare Worker sans serveur.

Avant de commencer

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

    Notez l'ID de votre projet Google Cloud pour l'utiliser ultérieurement.

  2. Make sure that billing is enabled for your Google Cloud project.

  3. Enable the reCAPTCHA Enterprise API.

    Enable the API

  4. Créez une clé API pour l'authentification :

    1. Dans la console Google Cloud , accédez à la page Identifiants.

      Accéder à "Identifiants"

    2. Cliquez sur  Créer des identifiants, puis sélectionnez Clé API.
    3. Notez la clé API pour une utilisation ultérieure.

  5. Planifiez la façon dont vous souhaitez implémenter les fonctionnalités de reCAPTCHA pour WAF afin de protéger votre site Web.

    1. Choisissez une ou plusieurs fonctionnalités WAF qui correspondent le mieux à votre cas d'utilisation.
    2. Identifiez les pages que vous souhaitez protéger.
    3. Choisissez le type de fonctionnalités WAF que vous souhaitez implémenter sur les pages identifiées.
    4. Identifiez les conditions pour gérer l'accès des utilisateurs.
    5. Découvrez les composants des règles de pare-feu reCAPTCHA et leurs attributs qui vous aident à créer des règles de pare-feu reCAPTCHA. Pour obtenir des exemples, consultez Exemples de stratégies de pare-feu reCAPTCHA.
  6. Créez ou choisissez un compte Cloudflare avec des fonctionnalités Cloudflare Worker.

  7. Créez ou choisissez un site Web Cloudflare.

  8. Téléchargez le package reCAPTCHA pour Cloudflare recaptcha_cloudflare_client_0.0.2.tar.gz.

Implémenter les fonctionnalités de reCAPTCHA pour WAF

Selon vos besoins, vous pouvez utiliser une ou plusieurs fonctionnalités de reCAPTCHA pour WAF dans une seule application.

Si vous souhaitez utiliser plusieurs fonctionnalités, vous devez créer une clé reCAPTCHA pour chacune d'elles et les utiliser dans votre application. Par exemple, si vous souhaitez utiliser des jetons d'action reCAPTCHA et la page de test reCAPTCHA, vous devez créer une clé de jeton d'action et une clé de page de test, puis les utiliser dans votre application.

action-token

Vous devez exécuter reCAPTCHA sur vos pages Web pour générer des jetons d'action. Une fois que reCAPTCHA a généré un jeton d'action, vous devez l'associer à un en-tête de requête prédéfini partout où vous devez protéger les actions utilisateur, comme checkout. Par défaut, les jetons d'action sont valides pendant 30 minutes, mais ce délai peut varier en fonction du trafic. Vous devez associer le jeton d'action à un en-tête de requête prédéfini avant son expiration, afin que Cloudflare puisse évaluer les attributs du jeton.

Pour implémenter un jeton d'action reCAPTCHA, procédez comme suit :

  1. Créez une clé de jeton d'action pour votre site Web.

    gcloud

    Pour créer des clés reCAPTCHA, utilisez la commande gcloud recaptcha keys create.

    Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

    • DISPLAY_NAME : nom de la clé. Généralement un nom de site.
    • INTEGRATION_TYPE : type d'intégration. Spécifiez score ou checkbox.
    • DOMAIN_NAME : domaines ou sous-domaines de sites Web autorisés à utiliser la clé.

      Spécifiez plusieurs domaines sous la forme d'une liste d'éléments séparés par une virgule. Facultatif : Spécifiez --allow-all-domains pour désactiver la validation du domaine.

      La désactivation de la validation de domaine est un risque pour la sécurité, car il n'existe aucune restriction sur le site. Par conséquent, votre clé reCAPTCHA est accessible et utilisée par n'importe quel utilisateur.

    • WAF_FEATURE : nom de la fonctionnalité WAF. Spécifiez action-token.
    • WAF_SERVICE : nom du fournisseur de services WAF. Spécifiez cloudflare pour Cloudflare.

    Exécutez la commande gcloud recaptcha keys create :

    Linux, macOS ou Cloud Shell

    gcloud recaptcha keys create \
    --web \
    --display-name=DISPLAY_NAME  \
    --integration-type=INTEGRATION_TYPE \
    --domains=DOMAIN_NAME \
    --waf-feature=WAF_FEATURE \
    --waf-service=WAF_SERVICE

    Windows (PowerShell)

    gcloud recaptcha keys create `
    --web `
    --display-name=DISPLAY_NAME  `
    --integration-type=INTEGRATION_TYPE `
    --domains=DOMAIN_NAME `
    --waf-feature=WAF_FEATURE `
    --waf-service=WAF_SERVICE

    Windows (cmd.exe)

    gcloud recaptcha keys create ^
    --web ^
    --display-name=DISPLAY_NAME  ^
    --integration-type=INTEGRATION_TYPE ^
    --domains=DOMAIN_NAME ^
    --waf-feature=WAF_FEATURE ^
    --waf-service=WAF_SERVICE

    La réponse contient la clé reCAPTCHA nouvellement créée.

    REST

    Pour obtenir des informations de référence sur les types de clés et les types d'intégration, consultez les sections Clé et Type d'intégration.

    Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

    • DISPLAY_NAME : nom de la clé. Généralement un nom de site.
    • INTEGRATION_TYPE : type d'intégration. Spécifiez score ou checkbox.
    • DOMAIN_NAME : domaines ou sous-domaines de sites Web autorisés à utiliser la clé.

      Spécifiez plusieurs domaines sous la forme d'une liste d'éléments séparés par une virgule. Facultatif : Spécifiez --allow-all-domains pour désactiver la validation du domaine.

      La désactivation de la validation de domaine est un risque pour la sécurité, car il n'existe aucune restriction sur le site. Par conséquent, votre clé reCAPTCHA est accessible et utilisée par n'importe quel utilisateur.

    • WAF_FEATURE : nom de la fonctionnalité WAF. Spécifiez action-token.
    • WAF_SERVICE : nom du fournisseur de services WAF. Spécifiez cloudflare pour Cloudflare.

    Méthode HTTP et URL :

    POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys

    Corps JSON de la requête :

    
    {
      "displayName": "DISPLAY_NAME",
       'wafSettings': "  {
           "wafService": "WAF_SERVICE",
      
    "wafFeature": "WAF_FEATURE"
      }
      "webSettings": {
        "allowedDomains": "DOMAINS",
        "integrationType": "TYPE_OF_INTEGRATION"
       }
       
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys" | Select-Object -Expand Content

    Vous devriez recevoir une réponse JSON de ce type :

    
    {
      "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m",
    "displayName": "DISPLAY_NAME,
    
    "webSettings": {
      "allowAllDomains": true,
      "allowedDomains": [
        "localhost"
      ],
    
     "integrationType": "SCORE",
    
    
    },
    "wafSettings": {
      "wafService": "cloudflare",
    
      "wafFeature": "ACTION_TOKEN"
      
    
    }
    }
    
    

    Notez votre clé de jeton d'action pour une utilisation ultérieure.

  2. Intégrez le code JavaScript reCAPTCHA sur vos pages Web à l'aide de la clé de jeton d'action que vous avez créée. Pour obtenir des instructions, reportez-vous au document correspondant au type d'intégration de votre clé de jeton d'action.
  3. Après avoir reçu le jeton de reCAPTCHA, associez-le à un en-tête de requête prédéfini au format suivant :
     X-Recaptcha-Token: value-of-your-action-token
    

    Vous pouvez utiliser des langages tels que XHR, Ajax ou l'API Fetch pour associer le jeton à un en-tête de requête prédéfini.

    L'exemple de script suivant montre comment protéger l'action execute et associer le jeton à un en-tête de requête prédéfini à l'aide de JavaScript + XHR :

      
      <script>
        src="https://www.google.com/recaptcha/enterprise.js?render=ACTION_TOKEN_KEY"></script>
    
        <script>
        function onSuccess(action_token) {
             const xhr = new XMLHttpRequest();
             xhr.open('GET','YOUR_URL', false);
             // Attach the action-token to the predefined request header
             xhr.setRequestHeader("X-Recaptcha-Token", action_token);
             xhr.send(null);
           }
           function onError(reason) {
             alert('Response promise rejected: ' + reason);
           grecaptcha.enterprise.ready(function () {
             document.getElementById("execute-button").onclick = () => {
               grecaptcha.enterprise.execute('ACTION_TOKEN_KEY', {
               }).then(onSuccess, onError);
             };
           });
          }
        </script>
      
      

session-token

Le code JavaScript reCAPTCHA définit un jeton de session reCAPTCHA en tant que cookie sur le navigateur de l'utilisateur final après l'évaluation. Le navigateur de l'utilisateur final associe le cookie et l'actualise tant que le code JavaScript reCAPTCHA reste actif.

Pour fournir un jeton de session en tant que cookie, installez une clé de jeton de session sur au moins l'une de vos pages Web que l'utilisateur final parcourt avant la page à protéger. Par exemple, si vous souhaitez protéger la page de paiement, installez une clé de jeton de session sur la page d'accueil ou sur la page du produit.

Vous pouvez inclure le JavaScript reCAPTCHA sur vos pages Web en configurant le fichier wrangler.toml lors de l'installation du package reCAPTCHA pour Cloudflare ou installer la clé de session sur vos pages Web. L'inclusion du JavaScript reCAPTCHA de Cloudflare permet d'intégrer reCAPTCHA à l'aide de la clé de jeton de session, sans avoir à installer manuellement les clés sur vos pages Web.

Vous pouvez utiliser ce cookie pour protéger les requêtes ultérieures de l'utilisateur final et les chargements de page sur un domaine spécifique. Les jetons de session sont valides par défaut pendant 30 minutes. Toutefois, si l'utilisateur final reste sur la page où vous avez implémenté le jeton de session, reCAPTCHA actualise régulièrement le jeton de session pour empêcher son expiration.

Installez des jetons de session sur chaque page devant être protégée par reCAPTCHA. Nous vous recommandons de protéger chaque page avec reCAPTCHA et d'utiliser des règles Google Cloud Armor pour appliquer l'accès à toutes les pages, à l'exception de la première page que les utilisateurs finaux parcourent.

Voici un exemple de jeton de session reCAPTCHA :
   recaptcha-ca-t=value-of-your-session-token;domain=domain;expires=expiration_time

Pour implémenter un jeton de session reCAPTCHA, procédez comme suit :

  1. Créez une clé de jeton de session pour votre site Web.

    gcloud

    Pour créer des clés reCAPTCHA, utilisez la commande gcloud recaptcha keys create.

    Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

    • DISPLAY_NAME : nom de la clé. Généralement un nom de site.
    • INTEGRATION_TYPE : type d'intégration. Spécifiez score.
    • DOMAIN_NAME : domaines ou sous-domaines de sites Web autorisés à utiliser la clé.

      Spécifiez plusieurs domaines sous la forme d'une liste d'éléments séparés par une virgule. Facultatif : Spécifiez --allow-all-domains pour désactiver la validation du domaine.

      La désactivation de la validation de domaine est un risque pour la sécurité, car il n'existe aucune restriction sur le site. Par conséquent, votre clé reCAPTCHA est accessible et utilisée par n'importe quel utilisateur.

    • WAF_FEATURE : nom de la fonctionnalité WAF. Spécifiez session-token.
    • WAF_SERVICE : nom du fournisseur de services WAF. Spécifiez cloudflare pour Cloudflare.

    Exécutez la commande gcloud recaptcha keys create :

    Linux, macOS ou Cloud Shell

    gcloud recaptcha keys create \
    --web \
    --display-name=DISPLAY_NAME  \
    --integration-type=INTEGRATION_TYPE \
    --domains=DOMAIN_NAME \
    --waf-feature=WAF_FEATURE \
    --waf-service=WAF_SERVICE

    Windows (PowerShell)

    gcloud recaptcha keys create `
    --web `
    --display-name=DISPLAY_NAME  `
    --integration-type=INTEGRATION_TYPE `
    --domains=DOMAIN_NAME `
    --waf-feature=WAF_FEATURE `
    --waf-service=WAF_SERVICE

    Windows (cmd.exe)

    gcloud recaptcha keys create ^
    --web ^
    --display-name=DISPLAY_NAME  ^
    --integration-type=INTEGRATION_TYPE ^
    --domains=DOMAIN_NAME ^
    --waf-feature=WAF_FEATURE ^
    --waf-service=WAF_SERVICE

    La réponse contient la clé reCAPTCHA nouvellement créée.

    REST

    Pour obtenir des informations de référence sur les types de clés et les types d'intégration, consultez les sections Clé et Type d'intégration.

    Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

    • DISPLAY_NAME : nom de la clé. Généralement un nom de site.
    • INTEGRATION_TYPE : type d'intégration. Spécifiez score.
    • DOMAIN_NAME : domaines ou sous-domaines de sites Web autorisés à utiliser la clé.

      Spécifiez plusieurs domaines sous la forme d'une liste d'éléments séparés par une virgule. Facultatif : Spécifiez --allow-all-domains pour désactiver la validation du domaine.

      La désactivation de la validation de domaine est un risque pour la sécurité, car il n'existe aucune restriction sur le site. Par conséquent, votre clé reCAPTCHA est accessible et utilisée par n'importe quel utilisateur.

    • WAF_FEATURE : nom de la fonctionnalité WAF. Spécifiez session-token.
    • WAF_SERVICE : nom du fournisseur de services WAF. Spécifiez cloudflare pour Cloudflare.

    Méthode HTTP et URL :

    POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys

    Corps JSON de la requête :

    
    {
      "displayName": "DISPLAY_NAME",
       'wafSettings': "  {
           "wafService": "WAF_SERVICE",
      
    "wafFeature": "WAF_FEATURE"
      }
      "webSettings": {
        "allowedDomains": "DOMAINS",
        "integrationType": "TYPE_OF_INTEGRATION"
       }
       
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys" | Select-Object -Expand Content

    Vous devriez recevoir une réponse JSON de ce type :

    
    {
      "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m",
    "displayName": "DISPLAY_NAME,
    
    "webSettings": {
      "allowAllDomains": true,
      "allowedDomains": [
        "localhost"
      ],
    
     "integrationType": "SCORE",
    
    
    },
    "wafSettings": {
      "wafService": "cloudflare",
    
      "wafFeature": "SESSION_TOKEN"
    
    
    }
    }
    
    

    Notez votre clé de jeton de session pour une utilisation ultérieure.

    Si vous souhaitez injecter le code JavaScript reCAPTCHA à partir de Cloudflare, ignorez l'étape suivante et configurez wranger.toml.

  2. Ajoutez la clé de jeton de session et waf=session au code JavaScript reCAPTCHA.

    L'exemple de script suivant montre comment implémenter un jeton de session sur une page Web :

    <!DOCTYPE html>
    <html lang="en">
    <head>
     <meta charset="UTF-8">
     <title>reCAPTCHA WAF Session Token</title>
     <script src="https://www.google.com/recaptcha/enterprise.js?render=SESSION_TOKEN_KEY&waf=session" async defer></script>
     <body></body>
    </head>
    </html>

challenge-page

Lorsque vous implémentez une page de test reCAPTCHA, reCAPTCHA redirige vers une page interstitielle où il détermine s'il est nécessaire de présenter un test CAPTCHA à un utilisateur. Par conséquent, il est possible que les tests CAPTCHA ne soient pas visibles pour tous les utilisateurs.

Pour implémenter une page de test reCAPTCHA, procédez comme suit :

  1. Créez une clé de page de validation pour votre site Web.

    gcloud

    Pour créer des clés reCAPTCHA, utilisez la commande gcloud recaptcha keys create.

    Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

    • DISPLAY_NAME : nom de la clé. Généralement un nom de site.
    • INTEGRATION_TYPE : type d'intégration. Spécifiez invisible.
    • DOMAIN_NAME : domaines ou sous-domaines de sites Web autorisés à utiliser la clé. Spécifiez --allow-all-domains.
    • WAF_FEATURE : nom de la fonctionnalité WAF. Spécifiez challenge-page.
    • WAF_SERVICE : nom du fournisseur de services WAF. Spécifiez cloudflare pour Cloudflare.

    Exécutez la commande gcloud recaptcha keys create :

    Linux, macOS ou Cloud Shell

    gcloud recaptcha keys create \
    --web \
    --display-name=DISPLAY_NAME  \
    --integration-type=INTEGRATION_TYPE \
    --domains=DOMAIN_NAME \
    --waf-feature=WAF_FEATURE \
    --waf-service=WAF_SERVICE

    Windows (PowerShell)

    gcloud recaptcha keys create `
    --web `
    --display-name=DISPLAY_NAME  `
    --integration-type=INTEGRATION_TYPE `
    --domains=DOMAIN_NAME `
    --waf-feature=WAF_FEATURE `
    --waf-service=WAF_SERVICE

    Windows (cmd.exe)

    gcloud recaptcha keys create ^
    --web ^
    --display-name=DISPLAY_NAME  ^
    --integration-type=INTEGRATION_TYPE ^
    --domains=DOMAIN_NAME ^
    --waf-feature=WAF_FEATURE ^
    --waf-service=WAF_SERVICE

    La réponse contient la clé reCAPTCHA nouvellement créée.

    REST

    Pour obtenir des informations de référence sur les types de clés et les types d'intégration, consultez les sections Clé et Type d'intégration.

    Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

    • DISPLAY_NAME : nom de la clé. Généralement un nom de site.
    • INTEGRATION_TYPE : type d'intégration. Spécifiez invisible.
    • DOMAIN_NAME : domaines ou sous-domaines de sites Web autorisés à utiliser la clé. Spécifiez --allow-all-domains.
    • WAF_FEATURE : nom de la fonctionnalité WAF. Spécifiez challenge-page.
    • WAF_SERVICE : nom du fournisseur de services WAF. Spécifiez cloudflare pour Cloudflare.

    Méthode HTTP et URL :

    POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys

    Corps JSON de la requête :

    
    {
      "displayName": "DISPLAY_NAME",
       'wafSettings': "  {
           "wafService": "WAF_SERVICE",
      
    "wafFeature": "WAF_FEATURE"
      }
      "webSettings": {
        "allowedDomains": "DOMAINS",
        "integrationType": "TYPE_OF_INTEGRATION"
       }
       
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys" | Select-Object -Expand Content

    Vous devriez recevoir une réponse JSON de ce type :

    
    {
      "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m",
    "displayName": "DISPLAY_NAME,
    
    "webSettings": {
      "allowAllDomains": true,
      "allowedDomains": [
        "localhost"
      ],
    
      "integrationType": "INVISIBLE",
     
    
    },
    "wafSettings": {
      "wafService": "cloudflare",
    
      "wafFeature": "CHALLENGE_PAGE"
      
    
    }
    }
    
    

    Notez la clé de votre page de validation pour une utilisation ultérieure.

  2. Pour rediriger les utilisateurs vers la page de test reCAPTCHA et recevoir un jeton reCAPTCHA, créez une règle de pare-feu avec l'action redirect sur les pages protégées.

express

Pour implémenter reCAPTCHA Express, créez une clé Express.

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. gcloud

    Pour créer des clés reCAPTCHA, utilisez la commande gcloud recaptcha keys create.

    Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

    • DISPLAY_NAME : nom de la clé. Généralement un nom de site.
    • WAF_SERVICE : nom du fournisseur de services WAF. Spécifiez cloudflare pour Cloudflare.

    Exécutez la commande gcloud recaptcha keys create :

    Linux, macOS ou Cloud Shell

    gcloud recaptcha keys create \
    --express \
    --display-name=DISPLAY_NAME  \
    --waf-service=WAF_SERVICE

    Windows (PowerShell)

    gcloud recaptcha keys create `
    --express `
    --display-name=DISPLAY_NAME  `
    --waf-service=WAF_SERVICE

    Windows (cmd.exe)

    gcloud recaptcha keys create ^
    --express ^
    --display-name=DISPLAY_NAME  ^
    --waf-service=WAF_SERVICE

    La réponse contient la clé reCAPTCHA nouvellement créée.

    REST

    Pour obtenir des informations de référence sur les types de clés et les types d'intégration, consultez les sections Clé et Type d'intégration.

    Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

    • DISPLAY_NAME : nom de la clé. Généralement un nom de site.
    • WAF_SERVICE : nom du fournisseur de services WAF. Spécifiez cloudflare pour Cloudflare.

    Méthode HTTP et URL :

    POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys

    Corps JSON de la requête :

    
    {
      "displayName": "DISPLAY_NAME",
       'wafSettings': "  {
           "wafService": "WAF_SERVICE",
      
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys" | Select-Object -Expand Content

    Vous devriez recevoir une réponse JSON de ce type :

    
    {
      "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m",
    "displayName": "DISPLAY_NAME,
    
    },
    "wafSettings": {
      "wafService": "cloudflare",
    
      
    
    }
    }
    
    

    Notez votre clé express pour une utilisation ultérieure.

Intégrer à Cloudflare

Pour utiliser les règles de pare-feu reCAPTCHA, vous devez déployer et configurer une application sans serveur Cloudflare Worker.

Avant de commencer le processus d'intégration, procédez comme suit :

  1. Créez un CLOUDFLARE_API_TOKEN et choisissez le modèle Edit Cloudflare Workers. Notez le jeton API pour une utilisation ultérieure.

  2. Obtenez l'ID de compte de l'API Cloudflare et enregistrez-le pour une utilisation ultérieure.

Installer le package reCAPTCHA pour Cloudflare

  1. Téléchargez et installez le package reCAPTCHA pour Cloudflare :

    1. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    2. Installez le package wrangler :

       npm install -g wrangler
      
    3. Téléchargez le package reCAPTCHA pour Cloudflare :

      wget --load-cookies /tmp/cookies.txt https://dl.google.com/recaptchaenterprise/cloudflare_client/releases/recaptcha_cloudflare_client_0.0.2.tar.gz -O recaptcha_cloudflare_client_0.0.2.tar.gz && rm -rf /tmp/cookies.txt
      
    4. Décompressez le package reCAPTCHA pour Cloudflare :

      tar -xvzf recaptcha_cloudflare_client_0.0.2.tar.gz
      
  2. Dans le fichier wrangler.toml, configurez les variables suivantes dans la section vars :

    • API_KEY : clé API Google Cloud que vous avez créée pour l'authentification.
    • PROJECT_NUMBER : numéro de votre projet Google Cloud .
    • RECAPTCHA_EXPRESS_SITE_KEY : clé Express si vous utilisez reCAPTCHA Express.
    • RECAPTCHA_SESSION_SITE_KEY : clé du jeton de session si vous utilisez un jeton de session reCAPTCHA.
    • RECAPTCHA_ACTION_SITE_KEY : clé du jeton d'action si vous utilisez un jeton d'action reCAPTCHA.
    • RECAPTCHA_CHALLENGE_SITE_KEY : clé de la page de test si vous utilisez la page de test reCAPTCHA.
    • RECAPTCHA_JS_INSTALL_PATH : URL des pages sur lesquelles vous souhaitez que le worker Cloudflare installe le JavaScript reCAPTCHA à l'aide de la clé du jeton de session. Spécifiez les chemins d'accès sous la forme d'un modèle glob et utilisez ; comme délimiteur. Cette option n'est disponible que pour le jeton de session reCAPTCHA.
  3. Pour déployer l'application, procédez comme suit :

    wrangler deploy
    

Configurer les routes Cloudflare vers l'application Worker

  1. Connectez-vous au tableau de bord Cloudflare et sélectionnez votre compte.
  2. Dans le menu de navigation, cliquez sur Workers et pages, puis sélectionnez votre application Worker.
  3. Cliquez sur l'onglet Déclencheurs, puis sur Ajouter un itinéraire.
  4. Dans la boîte de dialogue Ajouter une route, saisissez le chemin d'accès à la page Web à protéger par reCAPTCHA, sélectionnez la zone appropriée, puis cliquez sur Ajouter une route.

Étapes suivantes