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:
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.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 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:
- 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:
- Für Apple-Plattformen registrieren Sie jede Bundle-ID, die Identity Platform verwendet.
- Für Android registrieren Sie jeden Android-Paketnamen, der Identity Platform verwendet.
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:
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 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
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.
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
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 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
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.
Informationen zum Einbinden des reCAPTCHA iOS SDK in Ihre App finden Sie unter Umgebung vorbereiten.
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, obOther Linker Flags
-ObjC
anzeigt.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 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 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:
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 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.