reCAPTCHA Enterprise aktivieren

In diesem Dokument erfahren Sie, wie Sie mit der Einbindung von Identity Platform in reCAPTCHA die Sicherheit für Ihre Nutzer verbessern. Mit dieser Funktion wird deine App besser vor Spam, Missbrauch und anderen betrügerischen Aktivitäten geschützt.

Durch die Einbindung von reCAPTCHA in die Identity Platform wird in Ihrem Namen eine reCAPTCHA-Bewertung erstellt, um Nutzeranfragen zu validieren. Preisinformationen finden Sie unter Preise für reCAPTCHA.

Übersicht

Wenn Sie die Einbindung der Identity Platform in reCAPTCHA konfigurieren, stellt die Identity Platform bereit wertbasierte reCAPTCHA-Websiteschlüssel in Ihrem Projekt für Sie erstellen. Wenn ein Nutzer über einen der folgenden Vorgänge auf Ihre App oder Website zugreift, lädt das Client SDK reCAPTCHA:

Aktion Methode
Anmeldung mit E-Mail-Adresse und Passwort signInWithPassword
Registrierung per E-Mail-Adresse und Passwort signUpPassword
Anmeldung per E-Mail-Link getOobCode
Passwortzurücksetzung getOobCode

reCAPTCHA stellt der Identity Platform dann Risikosignale zur Verfügung, mit denen das Risiko der Anfrage basierend auf Ihrer Konfiguration und Risikotoleranz bewertet wird.

Weitere Informationen finden Sie unter Übersicht über reCAPTCHA Enterprise.

Hinweis

Konfigurieren Sie die E-Mail-Anmeldung für Nutzer.

Dienstkonto erstellen

Bevor Sie reCAPTCHA aktivieren, müssen Sie für jedes reCAPTCHA ein Dienstkonto erstellen. Projekt, das reCAPTCHA verwendet und jedem Dienstkonto gewährt. Zugriff auf reCAPTCHA. So kann die Identity Platform reCAPTCHA-Schlüssel in Ihrem Namen verwalten.

So erstellen Sie ein Dienstkonto:

  1. Verwenden Sie die Google Cloud CLI, um ein Dienstkonto zu erstellen:

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

    Ersetzen Sie PROJECT_ID durch die ID des Projekts.

  2. Gewähren Sie dem Dienstkonto Zugriff auf reCAPTCHA:

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

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die Projekt-ID
    • PROJECT_NUMBER: die Projektkontonummer

reCAPTCHA aktivieren

reCAPTCHA bietet zwei Modi, mit denen Sie Nutzer schützen können:

  • Prüfung: Wenn diese Option aktiviert ist, erstellt die Identity Platform einen oder mehrere reCAPTCHA-Schlüssel in Ihrem Projekt, mit denen der Traffic zu Identity Platform APIs bewertet wird, ohne Anfragen zu blockieren. Anhand der Messwerte, die im Prüfmodus erfasst werden, können Sie feststellen, ob Sie die reCAPTCHA-Erzwigung aktivieren sollten.
  • Erzwingung: Wenn diese Option aktiviert ist, erstellt die Identity Platform einen oder mehrere reCAPTCHA-Schlüssel in Ihrem Projekt, die zum Bewerten des Traffics zu Identity Platform APIs verwendet werden. API-Anfragen, die kein reCAPTCHA-Token enthalten, werden abgelehnt. Aktivieren Sie die Erzwingung erst, nachdem Sie alle Ihre Clients zu einem SDK mit reCAPTCHA-Unterstützung migriert haben.

