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:
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.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-IDPROJECT_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:
- Falls noch nicht geschehen, aktivieren Sie die reCAPTCHA API für Ihr Projekt.
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); }); }
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
Wenn Sie Identity Platform auf Apple-Plattformen oder Android verwenden, müssen Sie sich registrieren. Ihre App über die Firebase Console aufrufen:
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:
Rufen Sie in der Google Cloud Console die Seite „Identity Platform“ auf.
Gehen Sie zu Einstellungen > Sicherheit.
Klicken Sie auf Domain hinzufügen.
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
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.
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
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.
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.
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
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.
Informationen zum Einbinden des reCAPTCHA iOS SDK in Ihre App finden Sie unter Umgebung vorbereiten.
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, obOther Linker Flags
-ObjC
anzeigt.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 zuCLIENT_TYPE_MISSING
oderKEYS_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
zuFAILED_AUDIT
oderFAILED_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:
Rufen Sie in der Google Cloud Console die Seite Metrics Explorer auf.
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.