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à di reCAPTCHA per WAF e configurare i criteri di sicurezza di Google Cloud Armor. Tuttavia, puoi implementare solo token di azione reCAPTCHA per l'integrazione con Google Cloud Armor nelle applicazioni mobile.
Prima di iniziare
Abilita l'API reCAPTCHA Enterprise.
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 associarlo a un'intestazione di richiesta predefinita ogni volta che devi proteggere qualsiasi azione dell'utente, ad esempio checkout
. Per impostazione predefinita, gli action token sono validi per 30 minuti, ma possono variare in base al traffico.
Devi allegare l'action-token a un'intestazione di richiesta predefinita prima della scadenza del token, in modo che Google Cloud Armor possa valutare gli attributi del token.
Per implementare un token di azione reCAPTCHA:
Crea una chiave token di azione per la tua applicazione mobile.
Console
Nella console Google Cloud, vai alla pagina reCAPTCHA.
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.
- Fai clic su Crea chiave.
- Nel campo Nome visualizzato, inserisci un nome visualizzato per la chiave.
- A seconda del tipo di applicazione per cui vuoi creare le chiavi reCAPTCHA per il WAF, esegui l'azione appropriata:
- Dal menu Scegli il tipo di piattaforma, seleziona App per iOS.
- Nella sezione Elenco ID pacchetto iOS, fai clic su Aggiungi ID pacchetto iOS.
Nel campo ID bundle, inserisci il nome dell'ID bundle iOS.
- (Facoltativo) Per aggiungere un altro ID pacchetto, fai clic su Aggiungi ID pacchetto iOS e inserisci il nome dell'ID pacchetto iOS nel campo ID pacchetto.
(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 profilo di provisioning utilizzato per creare l'applicazione.
- Espandi Verifica dell'ID pacchetto e tipo di chiave.
- Per creare una chiave reCAPTCHA per WAF, segui questi passaggi:
- Attiva l'opzione di attivazione/disattivazione Web Application Firewall (WAF).
- Dal menu Servizio, seleziona Cloud Armor.
- Dal menu Funzionalità, seleziona Token di azione.
- Per proteggere la chiave reCAPTCHA per i tuoi ID bundle, assicurati che l'opzione di attivazione/disattivazione Disattiva verifica ID bundle sia disattivata.
-
Per l'ambiente non di produzione, se vuoi specificare un punteggio che la chiave deve restituire quando vengono create valutazioni, procedi nel seguente modo:
- Fai clic sul pulsante di attivazione/disattivazione Questa è una chiave di test.
- Nella casella Punteggio, specifica un punteggio compreso tra 0 e 1,0.
- Per creare una chiave reCAPTCHA per WAF, segui questi passaggi:
- Fai clic su Crea chiave.
- Nel menu Scegli il tipo di piattaforma, seleziona App per Android.
- Nella sezione Elenco dei pacchetti Android, fai clic su Aggiungi pacchetto Android.
- Nel campo Pacchetto Android, inserisci il nome del pacchetto Android.
- (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.
- Espandi Verifica del nome del pacchetto, distribuzione delle app e chiavi di test.
- Per creare una chiave reCAPTCHA per WAF, segui questi passaggi:
- Attiva l'opzione di attivazione/disattivazione Web Application Firewall (WAF).
- Dal menu Servizio, seleziona Cloud Armor.
- Dal menu Funzionalità, seleziona Token di azione.
- 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.
- Se vuoi creare una chiave per un'applicazione disponibile su altri app store oltre al Google Play Store, attiva Supporta le applicazioni distribuite al di fuori del Google Play Store.
-
Per l'ambiente non di produzione, se vuoi specificare un punteggio che la chiave deve restituire quando vengono create valutazioni, procedi nel seguente modo:
- Fai clic sul pulsante di attivazione/disattivazione Questa è una chiave di test.
- Nella casella Punteggio, specifica un punteggio compreso tra 0 e 1,0.
- Fai clic su Crea chiave.
Creare chiavi reCAPTCHA per WAF per applicazioni per iOS
Ti consigliamo di creare una chiave reCAPTCHA per ogni applicazione per iOS.
La chiave appena creata è elencata nella pagina Chiavi reCAPTCHA.
Creare chiavi reCAPTCHA per WAF per le applicazioni Android
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: il nome della funzionalità WAF.
Specifica
action-token
. - WAF_SERVICE: il 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: il 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, apporta le seguenti sostituzioni:
- DISPLAY_NAME: il nome della chiave. In genere il nome di un'app.
- BUNDLE_IDs: ID bundle iOS delle app autorizzate a utilizzare la chiave. Specifica più ID set come elenco separato da virgole.
- WAF_FEATURE: il nome della funzionalità WAF.
Specifica
action-token
. - WAF_SERVICE: il 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:
curl
Salva il corpo della richiesta in un file denominato
request.json
, quindi esegui il comando seguente: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 ContentDovresti 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 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:
curl
Salva il corpo della richiesta in un file denominato
request.json
, quindi esegui il comando seguente: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 ContentDovresti 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" } }
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.
- Per Android, consulta l'articolo Integrare le chiavi WAF con le app per Android.
- Per iOS, consulta l'articolo Integrare le chiavi WAF con le applicazioni per iOS.
Dopo aver ricevuto il token da reCAPTCHA, allegalo a un'intestazione di richiesta predefinita nel seguente formato:
X-Recaptcha-Token: value-of-your-action-token
Il seguente codice campione mostra come allegare il token:
Android
Codice di esempio 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 di esempio 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 le chiavi dei token di azione con i criteri di sicurezza, consulta Configurare le regole per la gestione dei bot.