Integra Identity Platform con l'API reCAPTCHA Enterprise

Questo documento mostra come utilizzare l'integrazione di Identity Platform con l'API reCAPTCHA Enterprise per migliorare la sicurezza per i tuoi utenti. Questa funzionalità rende la tua app più resiliente contro spam, comportamenti illeciti e altre attività fraudolente.

L'integrazione crea una valutazione reCAPTCHA Enterprise per tuo conto per convalidare le richieste degli utenti. Per informazioni sui prezzi, consulta Prezzi di reCAPTCHA.

Panoramica

Quando configuri l'integrazione di Identity Platform con l'API reCAPTCHA Enterprise, attivi la funzionalità di protezione predefinita di reCAPTCHA, ovvero la protezione dai bot di reCAPTCHA. Con la protezione dai bot, Identity Platform esegue il provisioning delle chiavi reCAPTCHA basate sul punteggio nel tuo progetto per tuo conto. Quando un utente accede alla tua app o al tuo sito utilizzando una delle seguenti operazioni, l'SDK client carica reCAPTCHA quando il provider corrispondente è attivato.

Provider Operazione Metodo
passwordProvider Accesso con email e password signInWithPassword
Registrazione con email e password signUpPassword
Accesso tramite link via email getOobCode
Reimpostazione password getOobCode
phoneProvider Registrazione o accesso tramite numero di telefono sendVerificationCode
Registrazione del numero di telefono per MFA;autenticazione a più fattori mfaSmsEnrollment
Accesso con numero di telefono MFA mfaSmsSignIn

reCAPTCHA fornisce quindi a Identity Platform punteggi che valutano il rischio della richiesta in base alla configurazione e alla tolleranza al rischio.

Per ulteriori informazioni, consulta la panoramica di reCAPTCHA.

Prima di iniziare

In base al tipo di flusso di autenticazione che vuoi proteggere con reCAPTCHA, assicurati di aver configurato quanto segue:

Crea un account di servizio

L'integrazione di Identity Platform con l'API reCAPTCHA Enterprise richiede un account di servizio Identity Platform per ogni progetto che utilizzerà reCAPTCHA. In questo modo Identity Platform può gestire le chiavi reCAPTCHA per tuo conto. Se hai già creato un account di servizio, concedigli l'accesso a reCAPTCHA.

Se non hai ancora creato un account di servizio o hai altri progetti che vuoi proteggere con reCAPTCHA, procedi nel seguente modo:

  1. Utilizza Google Cloud CLI per creare un account di servizio:

    gcloud beta services identity create \
        --service=identitytoolkit.googleapis.com \
        --project=PROJECT_ID
    

    Sostituisci PROJECT_ID con l'ID del progetto.

  2. Concedi al account di servizio l'accesso a reCAPTCHA:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-identitytoolkit.iam.gserviceaccount.com \
        --role=roles/identitytoolkit.serviceAgent
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto
    • PROJECT_NUMBER: il numero di conto del progetto

Modalità di protezione dai bot reCAPTCHA

La protezione dai bot di reCAPTCHA ha due modalità che ti aiutano a proteggere gli utenti: controllo e applicazione forzata. Queste modalità differiscono nel comportamento in base al provider di identità.

Provider email-password

Le modalità di controllo e applicazione forzata si comportano come segue per i flussi di autenticazione con email e password.

Modalità di audit

Quando imposti l'applicazione della password via email sulla modalità di controllo, Identity Platform crea una o più chiavi reCAPTCHA nel tuo progetto che vengono utilizzate per valutare il traffico verso le API Identity Platform senza bloccare alcuna richiesta. Utilizza le metriche emesse durante la modalità di controllo per determinare se devi abilitare l'applicazione forzata di reCAPTCHA.

Modalità di applicazione forzata

