In Google Cloud Armor für mobile Anwendungen einbinden

In diesem Dokument erfahren Sie, wie Sie die WAF-Features von reCAPTCHA Enterprise in Google Cloud Armor in mobilen Anwendungen einbinden.

Zum Abschließen der Integration müssen Sie ein oder mehrere Features von reCAPTCHA Enterprise for WAF implementieren und Google Cloud Armor-Sicherheitsrichtlinien konfigurieren. Sie können jedoch nur reCAPTCHA-Aktionstokens für die Einbindung von Google Cloud Armor in mobilen Anwendungen implementieren.

Hinweise

  1. Aktivieren Sie die reCAPTCHA Enterprise API.

    Aktivieren Sie die API

  2. Identifizieren Sie die Aktionen, die Sie schützen möchten.

reCAPTCHA-Aktionstokens implementieren

Zum Generieren von Aktionstokens muss reCAPTCHA Enterprise in Ihrer mobilen App ausgeführt werden. Nachdem reCAPTCHA Enterprise ein Aktionstoken generiert hat, hängen Sie das Aktionstoken an einen vordefinierten Anfrageheader an, wo Sie eine Nutzeraktion schützen müssen, z. B. checkout. Standardmäßig sind Aktionstokens 30 Minuten lang gültig, können aber je nach Traffic variieren. Sie müssen das Aktionstoken an einen vordefinierten Anfrageheader anhängen, bevor das Token abläuft, damit Google Cloud Armor die Tokenattribute auswerten kann.

