Activer la protection contre la fraude à la facturation par l'opérateur via SMS pour l'authentification par SMS
Ce document explique comment utiliser reCAPTCHA pour protéger vos flux Identity Platform basés sur les SMS, tels que l'authentification par téléphone et multifacteur, contre la fraude à la facturation par l'opérateur via SMS (également appelée attaque par inflation artificielle du trafic).
Présentation
Si votre application s'appuie sur un flux par SMS pour l'authentification, vous pouvez activer la fonctionnalité de protection contre la fraude à la facturation par l'opérateur via SMS de reCAPTCHA dans le cadre de l'intégration d'Identity Platform à reCAPTCHA. Lorsqu'elle est activée, Identity Platform appelle la fonctionnalité de protection contre la fraude à la facturation par l'opérateur via SMS lorsqu'un utilisateur demande un SMS de validation à partir de votre application ou de votre site à l'aide des opérations phoneProvider
suivantes:
Operation | Méthode | |
---|---|---|
S'inscrire ou se connecter avec 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 MFA | mfaSmsSignIn |
reCAPTCHA fournit ensuite à Identity Platform un score de risque qui indique la probabilité que le numéro de téléphone de l'utilisateur soit utilisé pour commettre une fraude par SMS. Identity Platform compare ce score au seuil que vous avez défini dans la configuration de la protection contre la fraude à la facturation par l'opérateur via SMS, puis gère la requête en fonction de l'action que vous avez définie dans votre configuration.
Pour en savoir plus sur la fonctionnalité de protection contre la fraude à la facturation par l'opérateur via SMS de reCAPTCHA, consultez Détection et prévention de la fraude par SMS.
Avant de commencer
Avant d'activer la protection contre la fraude à la facturation par l'opérateur via SMS pour Identity Platform, effectuez les tâches suivantes:
Configurez les éléments suivants pour votre application ou votre site, le cas échéant:
- Connexion par téléphone pour les utilisateurs
- Authentification multifacteur pour votre application Web, Android ou iOS.
Si vous ne l'avez pas déjà fait, créez un compte de service pour chaque projet qui utilisera reCAPTCHA. Pour savoir comment procéder, consultez la section Créer un compte de service.
Modes d'application de l'authentification par téléphone reCAPTCHA
La protection contre la fraude à la facturation par l'opérateur via SMS reCAPTCHA nécessite que vous ayez configuré l'application reCAPTCHA pour forcer l'authentification par téléphone. Cette application propose deux modes: audit et forcer.
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 la fraude à la facturation par l'opérateur via SMS reCAPTCHA pour la validation des applications. Si la demande de l'utilisateur passe l'évaluation de la fraude à la facturation par l'opérateur, Identity Platform envoie un message SMS contenant un code de validation sur le téléphone de l'utilisateur. Si l'évaluation de la fraude par péage é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 fraude aux péages é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 fraude liée aux péages é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 fraude aux péages é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 "Enforcement" (Application), Identity Platform utilise la protection contre la fraude à la facturation par l'opérateur via SMS reCAPTCHA pour la validation de l'application. Si la requête de l'utilisateur passe l'évaluation de la fraude aux péages, Identity Platform envoie un message SMS contenant un code de validation sur le téléphone de l'utilisateur. Si l'évaluation de la fraude par péage é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
.
Activer la protection reCAPTCHA contre la fraude à la facturation par l'opérateur via SMS
Pour activer la protection contre la fraude à la facturation par l'opérateur via SMS, procédez comme suit:
Si vous ne l'avez pas déjà fait, activez l'API reCAPTCHA Enterprise dans votre projet.
Activez la protection contre la fraude à la facturation par l'opérateur via SMS avec reCAPTCHA. Pour obtenir des instructions, consultez la section Avant de commencer de la page "Détection et prévention des fraudes par SMS" de la documentation reCAPTCHA.
Pour activer la protection contre la fraude à la facturation par l'opérateur via SMS pour un projet, utilisez le SDK Admin pour appeler
updateConfig
comme suit:// Update the reCAPTCHA config to enable toll fraud protection const updateProjectConfigRequest = { recaptchaConfig: { phoneEnforcementState: 'ENFORCE_MODE', useSmsTollFraudProtection: 'true', tollFraudManagedRules: [{ startScore: START_SCORE, action: 'BLOCK' }], } } 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 la fraude à la facturation par l'opérateur via SMS, ce paramètre doit être défini surAUDIT
ouENFORCE
, etuseSmsTollFraudProtection
doit être défini surtrue
.Lorsque vous activez la protection contre la fraude à la facturation par l'opérateur via SMS pour la première fois, nous vous recommandons de définir l'état d'application 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 d'application de l'authentification par téléphone reCAPTCHA.START_SCORE
: score d'évaluation de la fraude par péage le plus élevé qu'une requête peut avoir avant d'échouer. Vous pouvez définir ce score entre0.0
et1.0
. Tout score supérieur au seuil que vous définissez sera considéré comme une fraude par SMS. Par exemple, si vous définissez un seuil de0.3
, reCAPTCHA échouera à toute requête avec un0.4
ou plus. Par conséquent, plus le score est bas, plus les règles sont strictes.
Si vous utilisez Identity Platform sur le Web ou Android, enregistrez votre application depuis la console Firebase:
Pour Android, enregistrez chaque nom de package Android qui utilise Identity Platform.
Pour le Web, ajoutez 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 en mode audit, nous vous recommandons de surveiller les métriques reCAPTCHA pour la protection contre la fraude par SMS 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 la fraude à la facturation par l'opérateur via SMS
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 que votre projet émet pour vous assurer que vos flux d'authentification par SMS 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.
Assurez-vous que la fonctionnalité de protection contre la fraude par SMS fonctionne en examinant les métriques suivantes que votre projet envoie à Cloud Monitoring:
identitytoolkit.googleapis.com/recaptcha/verdict_count
identitytoolkit.googleapis.com/recaptcha/token_count
identitytoolkit.googleapis.com/recaptcha/sms_tf_risk_scores
Pour en savoir plus, consultez Surveiller les métriques reCAPTCHA.
Appliquer la protection contre la fraude à la facturation par l'opérateur via SMS
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.
Pour activer l'application de reCAPTCHA pour les flux d'authentification par SMS sur un projet ou un locataire, exécutez la commande suivante à l'aide du SDK administrateur:
const enforceRequest = {
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE',
useSmsTollFraudProtection: 'true'
}
};
Désactiver la protection contre la fraude à la facturation par l'opérateur via SMS
Pour désactiver la protection contre la fraude par SMS, utilisez le SDK Admin pour exécuter la commande suivante:
const disableRequest = {
recaptchaConfig: {
phoneEnforcementState: 'OFF',
useSmsTollFraudProtection: 'false'
}
};
Pour désactiver la protection contre la fraude à la facturation par l'opérateur via SMS lorsque vous utilisez la protection contre les bots, consultez Désactiver la protection contre la fraude à la facturation par l'opérateur via SMS lorsque vous utilisez la protection contre les bots.
Utiliser la protection contre la fraude à la facturation par l'opérateur via SMS avec la protection contre les bots
Vous pouvez utiliser la protection contre la fraude à la facturation par l'opérateur via SMS simultanément avec la protection contre les bots. Pour les configurations qui utilisent les deux fonctionnalités de protection, tenez compte des points suivants:
- Lorsque vous avez défini l'état d'application de l'authentification par téléphone sur "audit", Identity Platform transmet une requête lorsqu'elle répond à au moins l'une des évaluations. Nous vous encourageons à surveiller les métriques reCAPTCHA pour vous assurer que la protection contre la fraude à la facturation par l'opérateur via SMS et la protection contre les robots sont configurées avec des paramètres de score raisonnables.
- Lorsque vous avez défini l'état d'application de l'authentification par téléphone sur "Enforcer", Identity Platform ne transmet une requête que lorsqu'elle répond aux deux évaluations. L'échec de la requête se termine sans recourir à une autre méthode de validation.
Pour activer les deux fonctionnalités, utilisez le SDK Admin pour exécuter la commande suivante:
const enableBothRequest = {
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE_MODE',
useSmsTollFraudProtection: true,
useSmsBotScore: true
}
};
Remplacez ENFORCE_MODE
par le mode que vous souhaitez définir pour l'application forcée de l'authentification par téléphone reCAPTCHA. Les valeurs valides sont OFF
, AUDIT
et ENFORCE
. Pour activer la protection contre la fraude à la facturation par l'opérateur via SMS, ce paramètre doit être défini sur AUDIT
ou ENFORCE
. Lorsque vous activez la protection contre la fraude par SMS 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 sur ENFORCE
. Pour en savoir plus sur le fonctionnement des modes, consultez la section Modes d'application de l'authentification par téléphone reCAPTCHA.
Désactiver la protection contre la fraude à la facturation par l'opérateur via SMS lorsque vous utilisez la protection contre les bots
Si vous utilisez à la fois la protection contre la fraude à la facturation par l'opérateur via SMS et la protection contre les bots, et que vous souhaitez désactiver la protection contre la fraude à la facturation par l'opérateur via SMS sans désactiver la protection contre les bots, utilisez le SDK Admin pour exécuter la commande suivante:
const disableRequest = {
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE_MODE',
useSmsTollFraudProtection: 'false',
useSmsBotScore: 'true'
}
};
Remplacez ENFORCE_MODE
par le mode que vous avez précédemment défini pour l'application de l'authentification par téléphone reCAPTCHA. Cette valeur doit être AUDIT
ou ENFORCE
. Pour en savoir plus sur le fonctionnement des modes, consultez la section Modes d'application de l'authentification par téléphone reCAPTCHA.
Étape suivante
- En savoir plus sur la fonctionnalité de protection contre la fraude à la facturation par l'opérateur via SMS reCAPTCHA