Quando imposti l'applicazione della password via email sulla modalità di applicazione, Identity Platform crea una o più chiavi reCAPTCHA nel tuo progetto che vengono utilizzate per valutare il traffico verso le API Identity Platform. Le richieste API che non includono un token reCAPTCHA vengono rifiutate. Attiva l'applicazione solo dopo aver eseguito la migrazione di tutti i client a un SDK con supporto reCAPTCHA.

Operatore di telefonia

Le modalità di controllo e applicazione forzata si comportano come segue per i flussi di autenticazione telefonica.

Modalità di audit

Quando imposti l'applicazione forzata dell'autenticazione telefonica sulla modalità di controllo, Identity Platform utilizza la protezione dai bot reCAPTCHA perverifica appp. Se la richiesta di un utente supera la valutazione della frode tariffaria, viene inviato un codice di verifica via SMS. Se la richiesta di un utente non supera la valutazione della frode tariffaria e utilizzi l'SDK client, Identity Platform attiva metodi di verifica di riserva per completare il flusso di autenticazione telefonica. I metodi di riserva accettati dipendono dalla piattaforma della tua app.

L'SDK client attiva i metodi di verifica di riserva negli scenari seguenti:

  • Il token reCAPTCHA è mancante.
  • Il token reCAPTCHA non è valido o è scaduto.
  • Il token reCAPTCHA non supera la soglia del punteggio.
  • reCAPTCHA non è configurato correttamente.

Assicurati che i metodi di verifica di riserva per la piattaforma della tua app siano configurati e pronti per essere attivati dall'SDK client, se necessario.

Web

Se la valutazione iniziale della protezione dai bot non va a buon fine, la modalità Controllo si basa su reCAPTCHA v2 per la verifica. Pertanto, devi configurare il verifier reCAPTCHA (RecaptchaVerifier) e passarlo alle seguenti operazioni di autenticazione telefonica:

  • verifyPhoneNumber
  • signInWithPhoneNumber
  • linkWithPhoneNumber
  • reauthenticateWithPhoneNumber
Senza il verificatore reCAPTCHA, Identity Platform non può avviare reCAPTCHA v2 e restituirà auth/argument-error. Per ulteriori informazioni sulla configurazione del verificatore reCAPTCHA, consulta Configurare il verificatore reCAPTCHA nella documentazione di Firebase.

Android

