Intégrer Identity Platform à l'API reCAPTCHA Enterprise
Ce document explique comment utiliser l'intégration d'Identity Platform avec l'API reCAPTCHA Enterprise pour renforcer la sécurité de vos utilisateurs. Cette fonctionnalité rend votre application plus résiliente contre le spam, les utilisations abusives et toute autre activité frauduleuse.
L'intégration crée une évaluation reCAPTCHA Enterprise en votre nom pour valider les requêtes des utilisateurs. Pour en savoir plus sur les tarifs, consultez la page Tarifs de reCAPTCHA.
Présentation
Lorsque vous configurez l'intégration d'Identity Platform avec l'API reCAPTCHA Enterprise, vous activez la fonctionnalité de protection par défaut de reCAPTCHA, à savoir la protection contre les bots reCAPTCHA. Avec la protection contre les bots, Identity Platform provisionne des clés reCAPTCHA basées sur des scores dans votre projet en votre nom. Lorsqu'un utilisateur accède à votre application ou à votre site à l'aide de l'une des opérations suivantes, le SDK client charge reCAPTCHA lorsque le fournisseur correspondant est activé.
Fournisseur | Operation | Méthode |
---|---|---|
passwordProvider |
Connexion par e-mail et mot de passe | signInWithPassword |
Inscription par e-mail et mot de passe | signUpPassword |
|
Connexion via un lien envoyé par e-mail | getOobCode |
|
Réinitialisation du mot de passe | getOobCode |
|
phoneProvider |
Inscription ou connexion via un numéro de téléphone | sendVerificationCode |
Enregistrement d'un numéro de téléphone pour l'authentification multifacteur | mfaSmsEnrollment |
|
Connexion avec un numéro de téléphone pour l'authentification multifacteur | mfaSmsSignIn |
reCAPTCHA fournit ensuite à Identity Platform des scores qui évaluent le risque de la requête en fonction de votre configuration et de votre tolérance au risque.
Pour en savoir plus, consultez la présentation de reCAPTCHA.
Avant de commencer
En fonction du type de flux d'authentification que vous souhaitez protéger avec reCAPTCHA, assurez-vous d'avoir configuré les éléments suivants:
- Pour les flux d'authentification par e-mail et mot de passe, assurez-vous d'avoir configuré la connexion par e-mail pour les utilisateurs.
Pour les flux d'authentification par SMS, assurez-vous d'avoir intégré au moins l'un des éléments suivants:
- Connexion par téléphone pour les utilisateurs
- Authentification multifacteur pour votre application Web, Android ou iOS.
Créer un compte de service
L'intégration d'Identity Platform avec l'API reCAPTCHA Enterprise nécessite un compte de service Identity Platform pour chaque projet qui utilisera reCAPTCHA. Cela permet à Identity Platform de gérer les clés reCAPTCHA en votre nom. Si vous avez déjà créé un compte de service, accordez-lui l'accès à reCAPTCHA.
Si vous n'avez pas encore créé de compte de service ou si vous souhaitez protéger d'autres projets avec reCAPTCHA, procédez comme suit:
Utilisez la Google Cloud CLI pour créer un compte de service:
gcloud beta services identity create \ --service=identitytoolkit.googleapis.com \ --project=PROJECT_ID
Remplacez
PROJECT_ID
par l'ID du projet.Accordez au compte de service l'accès à reCAPTCHA:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-identitytoolkit.iam.gserviceaccount.com \ --role=roles/identitytoolkit.serviceAgent
Remplacez les éléments suivants :
PROJECT_ID
: ID du projetPROJECT_NUMBER
: numéro du compte du projet
Modes de protection contre les bots reCAPTCHA
La protection contre les bots reCAPTCHA propose deux modes pour vous aider à protéger les utilisateurs: Audit et Forcé. Le comportement de ces modes varie en fonction du fournisseur d'identité.
Fournisseur de messagerie-mot de passe
Les modes d'audit et d'application se comportent comme suit pour les flux d'authentification par adresse e-mail et mot de passe.
Mode d'audit
Lorsque vous définissez l'application de l'authentification par e-mail et mot de passe en mode audit, Identity Platform crée une ou plusieurs clés reCAPTCHA dans votre projet, qui sont utilisées pour évaluer le trafic vers les API Identity Platform sans bloquer aucune requête. Utilisez les métriques émises en mode audit pour déterminer si vous devez activer l'application de reCAPTCHA.
Mode d'application forcée
Lorsque vous définissez l'application de la validation de l'adresse e-mail et du mot de passe sur le mode d'application, Identity Platform crée une ou plusieurs clés reCAPTCHA dans votre projet, qui sont utilisées pour évaluer le trafic vers les API Identity Platform. Les requêtes d'API qui n'incluent pas de jeton reCAPTCHA sont rejetées. N'activez l'application de la règle qu'après avoir migré tous vos clients vers un SDK compatible avec reCAPTCHA.
Fournisseur de téléphonie
Les modes d'audit et d'application forcée se comportent comme suit pour les flux d'authentification par téléphone.
Mode d'audit
Lorsque vous définissez l'application de l'authentification par téléphone en mode d'audit, Identity Platform utilise la protection contre les robots reCAPTCHA pour la validation des applications. Si la requête de l'utilisateur passe l'évaluation de la protection contre les robots, Identity Platform envoie un message SMS contenant un code de validation sur le téléphone de l'utilisateur. Si l'évaluation de la protection contre les robots échoue pour une requête et que vous utilisez le SDK client, des méthodes de validation de remplacement sont déclenchées pour terminer le flux d'authentification par téléphone. Les méthodes de remplacement acceptées dépendent de la plate-forme de votre application.
Le SDK client déclenche les méthodes de validation de remplacement dans les scénarios suivants:
- Le jeton reCAPTCHA est manquant.
- Le jeton reCAPTCHA n'est pas valide ou a expiré.
- Le score du jeton reCAPTCHA n'atteint pas le seuil.
- reCAPTCHA n'est pas configuré correctement.
Assurez-vous que les méthodes de validation de remplacement pour la plate-forme de votre application sont configurées et prêtes à être déclenchées par le SDK client si nécessaire.
Web
Si l'évaluation initiale de la protection contre les robots échoue, le mode d'audit s'appuie sur reCAPTCHA v2 pour la validation. Vous devez donc configurer l'outil de vérification reCAPTCHA (RecaptchaVerifier
) et le transmettre aux opérations d'authentification par téléphone suivantes:
verifyPhoneNumber
signInWithPhoneNumber
linkWithPhoneNumber
reauthenticateWithPhoneNumber
auth/argument-error
. Pour en savoir plus sur la configuration de l'outil de vérification reCAPTCHA, consultez Configurer l'outil de vérification reCAPTCHA dans la documentation Firebase.
Android
Si l'évaluation initiale de la protection contre les bots échoue, le mode d'audit vérifie votre application par rapport à l'API Play Integrity. Si cette validation échoue, reCAPTCHA v2 est déclenché. reCAPTCHA v2 peut être déclenché dans les scénarios suivants:
- Si les services Google Play ne sont pas installés sur l'appareil de l'utilisateur final.
- Si l'application n'est pas distribuée via le Google Play Store (sur le SDK Authentication v21.2.0 ou version ultérieure).
- Si le jeton SafetyNet obtenu n'était pas valide (sur les versions du SDK Authentication antérieures à la version 21.2.0).
iOS
Si l'évaluation initiale de la protection contre les bots échoue, le mode d'audit s'appuie sur des notifications push silencieuses pour la validation. Cette méthode de validation implique d'envoyer un jeton à votre application sur l'appareil à l'origine de la demande à l'aide d'une notification push silencieuse. Si votre application reçoit la notification, le processus d'authentification du téléphone se poursuit. Si votre application ne reçoit pas la notification push, reCAPTCHA v2 est déclenché. reCAPTCHA v2 peut être déclenché si les notifications push silencieuses ne sont pas configurées correctement.
Pour en savoir plus sur la configuration de la validation des applications iOS, consultez la section Activer la validation des applications dans la documentation Firebase.
Mode d'application forcée
Lorsque vous définissez l'application de l'authentification par téléphone sur le mode forcé, Identity Platform utilise la protection contre les robots reCAPTCHA pour la validation des applications. Si la requête de l'utilisateur passe l'évaluation de la protection contre les robots, Identity Platform envoie un message SMS contenant un code de validation sur le téléphone de l'utilisateur. Si l'évaluation de la protection contre les robots échoue, Identity Platform bloque la requête et n'envoie pas de message SMS contenant un code de validation.
Aucune vérification de remplacement n'est requise en mode d'application, vous n'avez pas besoin de configurer de méthodes de validation supplémentaires pour votre application. Toutefois, nous vous recommandons de configurer le vérificateur reCAPTCHA pour les applications Web afin de vous assurer que reCAPTCHA v2 est activé si vous décidez de définir le mode reCAPTCHA de votre application sur AUDIT
ou OFF
.
Configurer l'intégration d'Identity Platform avec l'API reCAPTCHA Enterprise
Pour configurer l'intégration d'Identity Platform à l'API reCAPTCHA Enterprise, procédez comme suit:
- Utilisez le SDK Admin pour définir l'état d'application de reCAPTCHA et activer la protection contre les bots.
- Configurez le SDK client pour la plate-forme de votre application.
Nous vous recommandons d'abord d'activer l'application de reCAPTCHA en mode audit et de surveiller les métriques reCAPTCHA que votre projet émet pour vous assurer que les flux d'authentification sont correctement protégés.
Vous faites cela pour ne pas interrompre le trafic utilisateur pendant que vous auditez son utilisation de reCAPTCHA. Une fois que vous avez vérifié que vos flux d'authentification sont protégés, définissez la protection contre les robots sur ENFORCE
.
Activer la protection contre les bots reCAPTCHA
Fournisseur de messagerie-mot de passe
Pour activer la protection contre les bots reCAPTCHA pour les flux d'authentification par adresse e-mail/mot de passe, procédez comme suit:
Si vous ne l'avez pas déjà fait, activez l'API reCAPTCHA Enterprise dans votre projet.
Pour activer la protection contre les robots pour un projet, utilisez le SDK Admin. La prise en charge de reCAPTCHA est disponible sur les versions 11.7.0 et ultérieures du SDK Admin Node.js.
Exemple :
// 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); }); }
Remplacez les éléments suivants :
ENFORCE_MODE
: mode que vous souhaitez définir pour l'application de l'authentification reCAPTCHA par e-mail et mot de passe. Les valeurs valides sontOFF
,AUDIT
etENFORCE
. Pour activer la protection contre les robots, ce paramètre doit être défini surAUDIT
ouENFORCE
. Lorsque vous activez la protection contre les robots pour la première fois, nous vous recommandons de définir ce paramètre surAUDIT
et de vous assurer que vos flux d'authentification sont protégés avant de le définir surENFORCE
. Pour en savoir plus sur le fonctionnement des modes, consultez la section Modes de protection contre les bots reCAPTCHA.END_SCORE
: score d'évaluation de la protection contre les robots le plus bas qu'une requête peut avoir avant d'échouer. Vous pouvez définir ce score entre0.0
et1.0
. Par exemple, si vous définissez un seuil de0.6
, reCAPTCHA échouera pour toute requête avec un score de0.5
ou inférieur. Par conséquent, plus vous définissez un score élevé, plus les règles seront strictes.
Vous pouvez également activer la protection contre les robots avec la même méthode de configuration pour un tenant à l'aide du SDK Admin. Pour en savoir plus sur la mise à jour d'un locataire, consultez Mettre à jour un locataire.
Si vous utilisez Identity Platform sur iOS ou Android, vous devez enregistrer votre application depuis la console Firebase:
- Pour iOS, enregistrez chaque ID de bundle qui utilise Identity Platform.
- Pour Android, enregistrez chaque nom de package Android qui utilise Identity Platform.
Si vous utilisez Identity Platform sur le Web, vous devez ajouter un domaine autorisé pour chaque domaine qui utilise reCAPTCHA. Pour ajouter des domaines autorisés, procédez comme suit:
Dans la console Google Cloud, accédez à la page Identity Platform.
Accédez à Paramètres > Sécurité.
Cliquez sur Ajouter un domaine.
Saisissez le nom du domaine, puis cliquez sur Ajouter pour l'enregistrer.
Le provisionnement des clés reCAPTCHA peut prendre plusieurs minutes.
Si vous avez défini l'application de la règle sur le mode d'audit, nous vous recommandons de surveiller les métriques reCAPTCHA pour la protection contre les robots afin de vous assurer que vos flux sont protégés.
Fournisseur de téléphonie
Pour activer la protection contre les bots reCAPTCHA pour les flux d'authentification par SMS, procédez comme suit:
Si vous ne l'avez pas déjà fait, activez l'API reCAPTCHA Enterprise dans votre projet.
Pour activer la protection contre les robots pour un projet, utilisez le SDK Admin. La prise en charge de reCAPTCHA est disponible sur les versions 12.7.0 et ultérieures du SDK Admin Node.js.
Exemple :
// 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);
Remplacez les éléments suivants :
ENFORCE_MODE
: mode que vous souhaitez définir pour l'application de l'authentification par téléphone reCAPTCHA. Les valeurs valides sontOFF
,AUDIT
etENFORCE
. Pour activer la protection contre les robots pour les flux basés sur les SMS, ce paramètre doit être défini surAUDIT
ouENFORCE
, etuseSmsBotScore
doit être défini surtrue
.Lorsque vous activez la protection contre les robots pour la première fois, nous vous recommandons de définir ce paramètre sur
AUDIT
et de vous assurer que vos flux d'authentification sont protégés avant de le définir surENFORCE
. Pour en savoir plus sur le fonctionnement des modes, consultez la section Modes de protection contre les bots reCAPTCHA.END_SCORE
: score d'évaluation de la protection contre les robots le plus bas qu'une requête peut avoir avant d'échouer. Vous pouvez définir ce score entre0.0
et1.0
. Par exemple, si vous définissez un seuil de0.6
, reCAPTCHA refusera toute requête avec un score de0.5
ou inférieur. Par conséquent, plus vous définissez le score plus élevé, plus les règles seront strictes.
Vous pouvez également activer la protection contre les robots avec la même méthode de configuration pour un tenant à l'aide du SDK Admin. Pour en savoir plus sur la mise à jour d'un locataire, consultez Mettre à jour un locataire.
Si vous utilisez Identity Platform sur iOS ou Android, vous devez enregistrer votre application depuis la console Firebase:
- Pour iOS, enregistrez chaque ID de bundle qui utilise Identity Platform.
- Pour Android, enregistrez chaque nom de package Android qui utilise Identity Platform.
Si vous utilisez Identity Platform sur le Web, vous devez ajouter un domaine autorisé pour chaque domaine qui utilise reCAPTCHA. Pour ajouter des domaines autorisés, procédez comme suit:
Dans la console Google Cloud, accédez à la page Identity Platform.
Accédez à Paramètres > Sécurité.
Cliquez sur Ajouter un domaine.
Saisissez le nom du domaine, puis cliquez sur Ajouter pour l'enregistrer.
Le provisionnement des clés reCAPTCHA peut prendre plusieurs minutes.
Si vous avez défini l'application de la règle sur le mode d'audit, nous vous recommandons de surveiller les métriques reCAPTCHA pour la protection contre les robots afin de vous assurer que vos flux sont protégés.
Configurer le SDK client
Configurez le SDK client en fonction de la plate-forme de votre application.
Web
Passez à la dernière version du SDK Web.
- La compatibilité de reCAPTCHA avec l'authentification par e-mail et mot de passe dans les applications Web est disponible dans les versions 9.20.0 et ultérieures du SDK JavaScript.
- La compatibilité de reCAPTCHA avec l'authentification par téléphone dans les applications Web est disponible pour les versions 11 et ultérieures du SDK JavaScript.
Une fois le SDK Web intégré à votre application, il récupère automatiquement votre configuration reCAPTCHA et active la protection pour les fournisseurs que vous avez configurés.
Si nécessaire, vous pouvez forcer la récupération du signal reCAPTCHA comme suit:
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
Passez à la dernière version du SDK Android. La prise en charge de reCAPTCHA pour l'authentification par e-mail et mot de passe, ainsi que pour l'authentification par téléphone dans les applications Android, est disponible à partir de la version 23.1.0 du SDK Android.
De plus, la compatibilité avec reCAPTCHA nécessite un niveau d'API 23 (Marshmallow) ou supérieur, ainsi qu'Android 6 ou version ultérieure.
Une fois que vous avez intégré le SDK Android à votre application, le SDK récupère automatiquement votre configuration reCAPTCHA et active la protection pour les fournisseurs que vous avez configurés.
Ajoutez la règle de compilation suivante à la section des dépendances de votre fichier
build.gradle
au niveau de l'application:implementation 'com.google.android.recaptcha:recaptcha:18.5.1'
Veillez à utiliser le SDK reCAPTCHA version 18.5.1 ou ultérieure.
Si nécessaire, vous pouvez forcer la récupération du signal reCAPTCHA comme suit:
- 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
Passez à la version 11.6.0 ou ultérieure du SDK iOS. Une fois que vous avez intégré le SDK iOS à votre application, il récupère automatiquement votre configuration reCAPTCHA et active la protection pour les fournisseurs que vous avez configurés.
Pour intégrer le SDK iOS reCAPTCHA à votre application, consultez Préparer votre environnement.
Assurez-vous que
-ObjC
est répertorié dans vos indicateurs de l'éditeur de liens. Accédez à Cible > Paramètres de compilation > Tous > Association et vérifiez queOther Linker Flags
affiche-ObjC
.Si nécessaire, vous pouvez forcer la récupération du signal reCAPTCHA comme suit:
- Swift:
// Initialize Firebase Authentication try await Auth.auth().initializeRecaptchaConfig()
- Objective-C:
// Initialize Firebase Authentication [[FIRAuth auth] initializeRecaptchaConfigWithCompletion:^(NSError * _Nullable error) { // Firebase Authentication initialization finished }];
Surveiller les métriques reCAPTCHA pour la protection contre les bots
Avant de définir l'application de reCAPTCHA sur le mode forcé, nous vous recommandons d'utiliser le mode audit et de surveiller les métriques reCAPTCHA émises par votre projet pour vous assurer que les flux d'authentification sont protégés. Par exemple, ces métriques peuvent vous aider à déterminer si vous avez correctement configuré l'intégration d'Identity Platform avec l'API reCAPTCHA Enterprise. Ils peuvent également vous aider à affiner le seuil de score pour votre trafic utilisateur. Si le provisionnement de la clé reCAPTCHA échoue ou si les comptes de service requis n'ont pas été créés, les tentatives d'authentification reCAPTCHA réussissent toujours normalement.
Assurez-vous que l'authentification reCAPTCHA fonctionne en examinant les métriques suivantes que votre projet envoie à Cloud Monitoring:
identitytoolkit.googleapis.com/recaptcha/verdict_count
: suit les différents résultats renvoyés par reCAPTCHA.identitytoolkit.googleapis.com/recaptcha/token_count
: suit le nombre et l'état des jetons reCAPTCHA reçus par le backend Identity Platform.identitytoolkit.googleapis.com/recaptcha/risk_scores
: suit la distribution du score de protection contre les robots.
Pour en savoir plus, consultez Surveiller les métriques reCAPTCHA.
Appliquer la protection contre les bots reCAPTCHA
Une fois que vous avez vérifié que votre application reçoit un trafic utilisateur acceptable, vous pouvez activer l'application reCAPTCHA pour protéger vos utilisateurs. Assurez-vous de ne pas perturber les utilisateurs existants, y compris ceux qui utilisent peut-être une ancienne version de votre application.
Fournisseur de messagerie-mot de passe
Pour appliquer reCAPTCHA aux flux d'authentification par e-mail et mot de passe d'un projet ou d'un locataire, utilisez le SDK Admin pour exécuter les opérations suivantes:
const enforceRequest = {
recaptchaConfig: {
emailPasswordEnforcementState: 'ENFORCE',
}]
}
};
Fournisseur de téléphonie
Pour activer l'application de reCAPTCHA pour les flux d'authentification par SMS sur un projet ou un locataire, utilisez le SDK Admin pour exécuter les opérations suivantes:
const enforceRequest = {
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE',
useSmsBotScore: 'true'
}]
}
};
Désactiver la protection contre les bots reCAPTCHA
Fournisseur de messagerie-mot de passe
Pour désactiver la protection contre les bots pour les flux d'authentification par e-mail et mot de passe, exécutez la commande suivante à l'aide du SDK Admin:
const disableRequest = {
recaptchaConfig: {
emailPasswordEnforcementState: 'OFF',
}
};
Fournisseur de téléphonie
Pour désactiver la protection contre les robots pour les flux d'authentification par SMS, exécutez la commande suivante à l'aide du SDK Admin:
const disableRequest = {
recaptchaConfig: {
phoneEnforcementState: 'OFF',
useSmsBotScore: 'false'
}
};
Forcer les évaluations reCAPTCHA avec des fonctions Cloud Run
En plus de configurer des seuils de score, vous pouvez remplacer un résultat reCAPTCHA pour un jeton donné à l'aide d'une fonction de blocage des fonctions Cloud Run personnalisée. Cela est utile lorsque le score reCAPTCHA d'une connexion utilisateur donnée est faible, mais que l'utilisateur est fiable ou a été validé par d'autres moyens, et qu'il est donc autorisé à effectuer la connexion.
Pour en savoir plus sur la configuration des fonctions de blocage avec reCAPTCHA, consultez Étendre l'authentification Firebase avec des fonctions Cloud de blocage.
Étape suivante
- Activez la protection reCAPTCHA contre la fraude à la facturation par l'opérateur via SMS pour les flux d'authentification par SMS.
- Découvrez comment utiliser votre propre clé reCAPTCHA.
- Découvrez comment surveiller les métriques reCAPTCHA.
- En savoir plus sur reCAPTCHA