Exemples d'intégration avec Google Cloud Armor

Ce document présente des exemples d'implémentation des fonctionnalités de reCAPTCHA Enterprise pour WAF dans Google Cloud Armor.

Vous pouvez utiliser une ou plusieurs fonctionnalités de reCAPTCHA Enterprise pour WAF dans une même 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 une 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.

Exemple 1 : Utiliser la page de test reCAPTCHA et les jetons de session reCAPTCHA

Vous pouvez ajouter un jeton de session reCAPTCHA sur les pages auxquelles un utilisateur peut accéder afin que le cookie soit actualisé régulièrement (par exemple, une page de connexion). Configurez une règle de stratégie de sécurité Google Cloud Armor pour rediriger la requête vers une page de test reCAPTCHA lorsque le score est faible.

L'illustration suivante montre un workflow qui utilise les fonctionnalités de page de test reCAPTCHA et de jeton de session reCAPTCHA :

Exemple 2 : Utiliser la page de test reCAPTCHA et les jetons d'action reCAPTCHA

Vous pouvez ajouter un jeton d'action reCAPTCHA pour protéger une action de l'utilisateur, comme le paiement. Configurez une règle de stratégie de sécurité Google Cloud Armor pour rediriger la requête vers une page de test reCAPTCHA dans l'une des conditions suivantes:

  • Le score est faible.
  • L'attribut action_name du jeton d'action ne correspond pas à l'action utilisateur protégée.

L'illustration suivante montre un workflow qui utilise les fonctionnalités de page de test reCAPTCHA et de jeton d'action reCAPTCHA :

L'exemple de script suivant montre comment utiliser un jeton d'action reCAPTCHA et comment rediriger vers une page de test reCAPTCHA avec ce jeton associé comme en-tête:

   <script src="https://www.google.com/recaptcha/enterprise.js?render=ACTION_TOKEN_SITE_KEY"></script>
    <script>
     function onSuccess(token) {
       const xhr = new XMLHttpRequest();
       xhr.open('GET','http://www.example.com/checkout', false);
       xhr.setRequestHeader("X-Recaptcha-Token", token);
       xhr.onreadystatechange = function() {
         // Make sure that the request is finished and response is ready with 200
         if (this.readyState == 4 && this.status == 200) {
           // Display the response, it could be a reCAPTCHA challenge
           // page based on your Google Cloud Armor security rule settings.
            document.open();
            document.write(xhr.responseText);
            document.close();

         }
       };
       xhr.send(null);
     }

     grecaptcha.enterprise.ready(function () {
       document.getElementById("execute-button").onclick = () => {
         grecaptcha.enterprise.execute('ACTION_TOKEN_SITE_KEY', {
         }).then(onSuccess, onError);
       };
     });
    </script>

Étapes suivantes