Se la valutazione iniziale della protezione dai bot non va a buon fine, la modalità di controllo verifica la tua app rispetto all'API Play Integrity. Se questa verifica non va a buon fine, viene attivato reCAPTCHA v2. reCAPTCHA v2 potrebbe essere attivato nei seguenti scenari:

  • Se sul dispositivo dell'utente finale non è installato Google Play Services.
  • Se l'app non viene distribuita tramite il Google Play Store (su Authentication SDK v21.2.0 e versioni successive).
  • Se il token SafetyNet ottenuto non era valido (nelle versioni dell'SDK Authentication precedenti alla v21.2.0).
Per ulteriori informazioni sulla configurazione verifica app per Android, vedi Attivare la verifica delle app nella documentazione di Firebase.

iOS

Se la valutazione iniziale della protezione dei bot non va a buon fine, la modalità di controllo si basa sulle notifiche push silenziose per la verifica. Questo metodo di verifica prevede l'invio di un token alla tua app sul dispositivo richiedente con una notifica push silenziosa. Se l'app riceve correttamente la notifica, il flusso di autenticazione dello smartphone procede. Se l'app non riceve la notifica push, viene attivato reCAPTCHA v2. reCAPTCHA v2 potrebbe essere attivato se le notifiche push silenziose non sono configurate correttamente.

Per ulteriori informazioni sulla configurazione verifica app per iOS, vedi Attivare la verifica app nella documentazione di Firebase.

Modalità di applicazione forzata

Quando imposti l'applicazione forzata dell'autenticazione telefonica sulla modalità di applicazione forzata, Identity Platform utilizza la protezione dai bot reCAPTCHA per verifica app. Se la richiesta di un utente supera la valutazione della frode tariffaria, viene inviato un codice di verifica via SMS. Se la richiesta di un utente non supera la valutazione della frode tariffaria, Identity Platform blocca la richiesta e non invia un messaggio SMS contenente un codice di verifica.

In modalità di applicazione forzata non è richiesta alcuna verifica di riserva, quindi non devi configurare metodi di verifica aggiuntivi per la tua app. Tuttavia, ti consigliamo di configurare il programma di verifica reCAPTCHA per le app web per assicurarti che reCAPTCHA v2 sia abilitato se decidi di impostare la modalità reCAPTCHA della tua app su AUDIT o OFF.

Configura l'integrazione di Identity Platform con l'API reCAPTCHA Enterprise

Per configurare l'integrazione di Identity Platform con l'API reCAPTCHA Enterprise, svolgi le seguenti attività:

  • Utilizza l'SDK Admin per impostare lo stato di applicazione di reCAPTCHA e attivare la protezione dai bot.
  • Configura l'SDK client per la piattaforma della tua app.

Ti consigliamo di abilitare prima l'applicazione di reCAPTCHA in modalità Controllo e monitorare le metriche reCAPTCHA emesse dal tuo progetto per assicurarti che i flussi di autenticazione siano protetti in modo appropriato. In questo modo, non interrompi il traffico degli utenti mentre esegui il controllo del loro utilizzo di reCAPTCHA. Dopo aver verificato che i flussi di autenticazione siano protetti, imposta la protezione dai bot su ENFORCE.

Abilitare la protezione dai bot reCAPTCHA

Provider email-password

Per attivare la protezione dai bot reCAPTCHA per i flussi di autenticazione tramite email e password, procedi nel seguente modo:

  1. Se non l'hai ancora fatto, attiva l'API reCAPTCHA Enterprise nel tuo progetto.

  2. Per attivare la protezione dai bot per un progetto, utilizza l'SDK Admin. Il supporto di reCAPTCHA è disponibile nelle versioni 11.7.0 e successive dell'SDK Admin per Node.js.

    Ad esempio:

    // Update project config with reCAPTCHA config
    const updateConfigRequest = {
      recaptchaConfig: {
        emailPasswordEnforcementState:  'ENFORCE_MODE',
        managedRules: [{
          endScore: END_SCORE,
          action: 'BLOCK'
        }]
      }
    };
    const updateProjectConfigWithRecaptcha = () => {
      getAuth().projectConfigManager().updateProjectConfig(updateConfigRequest).then((response) => {
        console.log('Updated reCAPTCHA config for project: ', response.recaptchaConfig);
      }).catch((error) => {
        console.log('Error updating project config:', error);
      });
    }
    

    Sostituisci quanto segue:

    • ENFORCE_MODE: la modalità che vuoi impostare per l'applicazione forzata dell'autenticazione email/password reCAPTCHA. I valori validi sono OFF, AUDIT e ENFORCE. Per attivare la protezione dai bot, questo parametro deve essere impostato su AUDIT o ENFORCE. Quando attivi la protezione dai bot per la prima volta, ti consigliamo di impostare questo parametro su AUDIT e di assicurarti che i tuoi flussi di autenticazione siano protetti prima di impostarlo su ENFORCE. Per ulteriori informazioni sul funzionamento delle modalità, consulta Modalità di protezione dai bot di reCAPTCHA.
    • END_SCORE: il punteggio di valutazione più basso per la protezione dai bot che una richiesta può avere prima di non riuscire. Puoi impostare questo punteggio tra 0.0 e 1.0. Ad esempio, se imposti una soglia di 0.6, reCAPTCHA non supererà qualsiasi richiesta con un valore di 0.5 o inferiore. Pertanto, più alto è il punteggio impostato, più rigide saranno le regole.

    Puoi anche attivare la protezione dai bot con lo stesso metodo di configurazione per un tenant utilizzando l'SDK Admin. Per ulteriori informazioni sull'aggiornamento di un tenant, vedi Aggiornare un tenant.

  3. Se utilizzi Identity Platform su iOS o Android, devi registrare la tua app dalla console Firebase:

    Se utilizzi Identity Platform sul web, devi aggiungere un dominio autorizzato per ogni dominio che utilizza reCAPTCHA. Per aggiungere domini autorizzati:

    1. Nella console Google Cloud , vai alla pagina Identity Platform.

      Vai a Identity Platform

    2. Vai a Impostazioni > Sicurezza.

    3. Fai clic su Aggiungi dominio.

    4. Inserisci il nome del dominio e fai clic su Aggiungi per salvare il dominio.

    Il provisioning della chiave reCAPTCHA può richiedere diversi minuti.

  4. Se hai impostato l'applicazione sulla modalità Controllo, ti consigliamo di monitorare le metriche reCAPTCHA per la protezione dai bot per assicurarti che i tuoi flussi siano protetti.

Operatore di telefonia

Per attivare la protezione dai bot reCAPTCHA per i flussi di autenticazione basati su SMS:

  1. Se non l'hai ancora fatto, attiva l'API reCAPTCHA Enterprise nel tuo progetto.

  2. Per attivare la protezione dai bot per un progetto, utilizza l'Admin SDK. Il supporto di reCAPTCHA è disponibile nelle versioni 12.7.0 e successive dell'Admin SDK per Node.js.

    Ad esempio:

    // Update project config with reCAPTCHA config
    const updateProjectConfigRequest = {
      recaptchaConfig: {
        phoneEnforcementState: 'ENFORCE_MODE',
        managedRules: [{ endScore: END_SCORE, action: 'BLOCK' }],
        useSmsBotScore: 'true',
      }
    }
    let projectConfig = await getAuth().projectConfigManager().updateProject(updateProjectConfigRequest);
    

    Sostituisci quanto segue:

    • ENFORCE_MODE: la modalità che vuoi impostare per l'applicazione forzata dell'autenticazione telefonica reCAPTCHA. I valori validi sono OFF, AUDIT e ENFORCE. Per attivare la protezione dai bot per i flussi basati su SMS, questo parametro deve essere impostato su AUDIT o ENFORCE e useSmsBotScore deve essere impostato su true.

      Quando attivi la protezione dai bot per la prima volta, ti consigliamo di impostare questo parametro su AUDIT e di assicurarti che i flussi di autenticazione siano protetti prima di impostarlo su ENFORCE. Per ulteriori informazioni sul funzionamento delle modalità, consulta Modalità di protezione dai bot di reCAPTCHA.

    • END_SCORE: il punteggio di valutazione più basso per la protezione dai bot che una richiesta può avere prima di non riuscire. Puoi impostare questo punteggio tra 0.0 e 1.0. Ad esempio, se imposti una soglia di 0.6, reCAPTCHA non supererà qualsiasi richiesta con un valore di 0.5 o inferiore. Pertanto, più alto è il punteggio impostato, più rigide saranno le regole.

    Puoi anche attivare la protezione dai bot con lo stesso metodo di configurazione per un tenant utilizzando l'SDK Admin. Per ulteriori informazioni sull'aggiornamento di un tenant, consulta Aggiornare un tenant.

  3. Se utilizzi Identity Platform su iOS o Android, devi registrare la tua app dalla console Firebase:

    Se utilizzi Identity Platform sul web, devi aggiungere un dominio autorizzato per ogni dominio che utilizza reCAPTCHA. Per aggiungere domini autorizzati:

    1. Nella console Google Cloud , vai alla pagina Identity Platform.

      Vai a Identity Platform

    2. Vai a Impostazioni > Sicurezza.

    3. Fai clic su Aggiungi dominio.

    4. Inserisci il nome del dominio e fai clic su Aggiungi per salvare il dominio.

    Il provisioning della chiave reCAPTCHA può richiedere diversi minuti.

  4. Se hai impostato l'applicazione sulla modalità Controllo, ti consigliamo di monitorare le metriche reCAPTCHA per la protezione dai bot per assicurarti che i tuoi flussi siano protetti.

Configura l'SDK client

Configura l'SDK client in base alla piattaforma della tua app.

Web

  1. Esegui l'aggiornamento alla versione più recente dell'SDK web.

    • Il supporto di reCAPTCHA per l'autenticazione tramite email e password nelle app web è disponibile nelle versioni 9.20.0 e successive dell'SDK JavaScript.
    • Il supporto di reCAPTCHA per l'autenticazione telefonica nelle app web è disponibile nelle versioni 11 e successive dell'SDK JavaScript.

    Dopo aver integrato l'SDK web con la tua app, l'SDK recupera automaticamente la configurazione di reCAPTCHA e attiva la protezione per i provider che hai configurato.

  2. Se necessario, puoi forzare il recupero del segnale reCAPTCHA come segue:

    import { initializeRecaptchaConfig } from '@firebase/auth';
    
    // Initialize Firebase Authentication
    const auth = getAuth();
    initializeRecaptchaConfig(auth)
      .then(() => {
        console.log("Recaptcha Enterprise Config Initialization successful.")
      })
      .catch((error) => {
        console.error("Recaptcha Enterprise Config Initialization failed with " + error)
      });
    

Android

  1. Esegui l'aggiornamento all'ultima versione dell'SDK Android. Il supporto di reCAPTCHA per l'autenticazione tramite email e password e l'autenticazione tramite telefono nelle app per Android è disponibile nell'SDK Android versione 23.1.0 e successive.

    Inoltre, il supporto di reCAPTCHA richiede il livello API 23 (Marshmallow) o versioni successive e Android 6 o versioni successive.

    Dopo aver integrato l'SDK Android con la tua app, l'SDK recupera automaticamente la configurazione di reCAPTCHA e attiva la protezione per i provider che hai configurato.

  2. Aggiungi la seguente regola di build alla sezione delle dipendenze del file build.gradlea livello di app:

    implementation 'com.google.android.recaptcha:recaptcha:18.5.1'
    

    Assicurati di utilizzare la versione 18.5.1 o successive dell'SDK reCAPTCHA.

  3. Se necessario, puoi forzare il recupero del segnale reCAPTCHA come segue:

    • Kotlin:
    // Initialize Firebase Authentication
    auth = Firebase.auth
    
    auth.initializeRecaptchaConfig().addOnCompleteListener(this) { task ->
        if (task.isSuccessful) {
            Log.d(TAG, "Recaptcha Enterprise Initialization successful.")
        } else {
            Log.w(TAG, "Recaptcha Enterprise Initialization failed.")
        }
    }
    
    • Java:
    // Initialize Firebase Authentication
    auth = FirebaseAuth.getInstance();
    auth.initializeRecaptchaConfig().addOnCompleteListener(
      this, new OnCompleteListener<void>() {
      @Override
      public void onComplete(@NonNull Task<void> task) {
        if (task.isSuccessful()) {
          Log.d(TAG, "Recaptcha Enterprise Initialization successful.");
        } else {
          Log.w(TAG, "Recaptcha Enterprise Initialization failed.");
        }
      }
    });
    

iOS

  1. Esegui l'aggiornamento all'SDK per iOS versione 11.6.0 o successive. Dopo aver integrato l'SDK per iOS con la tua app, l'SDK recupera automaticamente la configurazione di reCAPTCHA e attiva la protezione per i provider che hai configurato.

  2. Per integrare l'SDK reCAPTCHA per iOS nella tua app, consulta Prepara l'ambiente.

  3. Assicurati che -ObjC sia elencato nei flag del linker. Vai a Target > Build Settings > All > Linking e verifica che Other Linker Flags mostri -ObjC.

  4. Se necessario, puoi forzare il recupero del segnale reCAPTCHA come segue:

    • Swift:
    // Initialize Firebase Authentication
    try await Auth.auth().initializeRecaptchaConfig()
    
    • Objective-C:
    // Initialize Firebase Authentication
    [[FIRAuth auth] initializeRecaptchaConfigWithCompletion:^(NSError * _Nullable error) {
      // Firebase Authentication initialization finished
    }];
    

Monitorare le metriche reCAPTCHA per la protezione dai bot

Prima di impostare l'applicazione forzata di reCAPTCHA in modalità di applicazione forzata, ti consigliamo di utilizzare la modalità Controllo e monitorare le metriche reCAPTCHA emesse dal tuo progetto per assicurarti che i flussi di autenticazione siano protetti. Ad esempio, queste metriche possono aiutarti a determinare se hai configurato correttamente l'integrazione di Identity Platform con l'API reCAPTCHA Enterprise. Possono anche aiutarti a perfezionare la soglia del punteggio per il traffico degli utenti. Se il provisioning della chiave reCAPTCHA non va a buon fine o se i service account richiesti non sono stati creati, i tentativi di autenticazione reCAPTCHA vanno comunque a buon fine.

Assicurati che l'autenticazione reCAPTCHA funzioni esaminando le seguenti metriche che il tuo progetto emette in Cloud Monitoring:

Per ulteriori informazioni, consulta Monitorare le metriche reCAPTCHA.

Applica la protezione dai bot reCAPTCHA

Dopo aver verificato che la tua app riceve traffico utente accettabile, puoi attivare l'applicazione di reCAPTCHA per proteggere i tuoi utenti. Assicurati di non interrompere l'esperienza degli utenti esistenti, inclusi quelli che potrebbero utilizzare una versione precedente della tua app.

Provider email-password

Per abilitare l'applicazione di reCAPTCHA per i flussi di autenticazione con email e password in un progetto o tenant, utilizza l'SDK Admin per eseguire quanto segue:

const enforceRequest = {
  recaptchaConfig: {
    emailPasswordEnforcementState:  'ENFORCE',
    }]
  }
};

