Integra reCAPTCHA para WAF con Cloudflare

En este documento, se muestra cómo integrar reCAPTCHA para WAF con Cloudflare.

Para completar la integración, debes implementar una o más funciones de reCAPTCHA para WAF, crear políticas de firewall de reCAPTCHA y realizar la integración con Cloudflare implementando y configurando una aplicación sin servidores de Cloudflare Worker.

Antes de comenzar

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

    Go to project selector

    Registra tu Google Cloud ID del proyecto para usarlo más adelante.

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

  3. Enable the reCAPTCHA Enterprise API.

    Enable the API

  4. Crea una clave de API para la autenticación:

    1. En la consola de Google Cloud , ve a la página Credenciales.

      Ir a Credenciales

    2. Haz clic en Crear credenciales y selecciona Clave de API.
    3. Registra la clave de API para usarla más adelante.

  5. Planifica cómo deseas implementar las funciones de reCAPTCHA para WAF para proteger tu sitio web.

    1. Elige una o más funciones del WAF que se adapten mejor a tu caso de uso.
    2. Identifica las páginas que deseas proteger.
    3. Elige el tipo de funciones del WAF que deseas implementar en las páginas identificadas.
    4. Identifica las condiciones para administrar el acceso de los usuarios.
    5. Comprende los componentes de la política de firewall de reCAPTCHA y sus atributos que te ayudan a crear políticas de firewall de reCAPTCHA. Para ver ejemplos, consulta Ejemplos de políticas de firewall de reCAPTCHA.
  6. Crea o elige una cuenta de Cloudflare con capacidades de Cloudflare Worker.

  7. Crea o elige un sitio web de Cloudflare.

  8. Descarga el paquete de reCAPTCHA para Cloudflare recaptcha_cloudflare_client_0.0.2.tar.gz.

Implementa funciones de reCAPTCHA para WAF

Según tus requisitos, puedes usar una o más funciones de reCAPTCHA para WAF en una sola aplicación.

Si quieres usar más de una función, debes crear una clave de reCAPTCHA para cada una de ellas y usarlas en tu aplicación. Por ejemplo, si deseas usar tokens de acción de reCAPTCHA y la página de desafío de reCAPTCHA, debes crear una clave de token de acción y una clave de página de desafío, y usarlas en tu aplicación.

action-token

Debes tener reCAPTCHA en funcionamiento en tus páginas web para generar tokens de acción. Después de que reCAPTCHA genera un token de acción, lo adjuntas a un encabezado de solicitud predefinido donde necesites proteger cualquier acción del usuario, como checkout. De forma predeterminada, los tokens de acción son válidos durante 30 minutos, pero pueden variar según el tráfico. Debes adjuntar el token de acción a un encabezado de solicitud predefinido antes de que venza el token para que Cloudflare pueda evaluar los atributos del token.