So aktivieren Sie reCAPTCHA:

  1. Falls noch nicht geschehen, aktivieren Sie die reCAPTCHA API für Ihr Projekt.
  2. Aktivieren Sie die Einbindung der Identity Platform in reCAPTCHA für ein Projekt mithilfe des Admin SDK. reCAPTCHA wird ab der Node.js Admin SDK-Version 11.7.0 unterstützt.

    Beispiel:

    // Get project config
    const getProjectConfig = () => {
      getAuth().projectConfigManager().getProjectConfig()
      .then((response) => {
        console.log('Project reCAPTCHA config: ', response.recaptchaConfig);
      }).catch((error) => {
        console.log('Error getting project config:', error);
      });
    }
    
    // Update project config with reCAPTCHA config
    const updateConfigRequest = {
      recaptchaConfig: {
        emailPasswordEnforcementState:  'AUDIT',
        managedRules: [{
          endScore: 0.3,
          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);
      });
    }
    
  3. Aktivieren Sie die Integration der Identity Platform mit reCAPTCHA für einen Mandanten, der das Admin SDK verwendet. Beispiel:

    // Update tenant with reCAPTCHA config
    const updateTenantRequest = {
      recaptchaConfig: {
        emailPasswordEnforcementState:  'AUDIT',
        managedRules: [{
          endScore: 0.3,
          action: 'BLOCK'
        }]
      }
    };
    const updateTenantWithRecaptchaConfig = () => {
      getAuth().tenantManager().updateTenant("TENANT_ID", updateTenantRequest)
      .then((response) => {
        console.log('Updated reCAPTCHA config for tenant: ', response.recaptchaConfig);
      }).catch((error) => {
        console.log('Error updating the tenant:', error);
      });
    }
    

    Ersetzen Sie Folgendes:

    • TENANT_ID: die Mandanten-ID
  4. Wenn Sie Identity Platform auf Apple-Plattformen oder Android verwenden, müssen Sie sich registrieren. Ihre App über die Firebase Console aufrufen:

  5. Wenn Sie Identity Platform im Web verwenden, müssen Sie eine autorisierte Domain hinzufügen für jede Domain, die reCAPTCHA verwendet. So fügen Sie autorisierte Domains hinzu:

    1. Rufen Sie in der Google Cloud Console die Seite „Identity Platform“ auf.

      Zur Identity Platform

    2. Gehen Sie zu Einstellungen > Sicherheit.

    3. Klicken Sie auf Domain hinzufügen.

    4. Geben Sie den Domainnamen ein und klicken Sie auf Hinzufügen, um die Domain zu speichern.

    Die Bereitstellung des Websiteschlüssels kann einige Minuten dauern. Prüfen Sie die Messwerte, um sicherzugehen, dass Ihre Datenflüsse geschützt sind.

Client SDK konfigurieren

Konfigurieren Sie das Client SDK entsprechend der Plattform Ihrer App.

Web

  1. Aktualisieren Sie auf die aktuelle Version des Web SDK. reCAPTCHA-Unterstützung ist ab der JavaScript SDK-Version 9.20.0 verfügbar. Nachdem Sie das Web SDK in Ihre App eingebunden haben, wird Ihre reCAPTCHA-Konfiguration automatisch abgerufen und die von Ihnen konfigurierten Anbieter werden geschützt.

  2. Um die Anzahl der Netzwerkanrufe durch das SDK zu reduzieren und die Erfassung von reCAPTCHA-Signalen zu verbessern, empfehlen wir, es wie unten beschrieben explizit zu konfigurieren:

    import { initializeRecaptchaConfig } from '@firebase/auth';
    
    // Initialize Firebase Auth
    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. Aktualisieren Sie auf Android SDK-Version 31.5.0 oder höher. Für reCAPTCHA-Unterstützung sind API-Level 19 (KitKat) oder höher und Android 4.4 oder höher erforderlich. Nachdem Sie das Android SDK in Ihre App integriert haben, ruft diese Ihre reCAPTCHA-Konfiguration und schützt die von Ihnen konfigurierten Anbieter.

  2. Fügen Sie die folgende Build-Regel dem Abschnitt „Abhängigkeiten“ auf App-Ebene hinzu build.gradle-Datei:

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

    Verwenden Sie mindestens Version 18.4.0 des reCAPTCHA SDK.

  3. Um die Anzahl der Netzwerkanrufe durch das SDK zu reduzieren und die Erfassung von reCAPTCHA-Signalen zu optimieren, empfehlen wir, es so zu konfigurieren:

    • Kotlin:
    // Initialize Firebase Auth
    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 Auth
    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. Aktualisieren Sie auf die iOS SDK-Version 10.14.0 oder höher. Nachdem Sie das iOS SDK in Ihre App eingebunden haben, wird Ihre reCAPTCHA-Konfiguration automatisch abgerufen und die von Ihnen konfigurierten Anbieter werden geschützt.

  2. Informationen zum Einbinden des reCAPTCHA iOS SDK in Ihre App finden Sie unter Umgebung vorbereiten.

  3. Achten Sie darauf, dass -ObjC in Ihren Linker-Flags aufgeführt ist. Rufen Sie „Ziel“ auf > Build-Einstellungen > Alle > Verknüpfen und prüfen Sie, ob Other Linker Flags -ObjC anzeigt.

  4. Um die Anzahl der Netzwerkanrufe durch das SDK zu reduzieren und die Erfassung von reCAPTCHA-Signalen zu optimieren, empfehlen wir, es wie unten beschrieben explizit zu konfigurieren:

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