Operatore di telefonia

Per attivare l'applicazione di reCAPTCHA per i flussi di autenticazione basati su SMS in un progetto o tenant, utilizza l'SDK Admin per eseguire quanto segue:

const enforceRequest = {
  recaptchaConfig: {
    phoneEnforcementState:  'ENFORCE',
    useSmsBotScore: 'true'
    }]
  }
};

Disattivare la protezione dai bot reCAPTCHA

Provider email-password

Per disattivare la protezione dai bot per i flussi di autenticazione con email e password, utilizza l'SDK Admin per eseguire il seguente comando:

const disableRequest = {
  recaptchaConfig: {
    emailPasswordEnforcementState:  'OFF',
  }
};

Operatore di telefonia

Per disattivare la protezione dai bot per i flussi di autenticazione basati su SMS, utilizza l'SDK Admin per eseguire il seguente comando:

const disableRequest = {
  recaptchaConfig: {
    phoneEnforcementState:  'OFF',
    useSmsBotScore: 'false'
  }
};

Eseguire l'override dei verdetti reCAPTCHA con le funzioni Cloud Run

Oltre a configurare le soglie di punteggio, puoi eseguire l'override di un verdetto reCAPTCHA per un determinato token utilizzando una funzione di blocco personalizzata di Cloud Run Functions. Ciò è utile nei casi in cui il punteggio reCAPTCHA per l'accesso di un determinato utente potrebbe essere basso, ma l'utente è attendibile o è stato verificato con altri mezzi e pertanto può completare l'accesso.

Per scoprire di più sulla configurazione delle funzioni di blocco con reCAPTCHA, consulta Estendere Firebase Authentication con le funzioni di blocco di Cloud Functions.

Passaggi successivi