Para implementar un token de acción de reCAPTCHA, haz lo siguiente:

  1. Crea una clave de token de acción para tu sitio web.

    gcloud

    Para crear claves de reCAPTCHA, usa el comando gcloud recaptcha keys create.

    Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

    • DISPLAY_NAME: Nombre de la clave. Por lo general, es el nombre del sitio.
    • INTEGRATION_TYPE: Tipo de integración. Especifica score o checkbox.
    • DOMAIN_NAME: Dominios o subdominios de sitios web autorizados para usar la clave.

      Especifica varios dominios como una lista separada por comas. Opcional: Especifica --allow-all-domains para inhabilitar la verificación del dominio.

      Inhabilitar la verificación del dominio es un riesgo de seguridad porque no hay restricciones en el sitio, por lo que cualquier persona puede acceder a tu clave de reCAPTCHA y usarla.

    • WAF_FEATURE: Es el nombre de la función del WAF. Especifica action-token.
    • WAF_SERVICE: Nombre del proveedor de servicios del WAF. Especifica cloudflare para Cloudflare.

    Ejecuta el comando gcloud recaptcha keys create:

    Linux, macOS o 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 respuesta contiene la clave de reCAPTCHA recién creada.

    REST

    Para obtener información de referencia de la API sobre los tipos de claves y los tipos de integración, consulta Key y Integration type.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • DISPLAY_NAME: Nombre de la clave. Por lo general, es el nombre del sitio.
    • INTEGRATION_TYPE: Tipo de integración. Especifica score o checkbox.
    • DOMAIN_NAME: Dominios o subdominios de sitios web autorizados para usar la clave.

      Especifica varios dominios como una lista separada por comas. Opcional: Especifica --allow-all-domains para inhabilitar la verificación del dominio.

      Inhabilitar la verificación del dominio es un riesgo de seguridad porque no hay restricciones en el sitio, por lo que cualquier persona puede acceder a tu clave de reCAPTCHA y usarla.

    • WAF_FEATURE: Es el nombre de la función del WAF. Especifica action-token.
    • WAF_SERVICE: Nombre del proveedor de servicios del WAF. Especifica cloudflare para Cloudflare.

    Método HTTP y URL:

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

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    $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

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

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

    Registra tu clave de token de acción para usarla más adelante.

  2. Integra el JavaScript de reCAPTCHA en tus páginas web con la clave del token de acción que creaste. Para obtener instrucciones, consulta el documento que corresponde al tipo de integración de tu clave de token de acción.
  3. Después de recibir el token de reCAPTCHA, adjúntalo a un encabezado de solicitud predefinido con el siguiente formato:
     X-Recaptcha-Token: value-of-your-action-token
    

    Puedes usar lenguajes como XHR, Ajax o la API de Fetch para adjuntar el token a un encabezado de solicitud predefinido.

    La siguiente secuencia de comandos de ejemplo muestra cómo proteger la acción execute y adjuntar el token a un encabezado de solicitud predefinido con JavaScript y 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

El JavaScript de reCAPTCHA establece un token de sesión de reCAPTCHA como una cookie en el navegador del usuario final después de la evaluación. El navegador del usuario final adjunta la cookie y la actualiza mientras el código JavaScript de reCAPTCHA permanezca activo.

Para proporcionar un token de sesión como cookie, instala una clave de token de sesión en al menos una de tus páginas web que el usuario final explore antes de la página que debe protegerse. Por ejemplo, si quieres proteger la página de confirmación de compra, instala una clave de token de sesión en la página principal o en la página del producto.

Puedes incluir el código JavaScript de reCAPTCHA en tus páginas web configurando el archivo wrangler.toml cuando instales el paquete de reCAPTCHA para Cloudflare o instalar la clave de sesión en tus páginas web. Incluir el código JavaScript de reCAPTCHA de Cloudflare integra reCAPTCHA con la clave del token de sesión sin necesidad de instalar las claves manualmente en tus páginas web.

Puedes usar esta cookie para proteger las solicitudes posteriores y las cargas de página del usuario final en un dominio específico. De forma predeterminada, los tokens de sesión son válidos durante 30 minutos. Sin embargo, si el usuario final permanece en la página en la que implementaste el token de sesión, reCAPTCHA actualizará el token de sesión periódicamente para evitar que venza.

Instala tokens de sesión en cada página que deba protegerse con reCAPTCHA. Te recomendamos que protejas todas las páginas con reCAPTCHA y que uses reglas de Google Cloud Armor para aplicar el acceso en todas las páginas, excepto la primera que exploran los usuarios finales.

A continuación, se muestra un ejemplo de token de sesión de reCAPTCHA:
   recaptcha-ca-t=value-of-your-session-token;domain=domain;expires=expiration_time

