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 der Identity Platform in reCAPTCHA wird in Ihrem Namen eine reCAPTCHA-Bewertung erstellt, um Nutzeranfragen zu validieren. Preisinformationen finden Sie unter reCAPTCHA-Preise.

Ü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
Anmeldung mit 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. die das Risiko der Anfrage basierend auf Ihrer Konfiguration und Risikotoleranz bewerten.

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

Hinweise

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. Dadurch kann Identity Platform reCAPTCHA-Schlüssel in Ihrem Namen.

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 Projekt-ID.

  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 besser schützen können:

  • Audit: Wenn diese Option aktiviert ist, erstellt die Identity Platform ein oder mehrere reCAPTCHA. Schlüssel in Ihrem Projekt, mit denen der Traffic zu Identity Platform APIs bewertet wird ohne Anfragen zu blockieren. Mit den im Prüfmodus ausgegebenen Messwerten können Sie Ermitteln Sie, ob Sie die reCAPTCHA-Erzwingung aktivieren sollten.
  • Erzwingung: Wenn diese Option aktiviert ist, erstellt die Identity Platform ein oder mehrere reCAPTCHA Schlüssel in Ihrem Projekt, mit denen der Traffic zu Identity Platform APIs bewertet wird. API-Anfragen ohne reCAPTCHA-Token werden abgelehnt. Aktivieren Sie die Erzwingung erst, nachdem Sie alle Clients zu einem SDK mit reCAPTCHA-Unterstützung.

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: Gehen Sie so vor:

    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 von Websiteschlüsseln kann einige Minuten dauern. Damit Ihre Abläufe geschützt werden, sollten Sie die Messwerte überprüfen.

Client SDK konfigurieren

Konfigurieren Sie das Client SDK entsprechend der Plattform Ihrer App.

Web

  1. Aktualisieren Sie das Web SDK auf die neueste Version. reCAPTCHA-Unterstützung ist für JavaScript SDK ab Version 9.20.0 verfügbar. Nachdem Sie das Web-SDK in Ihre App integriert haben, ruft es automatisch Ihre reCAPTCHA-Konfiguration und schützt die von Ihnen konfigurierten Anbieter.

  2. Um die Anzahl der vom SDK durchgeführten Netzwerkaufrufe zu verringern, reCAPTCHA-Signalerfassung, wir empfehlen, sie zu konfigurieren explizit wie folgt:

    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 vom SDK ausgeführten Netzwerkaufrufe zu reduzieren und reCAPTCHA auszuführen die Signalerfassung effektiver ist, empfehlen wir eine explizite Konfiguration wie folgt:

    • 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. Führen Sie ein Update auf Version 10.14.0 oder höher des iOS SDK durch. Nachdem Sie das iOS-SDK in Ihre App integriert haben, ruft es automatisch Ihre reCAPTCHA-Konfiguration und schützt die von Ihnen konfigurierten Anbieter.

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

  3. Achten Sie darauf, dass -ObjC in den Verknüpfungs-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 vom SDK ausgeführten Netzwerkaufrufe zu reduzieren und reCAPTCHA auszuführen die Signalerfassung effektiver ist, empfehlen wir eine explizite Konfiguration wie folgt:

    • 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 der reCAPTCHA-Websiteschlüssel nicht bereitgestellt werden kann oder ein Dienst erforderlich ist Konten nicht erstellt wurden, schlägt die reCAPTCHA-Authentifizierung fehl.

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. Du kannst 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 bei reCAPTCHA abgelehnt wird. Prüfmodus 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. Dies geschieht in der Regel wenn eine Anfrage mit einer veralteten Client SDK-Version gesendet wurde, in der reCAPTCHA-Unterstützung.
  • KEYS_MISSING: Gibt an, dass eine Anfrage aufgrund des keine gültigen reCAPTCHA-Schlüssel abrufen oder generieren, wenn reCAPTCHA-Erzwingung ist aktiviert.

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 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 Probleme mit dem Clientnetzwerk oder Missbrauch hinweisen.
  • DUPLICATE: Gibt an, dass das übergebene reCAPTCHA-Token ein Duplikat. Ein doppeltes Token kann auf Probleme mit dem Clientnetzwerk oder 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 nicht vorhanden ist in für die jeweilige Anfrage. 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 definieren, die optimalen Wertbereiche für Ihre Konfiguration.

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

  • Wenn die Mehrheit der letzten Anfragen gültige Tokens enthält und das Verhältnis von PASSED Ergebnisse vom Typ „FAILED_AUDIT“ oder „FAILED_ENFORCE“ sind für Ihr Unternehmen akzeptabel erwägen Sie die Erzwingung.
  • Wenn die Mehrzahl 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 Erzwingung von reCAPTCHA 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.

So aktivieren Sie die reCAPTCHA-Erzwingung für ein Projekt oder einen Mandanten: Verwenden Sie das Admin SDK, um Folgendes auszuführen:

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 Functions überschreiben

Sie können nicht nur die Punktzahl-Schwellenwerte konfigurieren, reCAPTCHA-Ergebnis für ein bestimmtes Token mithilfe einer benutzerdefinierten Cloud Functions-Blockierfunktion. Das ist hilfreich, wenn ein reCAPTCHA-Wert für einen bestimmten Nutzer ist möglicherweise gering, aber der Nutzer ist vertrauenswürdig oder wurde durch eine andere bedeutet und daher berechtigt ist, die Anmeldung abzuschließen.

Weitere Informationen zum Konfigurieren von Blockierfunktionen mit reCAPTCHA finden Sie hier: Siehe Firebase-Authentifizierung mit blockierendem Cloud Functions erweitern.

Fehlerbehebung

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

Nutzer verwenden möglicherweise eine veraltete Version der App. Wenn Sie keine aktualisierte Version Ihrer App zur Verfügung gestellt haben, in der das Client SDK verwendet wird, den Erzwingungsmodus sofort deaktivieren. Bitten Sie andernfalls die Nutzer, ihre App zu aktualisieren.

Es ist auch möglich, dass Nutzer aufgrund Ihrer aktuellen Konfiguration blockiert werden. Geben Sie Folgendes ein:

  • Ziehen Sie eine weniger strikte Konfiguration in Betracht, 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.