Integrazione con Google Cloud Armor per applicazioni mobile

Questo documento mostra come integrare le funzionalità WAF di reCAPTCHA Enterprise con Google Cloud Armor nelle applicazioni mobile.

Per completare l'integrazione, devi implementare una o più funzionalità di reCAPTCHA Enterprise per WAF e configurare i criteri di sicurezza di Google Cloud Armor. Tuttavia, puoi implementare solo i token di azione reCAPTCHA per l'integrazione con Google Cloud Armor nelle applicazioni mobile.

Prima di iniziare

  1. Abilita l'API reCAPTCHA Enterprise.

    Abilita l'API

  2. Identifica le azioni che vuoi proteggere.

Implementare i token di azione reCAPTCHA

Per generare token di azione, è necessario che reCAPTCHA Enterprise sia in esecuzione sulla tua applicazione mobile. Dopo che reCAPTCHA Enterprise ha generato un token di azione, lo colleghi a un'intestazione di richiesta predefinita ogni volta che devi proteggere qualsiasi azione dell'utente, ad esempio checkout. Per impostazione predefinita, i token di azione sono validi per 30 minuti, ma possono variare in base al traffico. Devi collegare il token di azione a un'intestazione della richiesta predefinita prima che scada, in modo che Google Cloud Armor possa valutare gli attributi del token.