Para implementar un token de sesión de reCAPTCHA, haz lo siguiente:

  1. Crea una clave de token de sesión para tu sitio web.

    gcloud

    Para crear claves de reCAPTCHA, usa el comando gcloud recaptcha keys create.

    Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

    • DISPLAY_NAME: Nombre de la clave. Por lo general, es el nombre del sitio.
    • INTEGRATION_TYPE: Tipo de integración. Especifica score.
    • DOMAIN_NAME: Dominios o subdominios de sitios web autorizados para usar la clave.

      Especifica varios dominios como una lista separada por comas. Opcional: Especifica --allow-all-domains para inhabilitar la verificación del dominio.

      Inhabilitar la verificación del dominio es un riesgo de seguridad porque no hay restricciones en el sitio, por lo que cualquier persona puede acceder a tu clave de reCAPTCHA y usarla.

    • WAF_FEATURE: Es el nombre de la función del WAF. Especifica session-token.
    • WAF_SERVICE: Nombre del proveedor de servicios del WAF. Especifica cloudflare para Cloudflare.

    Ejecuta el comando gcloud recaptcha keys create:

    Linux, macOS o 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 respuesta contiene la clave de reCAPTCHA recién creada.

    REST

    Para obtener información de referencia de la API sobre los tipos de claves y los tipos de integración, consulta Key y Integration type.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • DISPLAY_NAME: Nombre de la clave. Por lo general, es el nombre del sitio.
    • INTEGRATION_TYPE: Tipo de integración. Especifica score.
    • DOMAIN_NAME: Dominios o subdominios de sitios web autorizados para usar la clave.

      Especifica varios dominios como una lista separada por comas. Opcional: Especifica --allow-all-domains para inhabilitar la verificación del dominio.

      Inhabilitar la verificación del dominio es un riesgo de seguridad porque no hay restricciones en el sitio, por lo que cualquier persona puede acceder a tu clave de reCAPTCHA y usarla.

    • WAF_FEATURE: Es el nombre de la función del WAF. Especifica session-token.
    • WAF_SERVICE: Nombre del proveedor de servicios del WAF. Especifica cloudflare para Cloudflare.

    Método HTTP y URL:

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

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    $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

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

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

    Registra tu clave de token de sesión para usarla más adelante.

    Si deseas insertar el código JavaScript de reCAPTCHA desde Cloudflare, omite el siguiente paso y configura wranger.toml.

  2. Agrega la clave session-token y waf=session al código JavaScript de reCAPTCHA.

    En la siguiente secuencia de comandos de ejemplo, se muestra cómo implementar un token de sesión en una página 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

Cuando implementas una página de desafío de reCAPTCHA, reCAPTCHA redirecciona a una página intersticial en la que determina si es necesario mostrarle un desafío CAPTCHA a un usuario. Por lo tanto, es posible que los desafíos de CAPTCHA no sean visibles para todos los usuarios.

Para implementar una página de desafío de reCAPTCHA, haz lo siguiente:

  1. Crea una clave de página de desafío para tu sitio web.

    gcloud

    Para crear claves de reCAPTCHA, usa el comando gcloud recaptcha keys create.

    Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

    • DISPLAY_NAME: Nombre de la clave. Por lo general, es el nombre del sitio.
    • INTEGRATION_TYPE: Tipo de integración. Especifica invisible.
    • DOMAIN_NAME: Dominios o subdominios de sitios web autorizados para usar la clave. Especifica --allow-all-domains.
    • WAF_FEATURE: Es el nombre de la función del WAF. Especifica challenge-page.
    • WAF_SERVICE: Nombre del proveedor de servicios del WAF. Especifica cloudflare para Cloudflare.

    Ejecuta el comando gcloud recaptcha keys create:

    Linux, macOS o 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 respuesta contiene la clave de reCAPTCHA recién creada.

    REST

    Para obtener información de referencia de la API sobre los tipos de claves y los tipos de integración, consulta Key y Integration type.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • DISPLAY_NAME: Nombre de la clave. Por lo general, es el nombre del sitio.
    • INTEGRATION_TYPE: Tipo de integración. Especifica invisible.
    • DOMAIN_NAME: Dominios o subdominios de sitios web autorizados para usar la clave. Especifica --allow-all-domains.
    • WAF_FEATURE: Es el nombre de la función del WAF. Especifica challenge-page.
    • WAF_SERVICE: Nombre del proveedor de servicios del WAF. Especifica cloudflare para Cloudflare.

    Método HTTP y URL:

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

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    $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

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

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

    Registra la clave de la página de desafío para usarla más adelante.

  2. Para redireccionar a los usuarios a la página de desafío de reCAPTCHA y recibir un token de reCAPTCHA, crea una política de firewall con la acción redirect en las páginas protegidas.