reCAPTCHA-Messwerte

Nach dem Aktivieren von reCAPTCHA die reCAPTCHA-Messwerte beobachten die Authentifizierungsabläufe geschützt sind. Wenn die Bereitstellung des reCAPTCHA-Websiteschlüssels fehlschlägt oder die erforderlichen Dienstkonten nicht erstellt wurden, wird die reCAPTCHA-Authentifizierung nicht geöffnet.

Prüfen Sie, ob die reCAPTCHA-Authentifizierung funktioniert die folgenden Messwerte, die Ihr Projekt an Cloud Monitoring ausgibt:

identitytoolkit.googleapis.com/recaptcha/verdict_count

Verfolgt die verschiedenen von reCAPTCHA zurückgegebenen Ergebnisse. Ein Ergebnis wird generiert, wenn ein Token vorhanden ist. Sie können nach den folgenden Ergebnissen filtern:

  • PASSED: Gibt an, dass eine bestimmte Anfrage zulässig ist, wenn die Erzwingung aktiviert ist.
  • FAILED_AUDIT: Gibt an, dass eine bestimmte Anfrage abgelehnt wird, wenn der reCAPTCHA-Audit-Modus aktiviert ist.
  • FAILED_ENFORCE: Gibt an, dass eine bestimmte Anfrage bei reCAPTCHA abgelehnt wird. Erzwingungsmodus aktiviert ist.
  • CLIENT_TYPE_MISSING: Gibt an, dass bei einer bestimmten Anfrage ein Client fehlt Typ, wenn die reCAPTCHA-Erzwingung aktiviert ist. Das tritt in der Regel auf, wenn eine Anfrage mit einer veralteten Client-SDK-Version gesendet wurde, die keine reCAPTCHA-Unterstützung hat.
  • KEYS_MISSING: Gibt an, dass eine bestimmte Anfrage nicht bestätigt werden kann, da keine gültigen reCAPTCHA-Schlüssel abgerufen oder generiert werden können, wenn die reCAPTCHA-Erzwingung aktiviert ist.

So ändern Sie die Punktzahlbereiche, um das Verhältnis von bestandenen zu nicht bestandenen Ergebnissen zu ändern: Siehe reCAPTCHA Enterprise aktivieren.

identitytoolkit.googleapis.com/recaptcha/token_count

Verfolgt die Anzahl und den Status von reCAPTCHA-Tokens, die vom Identity Platform-Back-End. Sie können nach den folgenden Status filtern:

  • VALID: Gibt an, dass das übergebene reCAPTCHA-Token gültig ist.
  • EXPIRED: Das übergebene reCAPTCHA-Token ist abgelaufen. Ein abgelaufenes Token kann auf Netzwerkprobleme des Clients oder auf Missbrauch hinweisen.
  • DUPLICATE: Gibt an, dass das übergebene reCAPTCHA-Token ein Duplikat ist. Ein doppeltes Token kann auf Netzwerkprobleme des Clients oder auf Missbrauch hinweisen.
  • INVALID: Gibt an, dass das übergebene reCAPTCHA-Token ungültig ist. Ein ungültiges Token kann auf Missbrauch hinweisen.
  • MISSING: Gibt an, dass das reCAPTCHA-Token in der angegebenen Anfrage nicht vorhanden ist. Fehlende Tokens können auf eine veraltete Client-App hinweisen.
  • UNCHECKED: Gibt an, dass das reCAPTCHA-Token nicht geprüft wurde aufgrund von Ergebnissen zu CLIENT_TYPE_MISSING oder KEYS_MISSING.

Wenn Ihre App erfolgreich für Nutzer eingeführt wurde, sehen Sie Traffic mit gültigen Tokens. Die Anzahl der gültigen Tokens ist wahrscheinlich proportional zur Anzahl der Nutzer, die Ihre aktualisierte App verwenden.

identitytoolkit.googleapis.com/recaptcha/risk_scores

