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ésistante au spam, aux utilisations abusives et à d'autres activités frauduleuses.
L'intégration crée une évaluation reCAPTCHA Enterprise en votre nom pour valider les requêtes des utilisateurs. Pour obtenir des informations 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 reCAPTCHA contre les robots. Avec la protection contre les robots, 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 | Opération | Méthode |
---|---|---|
passwordProvider |
Connexion par e-mail et mot de passe | signInWithPassword |
Inscription par e-mail et mot de passe | signUpPassword |
|
Connexion par lien envoyé par e-mail | getOobCode |
|
Réinitialisation du mot de passe | getOobCode |
|
phoneProvider |
S'inscrire ou se connecter avec un numéro de téléphone | sendVerificationCode |
Enregistrement du numéro de téléphone pour l'authentification multifacteur | mfaSmsEnrollment |
|
Connexion à l'aide d'un numéro de téléphone pour l'authentification MFA | 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 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 adresse 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 été 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 à l'API reCAPTCHA Enterprise nécessite un compte de service Identity Platform pour chaque projet qui utilisera reCAPTCHA. Identity Platform peut ainsi gérer les clés reCAPTCHA pour vous. 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 avez d'autres projets que vous souhaitez protéger avec reCAPTCHA, procédez comme suit :
Utilisez 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 de compte du projet
Modes de protection contre les bots reCAPTCHA
La protection reCAPTCHA contre les robots comporte deux modes qui vous aident à protéger les utilisateurs : audit et application. Ces modes se comportent différemment selon le fournisseur d'identité.
Fournisseur d'adresse e-mail et de mot de passe
Les modes Audit et Appliquer se comportent comme suit pour les flux d'authentification par adresse e-mail et mot de passe.
Mode Audit
Lorsque vous définissez l'application du mot de passe/e-mail sur le mode audit, Identity Platform crée une ou plusieurs clés reCAPTCHA dans votre projet. Ces clés 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 reCAPTCHA.
Mode application forcée
Lorsque vous définissez l'application de l'authentification par e-mail et mot de passe sur le mode "Appliquer", Identity Platform crée une ou plusieurs clés reCAPTCHA dans votre projet. Ces clés servent à évaluer le trafic vers les API Identity Platform. Les requêtes API qui n'incluent pas de jeton reCAPTCHA sont rejetées. N'activez l'application qu'après avoir migré tous vos clients vers un SDK compatible avec reCAPTCHA.
Opérateur téléphonique
Les modes "Audit" et "Appliquer" se comportent comme suit pour les flux d'authentification par téléphone.
Mode Audit
Lorsque vous définissez l'application de l'authentification par téléphone sur le mode audit, Identity Platform utilise la protection reCAPTCHA contre les robots pour la validation des applications. Si la demande d'un utilisateur réussit l'évaluation concernant la fraude à la facturation par l'opérateur, un code de validation par SMS est envoyé. Si la demande d'un utilisateur échoue à l'évaluation concernant la fraude à la facturation par l'opérateur et que vous utilisez le SDK client, Identity Platform déclenche des méthodes de validation de secours pour terminer le flux d'authentification par téléphone. Les méthodes de secours acceptées dépendent de la plate-forme de votre application.
Le SDK client déclenche les méthodes de validation de secours dans les scénarios suivants :
- Le jeton reCAPTCHA est manquant.
- Le jeton reCAPTCHA n'est pas valide ou a expiré.
- Le jeton reCAPTCHA ne dépasse pas le seuil de score.
- reCAPTCHA n'est pas configuré correctement.
Assurez-vous que les méthodes de validation de secours 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 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 robots échoue, le mode 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 sur le Google Play Store (sur le SDK Authentication v21.2.0 et versions ultérieures).
- 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 robots échoue, le mode audit s'appuie sur des notifications push silencieuses pour la validation. Cette méthode de validation consiste à envoyer un jeton à votre application sur l'appareil demandeur à 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 correctement configurées.
Pour en savoir plus sur la configuration de la validation des applications iOS, consultez Activer la validation des applications dans la documentation Firebase.
Mode application forcée
Lorsque vous définissez l'application de l'authentification par téléphone sur le mode "Appliquer", Identity Platform utilise la protection reCAPTCHA contre les robots pour la validation des applications. Si la demande d'un utilisateur réussit l'évaluation concernant la fraude à la facturation par l'opérateur, un code de validation par SMS est envoyé. Si la demande d'un utilisateur échoue à l'évaluation concernant la fraude à la facturation par l'opérateur, Identity Platform bloque la demande et n'envoie pas de message SMS contenant un code de validation.
Aucune validation de secours n'est requise en mode "Appliquer". Vous n'avez pas besoin de configurer de méthodes de validation supplémentaires pour votre application. Toutefois, nous vous recommandons de configurer un outil de vérification reCAPTCHA pour les applications Web afin de vous assurer que reCAPTCHA v2 est activé si vous décidez de passer au mode reCAPTCHA AUDIT
ou OFF
pour votre application.
Configurer l'intégration d'Identity Platform à 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 reCAPTCHA et activer la protection contre les robots.
- Configurez le SDK client pour la plate-forme de votre application.
Nous vous recommandons d'abord d'activer l'application reCAPTCHA en mode audit et de surveiller les métriques reCAPTCHA émises par votre projet pour vous assurer que les flux d'authentification sont correctement protégés.
Cela vous permet de ne pas interrompre le trafic utilisateur pendant que vous auditez leur 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 robots reCAPTCHA
Fournisseur d'adresse e-mail et de mot de passe
Pour activer la protection reCAPTCHA contre les robots pour les flux d'authentification par adresse e-mail et mot de passe, procédez comme suit :
Si vous ne l'avez pas déjà fait, activez l'API reCAPTCHA Enterprise sur votre projet.
Pour activer la protection contre les robots pour un projet, utilisez le SDK Admin. La compatibilité avec 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 Modes de protection reCAPTCHA contre les robots.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 sur une valeur comprise 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 moins. 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 locataire à 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 de 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 en mode 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.
Opérateur téléphonique
Pour activer la protection reCAPTCHA contre les robots 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 sur votre projet.
Pour activer la protection contre les robots pour un projet, utilisez le SDK Admin. La compatibilité avec reCAPTCHA est disponible dans 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 forcée 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 Modes de protection reCAPTCHA contre les robots.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 sur une valeur comprise 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 moins. 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 locataire à 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 :
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 de 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 en mode 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 dans les versions 11 et ultérieures du SDK JavaScript.
Une fois que vous avez intégré le SDK Web à 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
Mettez à jour le SDK Android vers la dernière version. La compatibilité reCAPTCHA pour l'authentification par e-mail et mot de passe, ainsi que l'authentification par téléphone dans les applications Android, est disponible sur la version 23.1.0 et ultérieure du SDK Android.
De plus, la compatibilité avec reCAPTCHA nécessite le niveau d'API 23 (Marshmallow) ou supérieur, et Android 6 ou version ultérieure.
Une fois que vous avez intégré le SDK Android à votre application, il 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 du fichier
build.gradle
au niveau de l'application :implementation 'com.google.android.recaptcha:recaptcha:18.5.1'
Assurez-vous d'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 reCAPTCHA iOS à 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 > Associer 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 robots
Avant de définir le mode forcé pour l'application reCAPTCHA, 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 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 quand même normalement.
Assurez-vous que l'authentification reCAPTCHA fonctionne en examinant les métriques suivantes que votre projet émet dans Cloud Monitoring :
identitytoolkit.googleapis.com/recaptcha/verdict_count
: suit les différents verdicts 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 des scores de protection des robots.
Pour en savoir plus, consultez Surveiller les métriques reCAPTCHA.
Appliquer la protection contre les robots 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 une ancienne version de votre application.
Fournisseur d'adresse e-mail et de mot de passe
Pour activer l'application reCAPTCHA pour les flux d'authentification par e-mail et mot de passe sur un projet ou un locataire, utilisez le SDK Admin pour exécuter la commande suivante :
const enforceRequest = {
recaptchaConfig: {
emailPasswordEnforcementState: 'ENFORCE',
}]
}
};
Opérateur téléphonique
Pour activer l'application reCAPTCHA pour les flux d'authentification par SMS sur un projet ou un locataire, utilisez le SDK Admin pour exécuter la commande suivante :
const enforceRequest = {
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE',
useSmsBotScore: 'true'
}]
}
};
Désactiver la protection contre les robots reCAPTCHA
Fournisseur d'adresse e-mail et de mot de passe
Pour désactiver la protection contre les robots pour les flux d'authentification par e-mail et mot de passe, utilisez le SDK Admin pour exécuter la commande suivante :
const disableRequest = {
recaptchaConfig: {
emailPasswordEnforcementState: 'OFF',
}
};
Opérateur téléphonique
Pour désactiver la protection contre les robots pour les flux d'authentification par SMS, utilisez le SDK Admin pour exécuter la commande suivante :
const disableRequest = {
recaptchaConfig: {
phoneEnforcementState: 'OFF',
useSmsBotScore: 'false'
}
};
Remplacer les verdicts reCAPTCHA avec des fonctions Cloud Run
En plus de configurer des seuils de score, vous pouvez remplacer un verdict reCAPTCHA pour un jeton donné à l'aide d'une fonction de blocage Cloud Run Functions personnalisée. Cela peut être utile dans les cas où le score reCAPTCHA pour une connexion utilisateur donnée est faible, mais où l'utilisateur est fiable ou a été validé par d'autres moyens et est donc autorisé à se connecter.
Pour en savoir plus sur la configuration des fonctions de blocage avec reCAPTCHA, consultez Étendre Firebase Authentication avec des fonctions Cloud de blocage.
Étapes suivantes
- Activez reCAPTCHA SMS defense pour les flux d'authentification par SMS.
- Découvrez comment utiliser votre propre clé reCAPTCHA.
- En savoir plus sur la surveillance des métriques reCAPTCHA
- En savoir plus sur reCAPTCHA