Eseguire l'integrazione con Google Cloud Armor per le applicazioni mobile

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

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

Prima di iniziare

  1. Abilita l'API reCAPTCHA Enterprise.

    Enable the API

  2. Identifica le azioni che vuoi proteggere.

Implementa i token di azione reCAPTCHA

Per generare i token di azione, devi avere reCAPTCHA in esecuzione nella tua applicazione mobile. Dopo che reCAPTCHA ha generato un token di azione, devi collegarlo a un token di azione predefinito richiesta di intestazione ovunque sia necessario proteggere qualsiasi azione dell'utente, ad esempio checkout. Per impostazione predefinita, i token di azione sono validi per 30 minuti, ma possono variare a seconda del traffico. Devi collegare il token di azione a un'intestazione della richiesta predefinita prima della scadenza del token, Google Cloud Armor può valutare gli attributi del token.

Per implementare un token di azione reCAPTCHA, segui questi passaggi:

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

    Console

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

      Vai a reCAPTCHA

    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 poi seleziona il progetto.

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

      Ti consigliamo di creare una chiave reCAPTCHA per ogni applicazione iOS.

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

        3. (Facoltativo) Per aggiungere un altro ID pacchetto, fai clic su Aggiungi ID pacchetto iOS. e inserisci il nome del tuo 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 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, identificatori e profili.
          • Identificatore chiave: l'identificatore della chiave sviluppatore Apple (stringa di 10 caratteri).
          • ID team: l'ID team Apple (stringa di 10 caratteri) proprietario del provisioning utilizzato per creare la tua 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. Dal menu Funzionalità, seleziona Token azione.
          2. Per proteggere la chiave reCAPTCHA per i tuoi ID bundle, assicurati che l'opzione di attivazione/disattivazione Disattiva verifica ID bundle sia disattivata.
          3. Per l'ambiente non di produzione, se vuoi specificare un punteggio che la chiave deve restituire quando vengono create valutazioni, procedi nel seguente modo:

            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. Dal menu Scegli il tipo di piattaforma, seleziona App per Android.
      2. Nella sezione Elenco pacchetti Android, fai clic su Aggiungi Android. pacchetto.
      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, segui questi passaggi:
          1. Attiva l'opzione Web application firewall (WAF).
          2. Dal menu Servizio, seleziona Cloud Armor.
          3. Dal menu Funzionalità, seleziona Token di azione.
        2. Per imporre che la chiave reCAPTCHA venga utilizzata solo all'interno della tua app, disattiva l'opzione di attivazione/disattivazione Disattiva la verifica del nome pacchetto.
        3. Se vuoi creare una chiave per un'applicazione disponibile su altri app store oltre che sul Google Play Store, attiva l'opzione Supporta le applicazioni distribuite al di fuori del Google Play Store.
        4. Per l'ambiente non di produzione, se vuoi specificare un punteggio che la chiave deve restituire quando vengono create valutazioni, procedi nel seguente modo:

          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 le chiavi reCAPTCHA, utilizza il comando gcloud recaptcha keys create.

    Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

    • DISPLAY_NAME: il nome della chiave. In genere, il nome di un sito.
    • BUNDLE_IDs: ID bundle iOS delle app autorizzate a utilizzare la chiave. Specifica più ID set 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 le chiavi reCAPTCHA, utilizza il comando gcloud recaptcha keys create.

    Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

    • DISPLAY_NAME: il nome della chiave. In genere, il nome di un sito.
    • PACKAGE_NAMES: i nomi dei pacchetti Android delle app autorizzate a usare la chiave. Specifica più nomi di pacchetti come elenco separato da virgole.
    • WAF_FEATURE: il nome della funzionalità WAF. Specifica action-token.
    • WAF_SERVICE: nome del Fornitore di servizi WAF. Specifica CA per Google Cloud Armor.

    Esegui la 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, apporta le seguenti sostituzioni:

    • DISPLAY_NAME: nome della chiave. In genere il nome di un'app.
    • BUNDLE_IDs: ID bundle iOS delle app a cui è consentito utilizzare la chiave. Specifica più ID set come elenco separato da virgole.
    • WAF_FEATURE: nome della funzionalità WAF. Specifica action-token.
    • WAF_SERVICE: il nome del provider 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:

    curl

    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, quindi esegui il comando seguente:

    $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, apporta le seguenti sostituzioni:

    • DISPLAY_NAME: il nome della chiave. In genere il nome di un'app.
    • PACKAGE_NAMES: i nomi dei pacchetti Android delle app autorizzate a usare la chiave. Specifica più nomi di pacchetti come elenco separato da virgole.
    • WAF_FEATURE: il nome della funzionalità WAF. Specifica action-token.
    • WAF_SERVICE: il nome del provider 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:

    curl

    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 nelle tue applicazioni mobile con la chiave action-token che hai creato. Per le istruzioni, consulta il documento corrispondente al tipo di applicazione mobile.

  3. Dopo aver ricevuto il token da reCAPTCHA, 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 per WAF, devi configurare i criteri di sicurezza di Google Cloud Armor che valutano i token reCAPTCHA per la gestione dei bot.

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

Passaggi successivi