express

Para implementar reCAPTCHA Express, crea una clave de 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

    Para crear claves de reCAPTCHA, usa el comando gcloud recaptcha keys create.

    Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

    • DISPLAY_NAME: Nombre de la clave. Por lo general, es el nombre del sitio.
    • WAF_SERVICE: Nombre del proveedor de servicios del WAF. Especifica cloudflare para Cloudflare.

    Ejecuta el comando gcloud recaptcha keys create:

    Linux, macOS o 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 respuesta contiene la clave de reCAPTCHA recién creada.

    REST

    Para obtener información de referencia de la API sobre los tipos de claves y los tipos de integración, consulta Key y Integration type.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • DISPLAY_NAME: Nombre de la clave. Por lo general, es el nombre del sitio.
    • WAF_SERVICE: Nombre del proveedor de servicios del WAF. Especifica cloudflare para Cloudflare.

    Método HTTP y URL:

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

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    $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

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

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

    Registra tu clave de Express para usarla más adelante.

Integración con Cloudflare

Para usar las políticas de firewall de reCAPTCHA, debes implementar y configurar una aplicación sin servidores de Cloudflare Worker.

Antes de comenzar el proceso de integración, haz lo siguiente:

  1. Crea un CLOUDFLARE_API_TOKEN y elige la plantilla Edit Cloudflare Workers. Registra el token de API para usarlo más adelante.

  2. Obtén el ID de tu cuenta de la API de Cloudflare y regístralo para usarlo más adelante.

Instala el paquete de reCAPTCHA para Cloudflare

  1. Descarga e instala el paquete de reCAPTCHA para 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. Instala el paquete wrangler:

       npm install -g wrangler
      
    3. Descarga el paquete de reCAPTCHA para 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. Descomprime el paquete de reCAPTCHA para Cloudflare:

      tar -xvzf recaptcha_cloudflare_client_0.0.2.tar.gz
      
  2. En el archivo wrangler.toml, configura las siguientes variables en la sección vars:

    • API_KEY: Es la clave de la API de Google Cloud que creaste para la autenticación.
    • PROJECT_NUMBER: Es el número de tu proyecto de Google Cloud .
    • RECAPTCHA_EXPRESS_SITE_KEY: Es la clave de Express si usas reCAPTCHA Express.
    • RECAPTCHA_SESSION_SITE_KEY: Es la clave del token de sesión si usas el token de sesión de reCAPTCHA.
    • RECAPTCHA_ACTION_SITE_KEY: Es la clave del token de acción si usas el token de acción de reCAPTCHA.
    • RECAPTCHA_CHALLENGE_SITE_KEY: Es la clave de la página de desafío si usas la página de desafío de reCAPTCHA.
    • RECAPTCHA_JS_INSTALL_PATH: URLs de las páginas en las que deseas que el trabajador de Cloudflare instale el JavaScript de reCAPTCHA con la clave del token de sesión. Especifica las rutas de acceso como un patrón glob y usa ; como delimitador. Esta opción solo está disponible para el token de sesión de reCAPTCHA.
  3. Implementa la aplicación:

    wrangler deploy
    

Configura rutas de Cloudflare para la aplicación de Worker

  1. Accede al panel de Cloudflare y selecciona tu cuenta.
  2. En el menú de navegación, haz clic en Workers & Pages y, luego, selecciona tu aplicación de Worker.
  3. Haz clic en la pestaña Activadores y, luego, en Agregar ruta.
  4. En el cuadro de diálogo Agregar ruta, ingresa la ruta de acceso de la página web que debe protegerse con reCAPTCHA, selecciona la zona adecuada y haz clic en Agregar ruta.

¿Qué sigue?