Per implementare un token di azione reCAPTCHA:

  1. Creare una chiave token di azione per la tua applicazione mobile.

    Console

    1. Nella console Google Cloud, vai alla pagina reCAPTCHA Enterprise.

      Vai a reCAPTCHA Enterprise

    2. Verifica che il nome del progetto venga visualizzato nel selettore di risorse nella parte superiore della pagina.

      Se non vedi il nome del progetto, fai clic sul selettore di risorse e seleziona il progetto.

    3. Fai clic su Crea chiave.

    4. Nel campo Nome visualizzato, inserisci il nome visualizzato per la chiave.
    5. A seconda del tipo di applicazione per cui vuoi creare le chiavi reCAPTCHA per WAF, esegui l'azione appropriata:
    6. Creare chiavi reCAPTCHA per applicazioni WAF per iOS

      Ti consigliamo di creare una chiave reCAPTCHA per applicazione iOS.

      1. Nel menu Scegli il tipo di piattaforma, seleziona App per iOS.
        1. Nella sezione Elenco degli ID bundle iOS, fai clic su Aggiungi ID bundle iOS.
        2. Nel campo ID pacchetto, inserisci il nome dell'ID pacchetto iOS.

        3. (Facoltativo) Per aggiungere un ulteriore ID pacchetto, fai clic su Aggiungi ID bundle iOS e inserisci il nome dell'ID pacchetto iOS nel campo ID pacchetto.
        4. (Facoltativo) Fornisci le impostazioni di Apple Developer.

          Ti consigliamo di fornire questi dati perché consentono a reCAPTCHA Enterprise di fornire punteggi di rischio più accurati per il tuo traffico.

          Inserisci le seguenti informazioni:

          • Chiave privata (.p8): viene generata nell'Apple Developer Center in Certificati, ID e profili.
          • Identificatore chiave: l'identificatore chiave dello sviluppatore Apple (stringa di 10 caratteri).
          • ID team: l'ID team Apple (stringa di 10 caratteri) proprietario del profilo di provisioning, utilizzato per creare l'applicazione.
        5. Espandi Verifica dell'ID pacchetto e tipo di chiave.
          1. Per creare una chiave reCAPTCHA per WAF:
            1. Attiva l'opzione Web application firewall (WAF).
            2. Dal menu Servizio, seleziona Cloud Armor.
            3. Nel menu Funzionalità, seleziona Token azione.
          2. Per proteggere la chiave reCAPTCHA per i tuoi ID pacchetto, assicurati che l'opzione Disabilita la verifica dell'ID pacchetto sia disattivata.
          3. Per un ambiente non di produzione, se vuoi specificare un punteggio che vuoi che la chiave restituisca quando vengono create valutazioni, segui questi passaggi:

            1. Fai clic sul pulsante di attivazione/disattivazione Questa è una chiave di test.
            2. Nella casella Punteggio, specifica un punteggio compreso tra 0 e 1,0.
        6. Fai clic su Crea chiave.
        7. La chiave appena creata è elencata nella pagina Chiavi reCAPTCHA.

      Creare chiavi reCAPTCHA per WAF per le applicazioni Android

      1. Nel menu Scegli il tipo di piattaforma, seleziona App per Android.
      2. Nella sezione Elenco pacchetti Android, fai clic su Aggiungi pacchetto Android.
      3. Nel campo Pacchetto Android, inserisci il nome del pacchetto Android.

      4. (Facoltativo) Per aggiungere un altro pacchetto, fai clic su Aggiungi pacchetto Android e inserisci il nome di un altro pacchetto Android nel campo Pacchetto Android.
      5. Espandi Verifica del nome del pacchetto, distribuzione delle app e chiavi di test.
        1. Per creare una chiave reCAPTCHA per WAF:
          1. Attiva l'opzione Web application firewall (WAF).
          2. Dal menu Servizio, seleziona Cloud Armor.
          3. Nel menu Funzionalità, seleziona Token azione.
        2. Per forzare l'applicazione della chiave reCAPTCHA viene utilizzata solo all'interno della tua app, disattiva l'opzione Disabilita la verifica del nome del pacchetto.
        3. Se vuoi creare una chiave per un'applicazione che sia disponibile in altri store oltre che su Google Play Store, attiva Supporta applicazioni distribuite al di fuori del Google Play Store.
        4. Per un ambiente non di produzione, se vuoi specificare un punteggio che vuoi che la chiave restituisca quando vengono create valutazioni, segui questi passaggi:

          1. Fai clic sul pulsante di attivazione/disattivazione Questa è una chiave di test.
          2. Nella casella Punteggio, specifica un punteggio compreso tra 0 e 1,0.
      6. Fai clic su Crea chiave.
      7. La chiave appena creata è elencata nella pagina Chiavi reCAPTCHA.

    gcloud (iOS)

    Per creare chiavi reCAPTCHA, utilizza il comando gcloud recaptcha keys create.

    Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:

    • DISPLAY_NAME: nome della chiave. In genere il nome di un sito.
    • BUNDLE_IDs: ID bundle iOS di app a cui è consentito utilizzare la chiave. Specifica più ID bundle come elenco separato da virgole.
    • WAF_FEATURE: nome della funzionalità WAF. Specifica action-token.
    • WAF_SERVICE: nome del fornitore di servizi WAF. Specifica CA per Google Cloud Armor.

    Esegui il comando gcloud recaptcha keys create:

    Linux, macOS o Cloud Shell

    
    gcloud recaptcha keys create \
    --display-name=DISPLAY_NAME  \
    --ios --bundle-ids=BUNDLE_IDs \
    --waf-feature=WAF_FEATURE \
    --waf-service=WAF_SERVICE 
    

    Windows (PowerShell)

    
    gcloud recaptcha keys create `
    --display-name=DISPLAY_NAME  `
    --ios --bundle-ids=BUNDLE_IDs `
    --waf-feature=WAF_FEATURE `
    --waf-service=WAF_SERVICE 
    

    Windows (cmd.exe)

    
    gcloud recaptcha keys create ^
    --display-name=DISPLAY_NAME  ^
    --ios --bundle-ids=BUNDLE_IDs ^
    --waf-feature=WAF_FEATURE ^
    --waf-service=WAF_SERVICE 
    

    La risposta contiene la chiave reCAPTCHA appena creata.

    gcloud (Android)

    Per creare chiavi reCAPTCHA, utilizza il comando gcloud recaptcha keys create.

    Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:

    • DISPLAY_NAME: nome della chiave. In genere il nome di un sito.
    • PACKAGE_NAMES: nomi dei pacchetti Android delle app a cui è consentito utilizzare la chiave. Specifica più nomi di pacchetti sotto forma di elenco separato da virgole.
    • WAF_FEATURE: nome della funzionalità WAF. Specifica action-token.
    • WAF_SERVICE: nome del fornitore di servizi WAF. Specifica CA per Google Cloud Armor.

    Esegui il comando gcloud recaptcha keys create:

    Linux, macOS o Cloud Shell

    
    gcloud recaptcha keys create \
    --display-name=DISPLAY_NAME  \
    --android --package-names=PACKAGE_NAMES \
    --waf-feature=WAF_FEATURE \
    --waf-service=WAF_SERVICE 
    
    

    Windows (PowerShell)

    
    gcloud recaptcha keys create `
    --display-name=DISPLAY_NAME  `
    --android --package-names=PACKAGE_NAMES `
    --waf-feature=WAF_FEATURE `
    --waf-service=WAF_SERVICE 
    
    

    Windows (cmd.exe)

    
    gcloud recaptcha keys create ^
    --display-name=DISPLAY_NAME  ^
    --android --package-names=PACKAGE_NAMES ^
    --waf-feature=WAF_FEATURE ^
    --waf-service=WAF_SERVICE 
    
    

    La risposta contiene la chiave reCAPTCHA appena creata.

    REST (iOS)

    Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

    • DISPLAY_NAME: nome della chiave. In genere il nome di un'app.
    • BUNDLE_IDs: ID bundle iOS di app a cui è consentito utilizzare la chiave. Specifica più ID bundle come elenco separato da virgole.
    • WAF_FEATURE: nome della funzionalità WAF. Specifica action-token.
    • WAF_SERVICE: nome del fornitore di servizi WAF. Specifica CA per Google Cloud Armor.

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

    {
      "displayName": "DISPLAY_NAME",
      "iosSettings": {
     "allowedBundleIds": "BUNDLE_IDS"
     },
       'wafSettings': "  {
           "wafService": "CA",
     "wafFeature": "ACTION_TOKEN"
      }
     }
    
    

    Per inviare la richiesta, scegli una delle seguenti opzioni:

    arricciatura

    Salva il corpo della richiesta in un file denominato request.json ed esegui questo 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

    Salva il corpo della richiesta in un file denominato request.json ed esegui questo 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

    Dovresti ricevere una risposta JSON simile alla seguente:

    
    {
      "name": "projects/project-id/keys/6LfhtywnAAAAABY3sCS2duZ6A55kmDXz-PNEgKgT",
      "displayName": "DISPLAY_NAME",
      "iosSettings": {
        "allowAllBundleIds": false,
        "allowedBundleIds": [
            BUNDLE_IDS
        ]
      },
      "labels": {},
      "wafSettings": {
          "wafService": "CA",
          "wafFeature": "ACTION_TOKEN"
      }
    }
    
    

    REST (Android)

    Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

    • DISPLAY_NAME: nome della chiave. In genere il nome di un'app.
    • PACKAGE_NAMES: nomi dei pacchetti Android delle app a cui è consentito utilizzare la chiave. Specifica più nomi di pacchetti sotto forma di elenco separato da virgole.
    • WAF_FEATURE: nome della funzionalità WAF. Specifica action-token.
    • WAF_SERVICE: nome del fornitore di servizi WAF. Specifica CA per Google Cloud Armor.

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

    {
      "displayName": "DISPLAY_NAME",
      "androidSettings": {
      "allowedPackageNames":"PACKAGE_NAMES"
     },
       'wafSettings': "  {
           "wafService": "CA",
     "wafFeature": "ACTION_TOKEN"
      }
     }
    
    

    Per inviare la richiesta, scegli una delle seguenti opzioni:

    arricciatura

    Salva il corpo della richiesta in un file denominato request.json ed esegui questo 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

    Salva il corpo della richiesta in un file denominato request.json ed esegui questo 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

    Dovresti ricevere una risposta JSON simile alla seguente:

    
    {
      "name": "projects/project-id/keys/6LcioSknAAAAABrjlMuZv2fjIGYMqwaAFC9izhoy",
      "displayName": "DISPLAY_NAME",
      "androidSettings": {
          "allowAllPackageNames": false,
          "allowedPackageNames": [
              PACKAGE_NAMES
          ],
          "supportNonGoogleAppStoreDistribution": false
      },
      "labels": {},
      "wafSettings": {
          "wafService": "CA",
          "wafFeature": "ACTION_TOKEN"
      }
    }
    
    

  2. Integra l'SDK mobile di reCAPTCHA Enterprise nelle tue applicazioni mobile con la chiave del token di azione che hai creato. Per le istruzioni, consulta il documento corrispondente al tipo di applicazione mobile.

  3. Dopo aver ricevuto il token da reCAPTCHA Enterprise, collegalo a un'intestazione della richiesta predefinita nel seguente formato:

    X-Recaptcha-Token: value-of-your-action-token
    

    Il seguente codice campione mostra come collegare il token:

    Android

    Codice campione in Java

    
    // This example shows how to send an HTTP request to the backend server
    // attached with the reCAPTCHA token in the header.
    //
    // @param serverUrl: the URL of the backend server.
    // @param rceToken: reCAPTCHA token that is attached to the header of the
    // HTTP request.
    
    public static void sendRequestToServerWithRceToken(
        String serverUrl, String rceToken) throws JSONException, IOException {
     URL url = new URL(String.format("http://%s/decryptcaptchacookie/accesswafserver", serverUrl));
     HttpURLConnection connection = (HttpURLConnection) url.openConnection();
     connection.setRequestProperty("X-Recaptcha-Token", rceToken);
    
     try {
        String requestBody = "['']";
        sendRequest(connection, requestBody, "AccessWithRceToken", "GET");
     } finally {
        connection.disconnect();
     }
    }
    
    private static void sendRequest(
        HttpURLConnection connection, String requestString, String requestName, String action)
        throws IOException {
     connection.setConnectTimeout(HTTP_CONNECT_TIMEOUT_MS);
     connection.setReadTimeout(HTTP_READ_TIMEOUT_MS);
     connection.setRequestProperty("Content-type", CONTENT_TYPE);
     connection.setRequestProperty(
        "Content-Length", Integer.toString(Utf8.encodedLength(requestString)));
     connection.setRequestMethod(action);
     connection.setDoOutput(true);
     connection.connect();
     try (OutputStream postStream = connection.getOutputStream()) {
        postStream.write(requestString.getBytes(UTF_8));
     }
    
     int responseCode = connection.getResponseCode();
     String response = connection.getResponseMessage();
     if (responseCode != HttpURLConnection.HTTP_OK) {
        throw new IOException(
           String.format(
              "Failed to complete request.\nResponse code:%s\nError Detail:\n%s",
              responseCode, response));
     }
    }
    
    

    iOS

    Codice campione in Swift

    
    // This example shows how to send an HTTP request to the backend server
    // attached with the reCAPTCHA token in the header.
    // @param serverUrl: the URL of the backend server.
    // @param rceToken: reCAPTCHA token that is attached to the header of
    // the HTTP request.
    
     public static func accessWafServer(rceToken: String, serverUrl: String)
        async throws -> String
     {
        let requestURL = try HttpHelper.createRequestURL(endpoint: serverUrl)
        var request = try HttpHelper.createRequest(requestURL: requestURL, action: "GET")
        request.setValue(rceToken, forHTTPHeaderField: "X-Recaptcha-Token")
    
        let data = try await HttpHelper.getDataFromServer(request)
    
        return String(decoding: data, as: UTF8.self)
     }
    
    

Configura i criteri di sicurezza di Google Cloud Armor

Dopo aver implementato le funzionalità di reCAPTCHA Enterprise per WAF, devi configurare i criteri di sicurezza di Google Cloud Armor che valutano i token reCAPTCHA Enterprise per la gestione dei bot.

Per scoprire come configurare i criteri di sicurezza di Google Cloud Armor e utilizzare le chiavi dei token di azione con i criteri di sicurezza, consulta Configurare le regole per la gestione dei bot.

Passaggi successivi