So implementieren Sie ein reCAPTCHA-Aktionstoken:

  1. Erstellen Sie einen Aktionstokenschlüssel für Ihre mobile App.

    Console

    1. Rufen Sie in der Google Cloud Console die Seite reCAPTCHA Enterprise auf.

      Zur Seite „reCAPTCHA Enterprise“

    2. Prüfen Sie, ob der Name Ihres Projekts in der Ressourcenauswahl oben auf der Seite angezeigt wird.

      Wenn Sie den Namen Ihres Projekts nicht sehen, klicken Sie auf die Ressourcenauswahl und wählen Sie Ihr Projekt aus.

    3. Klicken Sie auf Schlüssel erstellen.

    4. Geben Sie im Feld Anzeigename einen Anzeigenamen für den Schlüssel ein.
    5. Führen Sie je nach Anwendungstyp, für den Sie die reCAPTCHA-Schlüssel für WAF erstellen möchten, die entsprechende Aktion aus:
    6. reCAPTCHA-Schlüssel für WAF für iOS-Anwendungen erstellen

      Wir empfehlen, einen reCAPTCHA-Schlüssel pro iOS-App zu erstellen.

      1. Wählen Sie im Menü Plattformtyp auswählen die Option iOS-App aus.
        1. Klicken Sie im Abschnitt iOS-Bundle-ID-Liste auf iOS-Bundle-ID hinzufügen.
        2. Geben Sie im Feld Bundle-ID den Namen Ihrer iOS-Bundle-ID ein.

        3. Optional: Wenn Sie eine weitere Bundle-ID hinzufügen möchten, klicken Sie auf iOS-Bundle-ID hinzufügen und geben Sie den Namen Ihrer iOS-Bundle-ID in das Feld Bundle-ID ein.
        4. Optional: Geben Sie die Apple Developer-Einstellungen an.

          Wir empfehlen, diese Daten anzugeben, da reCAPTCHA Enterprise damit genauere Risikobewertungen für Ihren Traffic bereitstellen kann.

          Geben Sie die folgenden Informationen ein:

          • Privater Schlüssel (.p8): Dieser wird im Apple Developer Center unter „Certificates, Identifiers & Profiles“ (Zertifikate, Kennungen und Profile) generiert.
          • Schlüssel-ID: Die Apple-Entwicklerschlüssel-ID (10-stelliger String).
          • Team-ID: Die Apple-Team-ID (10-stelliger String), die Inhaber des Bereitstellungsprofils ist, das zum Erstellen Ihrer Anwendung verwendet wird.
        5. Maximieren Sie Bundle-ID-Überprüfung und Schlüsseltyp.
          1. So erstellen Sie einen reCAPTCHA-Schlüssel für WAF:
            1. Aktivieren Sie die Ein/Aus-Schaltfläche Web Application Firewall (WAF).
            2. Wählen Sie im Menü Dienst die Option Cloud Armor aus.
            3. Wählen Sie im Menü Funktion die Option Aktionstoken aus.
          2. Damit der reCAPTCHA-Schlüssel für Ihre Bundle-IDs geschützt wird, muss die Ein/Aus-Schaltfläche Bestätigung der Bundle-ID deaktivieren deaktiviert sein.
          3. Wenn Sie in Ihrer Nicht-Produktionsumgebung einen Wert angeben möchten, der vom Schlüssel zurückgegeben werden soll, wenn Bewertungen dafür erstellt werden, gehen Sie so vor:

            1. Klicken Sie auf die Ein/Aus-Schaltfläche Dies ist ein Testschlüssel.
            2. Geben Sie im Feld Punktzahl einen Wert zwischen 0 und 1, 0 an.
        6. Klicken Sie auf Schlüssel erstellen.
        7. Der neu erstellte Schlüssel wird auf der Seite reCAPTCHA-Schlüssel aufgeführt.

      reCAPTCHA-Schlüssel für WAF für Android-Anwendungen erstellen

      1. Wählen Sie im Menü Plattformtyp auswählen die Option Android-App aus.
      2. Klicken Sie im Abschnitt Android-Paketliste auf Android-Paket hinzufügen.
      3. Geben Sie im Feld Android-Paket den Namen Ihres Android-Pakets ein.

      4. Optional: Klicken Sie auf Android-Paket hinzufügen, um ein zusätzliches Paket hinzuzufügen, und geben Sie im Feld Android-Paket den Namen eines anderen Android-Pakets ein.
      5. Maximieren Sie Bestätigung des Paketnamens, App-Bereitstellung und Testschlüssel.
        1. So erstellen Sie einen reCAPTCHA-Schlüssel für WAF:
          1. Aktivieren Sie die Ein/Aus-Schaltfläche Web Application Firewall (WAF).
          2. Wählen Sie im Menü Dienst die Option Cloud Armor aus.
          3. Wählen Sie im Menü Funktion die Option Aktionstoken aus.
        2. Wenn Sie erzwingen möchten, dass der reCAPTCHA-Schlüssel nur in Ihrer Anwendung verwendet wird, deaktivieren Sie die Ein/Aus-Schaltfläche Bestätigung des Paketnamens deaktivieren.
        3. Wenn Sie einen Schlüssel für eine Anwendung erstellen möchten, die nicht nur im Google Play Store, sondern auch in anderen App-Shops verfügbar ist, aktivieren Sie Support-Apps, die außerhalb des Google Play Store vertrieben werden.
        4. Wenn Sie in Ihrer Nicht-Produktionsumgebung einen Wert angeben möchten, der vom Schlüssel zurückgegeben werden soll, wenn Bewertungen dafür erstellt werden, gehen Sie so vor:

          1. Klicken Sie auf die Ein/Aus-Schaltfläche Dies ist ein Testschlüssel.
          2. Geben Sie im Feld Punktzahl einen Wert zwischen 0 und 1, 0 an.
      6. Klicken Sie auf Schlüssel erstellen.
      7. Der neu erstellte Schlüssel wird auf der Seite reCAPTCHA-Schlüssel aufgeführt.

    gcloud (iOS)

    Verwenden Sie zum Erstellen von reCAPTCHA-Schlüsseln den Befehl gcloud remarketingtcha keys create.

    Bevor Sie die folgenden Befehlsdaten verwenden, ersetzen Sie die folgenden Werte:

    • DISPLAY_NAME: Name für den Schlüssel. In der Regel ein Websitename.
    • BUNDLE_IDs: iOS-Bundle-IDs von Apps, die den Schlüssel verwenden dürfen. Geben Sie mehrere Bundle-IDs als durch Kommas getrennte Liste an.
    • WAF_FEATURE: Name des WAF-Features. Geben Sie action-token an.
    • WAF_SERVICE: Name des WAF-Dienstanbieters. Geben Sie CA für Google Cloud Armor an.

    Führen Sie den Befehl gcloud remarketingtcha keys create aus:

    Linux, macOS oder 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 
    

    Die Antwort enthält den neu erstellten reCAPTCHA-Schlüssel.

    gcloud (Android)

    Verwenden Sie zum Erstellen von reCAPTCHA-Schlüsseln den Befehl gcloud remarketingtcha keys create.

    Bevor Sie die folgenden Befehlsdaten verwenden, ersetzen Sie die folgenden Werte:

    • DISPLAY_NAME: Name für den Schlüssel. In der Regel ein Websitename.
    • PACKAGE_NAMES: Android-Paketnamen von Apps, die den Schlüssel verwenden dürfen. Geben Sie mehrere Paketnamen als durch Kommas getrennte Liste an.
    • WAF_FEATURE: Name des WAF-Features. Geben Sie action-token an.
    • WAF_SERVICE: Name des WAF-Dienstanbieters. Geben Sie CA für Google Cloud Armor an.

    Führen Sie den Befehl gcloud remarketingtcha keys create aus:

    Linux, macOS oder 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 
    
    

    Die Antwort enthält den neu erstellten reCAPTCHA-Schlüssel.

    REST (iOS)

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • DISPLAY_NAME: Name für den Schlüssel. In der Regel ein Anwendungsname.
    • BUNDLE_IDs: iOS-Bundle-IDs von Apps, die den Schlüssel verwenden dürfen. Geben Sie mehrere Bundle-IDs als durch Kommas getrennte Liste an.
    • WAF_FEATURE: Name des WAF-Features. Geben Sie action-token an.
    • WAF_SERVICE: Name des WAF-Dienstanbieters. Geben Sie CA für Google Cloud Armor an.

    HTTP-Methode und URL:

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

    JSON-Text der Anfrage:

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

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    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

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $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

    Sie sollten in etwa folgende JSON-Antwort erhalten:

    
    {
      "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)

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • DISPLAY_NAME: Name für den Schlüssel. In der Regel ein Anwendungsname.
    • PACKAGE_NAMES: Android-Paketnamen von Apps, die den Schlüssel verwenden dürfen. Geben Sie mehrere Paketnamen als durch Kommas getrennte Liste an.
    • WAF_FEATURE: Name des WAF-Features. Geben Sie action-token an.
    • WAF_SERVICE: Name des WAF-Dienstanbieters. Geben Sie CA für Google Cloud Armor an.

    HTTP-Methode und URL:

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

    JSON-Text der Anfrage:

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

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    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

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $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

    Sie sollten in etwa folgende JSON-Antwort erhalten:

    
    {
      "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. Binden Sie das reCAPTCHA Enterprise Mobile SDK mit dem von Ihnen erstellten Aktionstokenschlüssel in Ihre mobilen Anwendungen ein. Eine Anleitung finden Sie im Dokument zum Typ Ihrer mobilen App.

  3. Nachdem Sie das Token von reCAPTCHA Enterprise erhalten haben, hängen Sie es an einen vordefinierten Anfrageheader im folgenden Format an:

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

    Der folgende Beispielcode zeigt, wie das Token angehängt wird:

    Android

    Beispielcode 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

    Beispielcode 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)
     }
    
    

Google Cloud Armor-Sicherheitsrichtlinien konfigurieren

Nachdem Sie die Features von reCAPTCHA Enterprise for WAF implementiert haben, müssen Sie Google Cloud Armor-Sicherheitsrichtlinien konfigurieren, die reCAPTCHA Enterprise-Tokens für die Bot-Verwaltung auswerten.

Informationen zum Konfigurieren von Google Cloud Armor-Sicherheitsrichtlinien und zum Verwenden der Aktionstokenschlüssel mit Ihren Sicherheitsrichtlinien finden Sie unter Regeln für die Bot-Verwaltung konfigurieren.

Nächste Schritte