Erfasst die reCAPTCHA-Wertverteilung. So können Sie die optimalen Bewertungsbereiche für Ihre Konfiguration definieren.

Anhand dieser Messwerte können Sie ermitteln, ob Sie die Erzwingung aktivieren können. Beachten Sie Folgendes, bevor Sie die Erzwingung aktivieren:

  • Wenn die meisten der letzten Anfragen gültige Tokens haben und das Verhältnis von PASSED zu FAILED_AUDIT oder FAILED_ENFORCE für Ihren Geschäftsfall akzeptabel ist, sollten Sie die Erzwingung aktivieren.
  • Wenn die Mehrheit der letzten Anfragen wahrscheinlich von veralteten Clients stammt, sollten Sie Warten, bis mehr Nutzer ihre App aktualisieren, bevor die Erzwingung aktiviert wird. Wenn Sie die Einbindung der Identity Platform mit reCAPTCHA erzwingen, funktionieren ältere Anwendungsversionen, die nicht in reCAPTCHA eingebunden sind, nicht mehr.

So rufen Sie diese Messwerte auf:

  1. Rufen Sie in der Google Cloud Console die Seite Metrics Explorer auf.

    Zu Metrics Explorer

  2. Geben Sie unter Messwert auswählen den Wert Identity Toolkit-Mandant ein. Wenn Sie die Mehrmandantenfähigkeit verwenden, können Sie Messwerte für jeden Mandanten, und für das übergeordnete Projekt, indem Sie tenant_name leer lassen.

Erzwingung aktivieren

Nachdem Sie überprüft haben, ob Ihre App akzeptable Nutzerzugriffe erhält, können Sie die reCAPTCHA-Erzwingung aktivieren, um Ihre Nutzer zu schützen. Stellen Sie sicher, dass Sie die Beeinträchtigung bestehender Nutzer nicht beeinträchtigen. Dies schließt Nutzer ein, die möglicherweise ein ältere Version deiner App.

Wenn Sie die reCAPTCHA-Erzwigung für ein Projekt oder einen Tenant aktivieren möchten, führen Sie mit dem Admin SDK Folgendes aus:

const enforceRequest = {
  recaptchaConfig: {
    emailPasswordEnforcementState:  'ENFORCE',
    managedRules: [{
      endScore: 0.3,
      action: 'BLOCK'
    }]
  }
};

reCAPTCHA deaktivieren

Verwenden Sie zum Deaktivieren von reCAPTCHA das Admin SDK, um Folgendes auszuführen:

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

reCAPTCHA-Ergebnisse mit Cloud Run-Funktionen überschreiben

Sie können nicht nur die Punktzahl-Schwellenwerte konfigurieren, reCAPTCHA-Ergebnis für ein bestimmtes Token mithilfe einer benutzerdefinierten Blockierfunktion für Cloud Run-Funktionen. Das ist hilfreich, wenn die reCAPTCHA-Punktzahl für die Anmeldung eines Nutzers niedrig ist, der Nutzer aber vertrauenswürdig ist oder auf andere Weise bestätigt wurde und daher die Anmeldung abschließen darf.

Weitere Informationen zum Konfigurieren von Blockierfunktionen mit reCAPTCHA finden Sie unter Firebase-Authentifizierung mit Cloud Functions zum Blockieren erweitern.

Fehlerbehebung

Nutzer können sich nicht anmelden, registrieren oder ihr Passwort zurücksetzen

Möglicherweise verwenden Nutzer eine veraltete Version der App. Wenn Sie noch keine aktualisierte Version Ihrer App mit dem Client SDK bereitgestellt haben, deaktivieren Sie den Erzwingungsmodus sofort. Andernfalls bitten Sie Ihre Nutzer, ihre App zu aktualisieren.

Alternativ werden Nutzer möglicherweise aufgrund Ihrer aktuellen Konfiguration blockiert. Geben Sie Folgendes ein:

  • Erwägen Sie eine weniger strikte Konfiguration, indem Sie eine Anpassung vornehmen. reCAPTCHA-Schlüsselbewertungen.
  • Bitten Sie den Nutzer, es mit einem anderen Gerät, Browser oder Netzwerk zu versuchen.
  • Kehren Sie zum Prüfmodus zurück und beobachten Sie die Messwerte, bevor Sie den Erzwingungsmodus wieder aktivieren.