In diesem Dokument erfahren Sie, wie Sie die WAF-Funktionen von reCAPTCHA in mobilen Anwendungen mit Google Cloud Armor integrieren.
Zum Abschließen der Integration müssen Sie mindestens ein Feature von reCAPTCHA for WAF implementieren und Google Cloud Armor-Sicherheitsrichtlinien konfigurieren. Sie können jedoch nur reCAPTCHA-Aktionstokens für die Integration in Google Cloud Armor in mobilen Anwendungen implementieren.
Hinweise
Aktivieren Sie die reCAPTCHA Enterprise API.
Identifizieren Sie die Aktionen, die Sie schützen möchten.
reCAPTCHA-Aktionstokens implementieren
reCAPTCHA muss in Ihrer mobilen Anwendung ausgeführt werden, um Aktionstokens zu generieren.
Nachdem reCAPTCHA ein Aktionstoken generiert hat, hängen Sie das Token an einen vordefinierten Anfrageheader an, wo Sie Nutzeraktionen wie checkout
schützen müssen. Aktionstokens sind standardmäßig 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
kann Google Cloud Armor die Tokenattribute auswerten.
So implementieren Sie ein reCAPTCHA-Aktionstoken:
Erstellen Sie einen Aktionstokenschlüssel für Ihre mobile App.
Console
Rufen Sie in der Google Cloud Console die Seite reCAPTCHA auf.
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.
- Klicken Sie auf Schlüssel erstellen.
- Geben Sie im Feld Anzeigename einen Anzeigenamen für den Schlüssel ein.
- Führen Sie je nach Art der Anwendung, für die Sie die reCAPTCHA-Schlüssel für die WAF erstellen möchten, die entsprechende Aktion aus:
- Wählen Sie im Menü Plattformtyp auswählen die Option iOS-App aus.
- Klicken Sie im Abschnitt iOS-Bundle-ID-Liste auf iOS-Bundle-ID hinzufügen.
Geben Sie im Feld Bundle-ID den Namen Ihres iOS-Bundles ein. ID.
- Optional: Klicken Sie auf iOS-Bundle-ID hinzufügen, um eine zusätzliche Bundle-ID hinzuzufügen. Geben Sie dann in das Feld Bundle-ID den Namen Ihrer iOS-Bundle-ID ein.
Optional: Geben Sie die Apple Developer-Einstellungen an.
Wir empfehlen, diese Daten anzugeben, da reCAPTCHA 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 „Zertifikate, Kennungen und Profile.
- Schlüssel-ID: Die Apple-Entwicklerschlüssel-ID (10-stelliger String).
- Team-ID: Apple-Team-ID (10-stelliger String), zu der die Nutzerverwaltung gehört Profil, das zum Erstellen Ihrer Anwendung verwendet wird.
- Maximieren Sie Bestätigung der Bundle-ID und Schlüsseltyp.
- So erstellen Sie einen reCAPTCHA-Schlüssel für die WAF:
- Aktivieren Sie die Option Web Application Firewall (WAF).
- Wählen Sie im Menü Dienst die Option Cloud Armor aus.
- Wählen Sie im Menü Funktion die Option Aktionstoken aus.
- Um den reCAPTCHA-Schlüssel für Ihre Bundle-IDs zu schützen, muss der Die Ein/Aus-Schaltfläche Bestätigung der Bundle-ID deaktivieren ist deaktiviert.
-
Wenn Sie für Ihre Nicht-Produktionsumgebung einen Wert festlegen möchten, soll der Schlüssel wenn Bewertungen dafür erstellt wurden, gehen Sie so vor:
- Klicken Sie auf die Ein/Aus-Schaltfläche Dies ist ein Testschlüssel.
- Geben Sie im Feld Punktzahl einen Wert zwischen 0 und 1, 0 an.
- So erstellen Sie einen reCAPTCHA-Schlüssel für die WAF:
- Klicken Sie auf Schlüssel erstellen.
- Wählen Sie im Menü Plattformtyp auswählen die Option Android-App aus.
- Klicken Sie im Abschnitt Android-Paketliste auf Android-Paket hinzufügen.
- Geben Sie im Feld Android-Paket den Namen Ihres Android-Pakets ein.
- 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.
- Maximieren Sie den Abschnitt Bestätigung des Paketnamens, App-Bereitstellung und Testschlüssel.
- So erstellen Sie einen reCAPTCHA-Schlüssel für WAF:
- Aktivieren Sie die Option Web Application Firewall (WAF).
- Wählen Sie im Menü Dienst die Option Cloud Armor aus.
- Wählen Sie im Menü Funktion die Option Aktionstoken aus.
- Wenn Sie erzwingen möchten, dass der reCAPTCHA-Schlüssel nur innerhalb Ihrer App verwendet wird, deaktivieren Sie die Option Ein/Aus-Schaltfläche Bestätigung des Paketnamens deaktivieren:
- Wenn Sie einen Schlüssel für eine Anwendung erstellen möchten, die in anderen App-Shops verfügbar ist Aktivieren Sie zusätzlich zum Google Play Store die Option Support-Apps, die außerhalb des Google Play Store.
-
Wenn Sie für Ihre Nicht-Produktionsumgebung einen Wert festlegen möchten, soll der Schlüssel wenn Bewertungen dafür erstellt wurden, gehen Sie so vor:
- Klicken Sie auf die Ein/Aus-Schaltfläche Dies ist ein Testschlüssel.
- Geben Sie im Feld Punktzahl einen Wert zwischen 0 und 1, 0 an.
- Klicken Sie auf Schlüssel erstellen.
reCAPTCHA-Schlüssel für die WAF für iOS-Anwendungen erstellen
Wir empfehlen, einen reCAPTCHA-Schlüssel pro iOS-App zu erstellen.
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
Der neu erstellte Schlüssel wird auf der Seite reCAPTCHA-Schlüssel aufgeführt.
gcloud (iOS)
Verwenden Sie den Befehl gcloud recaptcha keys create, um reCAPTCHA-Schlüssel zu erstellen.
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
- 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 gcloud reCAPTCHA-Schlüssel erstellen Befehl:
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.
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
- 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 der WAF-Funktion.
Geben Sie
action-token
an. - WAF_SERVICE: Name des
WAF-Dienstanbieter.
Geben Sie
CA
für Google Cloud Armor an.
Führen Sie den Befehl gcloud recaptcha 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)
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- 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 ContentSie 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)
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- DISPLAY_NAME: Name für den Schlüssel. In der Regel ein Anwendungsname.
- PACKAGE_NAMES: Android-Paketnamen der Apps, die diese Berechtigungen haben verwenden Sie den Schlüssel. Geben Sie mehrere Paketnamen als durch Kommas getrennte Liste an.
- WAF_FEATURE: Name der WAF-Funktion.
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 ContentSie 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" } }
Binden Sie das reCAPTCHA Mobile SDK in Ihren mobilen Anwendungen mit dem von Ihnen erstellten Schlüssel für das Aktionstoken ein. Eine Anleitung finden Sie im Dokument, dem Typ Ihrer mobilen App entspricht.
- Für Android Siehe WAF-Schlüssel in Android-Anwendungen einbinden.
- Für iOS: Weitere Informationen finden Sie unter WAF-Schlüssel in iOS-Anwendungen einbinden.
Nachdem Sie das Token von reCAPTCHA erhalten haben, hängen Sie das Token an. an einen vordefinierten Anfrageheader im folgenden Format:
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
Nach der Implementierung der Funktionen von reCAPTCHA für WAF müssen Sie Google Cloud Armor-Sicherheitsrichtlinien konfigurieren, reCAPTCHA-Tokens für die Bot-Verwaltung.
Hier erfahren Sie, wie Sie Google Cloud Armor-Sicherheitsrichtlinien konfigurieren und die Aktionstokenschlüssel mit Ihren Sicherheitsrichtlinien finden Sie unter Regeln für die Bot-Verwaltung konfigurieren