Questo documento illustra come integrare le funzionalità WAF di reCAPTCHA con Google Cloud Armor su 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 sulle applicazioni mobile.
Prima di iniziare
Abilita l'API reCAPTCHA Enterprise.
Identifica le azioni che vuoi proteggere.
Implementa i token di azione reCAPTCHA
Devi eseguire reCAPTCHA sulla tua applicazione mobile per generare
token di azione.
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, gli action-token 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 della scadenza del token,
Google Cloud Armor può valutare gli attributi del token.
Per implementare un token di azione reCAPTCHA, segui questi passaggi:
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:
- Nel menu Scegli il tipo di piattaforma, seleziona App per iOS.
- Nella sezione Elenco ID bundle iOS, fai clic su Aggiungi ID pacchetto iOS.
Nel campo ID pacchetto, inserisci il nome del tuo bundle iOS ID.
- (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 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.
- 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 gli ID pacchetto, assicurati che il parametro L'opzione Disabilita verifica dell'ID pacchetto sia disattivata.
-
Per il tuo ambiente non di produzione, se vuoi specificare un punteggio che deve essere da restituire quando vengono create valutazioni:
- 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 pacchetti Android, fai clic su Aggiungi Android. pacchetto.
- Nel campo Pacchetto Android, inserisci il nome del pacchetto Android.
- (Facoltativo) Per aggiungere un altro pacchetto, fai clic su Aggiungi Android. pacchetto e inserisci il nome di un altro pacchetto Android nel pacchetto Android .
- Espandi Verifica del nome del pacchetto, distribuzione delle app e chiavi di test.
- Per creare una chiave reCAPTCHA per WAF:
- Attiva l'opzione di attivazione/disattivazione Web Application Firewall (WAF).
- Dal menu Servizio, seleziona Cloud Armor.
- Dal menu Funzionalità, seleziona Token di azione.
- Per fare in modo che la chiave reCAPTCHA venga utilizzata solo all'interno della tua app, disattiva la Pulsante di attivazione/disattivazione Disabilita la verifica del nome del pacchetto.
- 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.
-
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.
Creazione di chiavi reCAPTCHA per le applicazioni WAF per iOS
Ti consigliamo di creare una chiave reCAPTCHA per ogni applicazione iOS.
La chiave appena creata è elencata nella pagina Chiavi reCAPTCHA.
Creazione di chiavi reCAPTCHA per le applicazioni WAF per 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 pacchetto 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.
Esegui la 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: nome della chiave. In genere, il nome di un sito.
- PACKAGE_NAMES: nomi dei pacchetti Android delle app a cui è consentito la chiave. Specifica più nomi di pacchetti 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.
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: 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: 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
, 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
. 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 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, effettua 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: 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 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 applicazioni Android.
- Per iOS, consulta Integrare le chiavi WAF con le applicazioni 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 esempio di codice 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 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.