Activer reCAPTCHA SMS defense pour l'authentification par SMS
Ce document explique comment utiliser reCAPTCHA SMS defense pour protéger vos flux Identity Platform par SMS, comme l'authentification par téléphone et multifacteur, contre la fraude à la facturation par l'opérateur via SMS (également appelée "attaques par inflation artificielle du trafic"). Cette intégration permet d'empêcher le trafic SMS non autorisé d'avoir un impact négatif sur vos utilisateurs et vos ressources.
Présentation
Si votre application s'appuie sur les SMS pour l'authentification, nous vous recommandons d'activer l'intégration de reCAPTCHA SMS defense. Une fois cette fonctionnalité activée, Firebase Authentication et Identity Platform invoquent automatiquement la fonctionnalité de protection reCAPTCHA par SMS chaque fois qu'un utilisateur final demande un message SMS de validation depuis votre application ou votre site à l'aide des opérations phoneProvider
suivantes :
Opération | Méthode | |
---|---|---|
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 avec un numéro de téléphone pour l'authentification MFA | mfaSmsSignIn |
reCAPTCHA fournit ensuite à Firebase Authentication ou Identity Platform un score de risque qui indique la probabilité de fraude à la facturation par l'opérateur via SMS pour le numéro de téléphone de l'utilisateur. Ce score est ensuite comparé au seuil que vous avez configuré. Si le score de risque dépasse ce seuil, le message SMS n'est pas envoyé, ce qui bloque efficacement les tentatives de fraude.
Pour comprendre comment fonctionnent les scores de protection reCAPTCHA SMS, consultez Interpréter les scores.
Pour en savoir plus sur la fonctionnalité de protection reCAPTCHA par SMS, consultez Détecter et prévenir la fraude par SMS.
Modes d'application de l'authentification par téléphone reCAPTCHA
Vous pouvez configurer l'application de l'authentification par téléphone pour reCAPTCHA SMS Defense en mode audit ou application forcée.
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 par SMS 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 fraude aux péages é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 fraude par numéros surtaxés é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 fraude par numéros surtaxés é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 par SMS pour la validation de l'application. 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.
Avant de commencer
Avant d'activer reCAPTCHA SMS defense 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.
Configurez Firebase Authentication pour votre application ou votre site, selon le cas :
Activer reCAPTCHA SMS defense
Configurez l'authentification :
-
In the Google Cloud console, activate Cloud Shell.
Créez une identité de service :
gcloud beta services identity create \ --service=identitytoolkit.googleapis.com \ --project=PROJECT_ID
Remplacez
PROJECT_ID
par l'ID du projet.Attribuez le rôle
roles/identitytoolkit.serviceAgent
à l'identité de service que vous avez créée.
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
-
Activez l'API reCAPTCHA Enterprise sur votre projet.
Activez reCAPTCHA SMS defense pour votre projet :
Dans la console Google Cloud , accédez à la page reCAPTCHA.
Vérifiez que le nom de votre projet s'affiche dans le sélecteur de ressources.
Si le nom de votre projet n'apparaît pas, cliquez sur le sélecteur de projet, puis sélectionnez votre projet.
Cliquez sur
Paramètres.Dans le volet Protection contre les SMS, cliquez sur Configurer.
Cliquez sur le bouton Activer, puis sur Enregistrer.
Lorsque vous activez reCAPTCHA SMS defense, Account Defender est également activé, si ce n'est pas déjà le cas.
L'activation de reCAPTCHA SMS defense peut prendre quelques minutes à se propager dans nos systèmes. Une fois la propagation effectuée, vous commencerez à recevoir des réponses liées à reCAPTCHA SMS defense dans les évaluations.
Pour configurer les paramètres de protection reCAPTCHA contre la fraude à la facturation par l'opérateur via SMS pour un projet Firebase Authentication ou Identity Platform, procédez comme suit :
Dans l'URL suivante, remplacez
PROJECT_ID
,Recaptcha_MODE
etSTART_SCORE
:https://cloud.google.com/identity-platform/docs/reference/rest/v2/projects/updateConfig?apix_params={"name":"projects/PROJECT_ID/config","updateMask":"recaptchaConfig","resource":{"recaptchaConfig":{"emailPasswordEnforcementState":"OFF","phoneEnforcementState":"Recaptcha_MODE","useSmsTollFraudProtection":true,"tollFraudManagedRules":[{"action":"BLOCK","startScore":START_SCORE}]}}}
PROJECT_ID
: identifiant du projet pour lequel Identity Platform est activé.Recaptcha_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 reCAPTCHA SMS defense, ce paramètre doit être défini surAUDIT
ouENFORCE
, etuseSmsTollFraudProtection
doit être défini surtrue
.Lorsque vous activez reCAPTCHA SMS defense pour la première fois, utilisez le mode
AUDIT
pour vous assurer que la configuration de reCAPTCHA SMS defense fonctionne correctement. Le modeAUDIT
est strictement réservé à la validation. Ce mode n'empêche pas le trafic SMS non autorisé. Vérifiez qu'aucune défaillance n'apparaît dans le tableau de bord Métriques. Après la validation, activez immédiatement le modeENFORCE
. Pour en savoir plus sur le fonctionnement des modes, consultez Modes d'application de l'authentification par téléphone reCAPTCHA.START_SCORE
: score d'évaluation de la fraude par numéros surtaxés le plus élevé qu'une requête peut avoir avant d'échouer. Vous pouvez définir ce score sur une valeur comprise entre0.1
et0.9
. Nous vous recommandons de commencer par un seuil plus élevé, par exemple0.8
, puis de réduire progressivement le score. Les scores supérieurs au seuil que vous avez défini sont traités comme des fraudes par SMS. Si vous définissez un score de 1,0, la protection contre la fraude est désactivée. Si vous définissez un score de 0,0, tous les messages SMS sont bloqués. Plus le score est bas, plus les règles sont strictes. Si vous définissez un seuil de0.3
, par exemple, reCAPTCHA échoue toute requête avec un score de0.4
ou plus.
Saisissez l'URL dans une nouvelle fenêtre de navigateur dans laquelle vous êtes connecté à la console Google Cloud .
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 :
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.
Vérifiez votre configuration :
Récupérez les informations de configuration reCAPTCHA :
{replace-your-project}
avec votreprojectId
ouprojectNumber
. Exécutez l'APIGetConfig
dans le panneau latéral pour récupérer la configuration reCAPTCHA.Vérifiez que reCAPTCHA SMS defense est correctement configuré :
Si la configuration reCAPTCHA est correctement configurée, la réponse doit comporter les champs suivants avec les valeurs spécifiées :
recaptchaKeys
: le champ ne doit pas être vide et doit être configuré pour au moins l'une des plates-formes suivantes : iOS, Web ou Android.useSmsTollFraudProtection
: la valeur de ce champ doit être définie surtrue
.phoneEnforcementState
: la valeur doit être définie surENFORCE
ouAUDIT
.tollFraudManagedRules
: dans ce champ,startScore
doit être configuré avec le seuil de votre choix, qui doit être une valeur comprise entre 0 et 0,9.
Sinon, configurez à nouveau reCAPTCHA SMS defense.
Exemple de réponse
{ "recaptchaConfig": { "recaptchaKeys": [ { "key": "projects/{your-project}/keys/{recaptcha-key}", "type": "WEB" }, { "type": "IOS" }, { "type": "ANDROID" } ], "phoneEnforcementState": "ENFORCE", "tollFraudManagedRules": [ { "startScore": 0.8, "action": "BLOCK" } ], "useSmsTollFraudProtection": true } } ```
Vérifiez que les versions du SDK sont correctes.
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 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.
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 applique les seuils que vous avez définis 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.
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 applique les seuils que vous avez définis pour les fournisseurs que vous avez configurés.
Pour intégrer le SDK iOS reCAPTCHA à votre application, consultez Préparer votre environnement iOS.
Pour vérifier que
-ObjC
est répertorié dans vos options de l'éditeur de liens, accédez à Cible > Paramètres de compilation > Tous > Liaison et vérifiez queOther Linker Flags
affiche-ObjC
.
Surveiller les métriques reCAPTCHA pour reCAPTCHA SMS defense
Surveillez les métriques reCAPTCHA émises par votre projet pour vérifier 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 Identity Platform avec l'API reCAPTCHA Enterprise. Ils peuvent également vous aider à affiner le seuil de score pour votre trafic utilisateur.
Vérifiez que la fonctionnalité reCAPTCHA SMS Defense fonctionne en consultant les métriques suivantes que votre projet émet dans 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 reCAPTCHA SMS defense
Après avoir vérifié que votre application reçoit un trafic utilisateur acceptable, activez le mode ENFORCE
de reCAPTCHA pour bloquer activement les requêtes frauduleuses et protéger ainsi les utilisateurs.
Pour activer le mode ENFORCE
pour les flux d'authentification par SMS sur un projet ou un locataire, utilisez Google APIs Explorer pour mettre à jour la configuration du projet en saisissant l'URL HTTP suivante dans une nouvelle fenêtre de navigateur dans laquelle vous êtes connecté à la console Google Cloud :
https://cloud.google.com/identity-platform/docs/reference/rest/v2/projects/updateConfig?apix_params={"name":"projects/PROJECT_ID/config","updateMask":"recaptchaConfig","resource":{"recaptchaConfig":{"phoneEnforcementState":"ENFORCE","useSmsTollFraudProtection":"true"}}}
Remplacez PROJECT_ID
par l'ID du projet.
Utiliser reCAPTCHA SMS defense avec la protection contre les robots
Vous pouvez utiliser reCAPTCHA SMS defense en même temps que la protection contre les robots. Pour les configurations qui utilisent les deux fonctionnalités de protection, tenez compte des points suivants :
- Lorsque vous définissez l'état d'application de l'authentification par téléphone sur
AUDIT
, Identity Platform transmet une requête si elle satisfait au moins l'une des évaluations. Nous vous recommandons de surveiller les métriques reCAPTCHA pour vérifier que la protection reCAPTCHA par SMS et la protection contre les robots sont configurées avec des paramètres de score raisonnables. - Lorsque vous définissez l'état d'application de l'authentification par téléphone sur
ENFORCE
, Identity Platform ne transmet une requête que si elle satisfait aux deux évaluations et que la requête échoue sans revenir à une autre méthode de validation.
Pour activer les deux fonctionnalités, utilisez Google APIs Explorer pour mettre à jour la configuration du projet :
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE_MODE',
useSmsTollFraudProtection: true,
useSmsBotScore: true
}
Remplacez ENFORCE_MODE
par le mode que vous souhaitez définir pour l'application de l'authentification par téléphone reCAPTCHA. Les valeurs valides sont OFF
, AUDIT
et ENFORCE
.
Lorsque vous activez la protection reCAPTCHA 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 Modes d'application de l'authentification par téléphone reCAPTCHA.
Désactiver reCAPTCHA SMS defense lorsque vous utilisez la protection contre les robots
Si vous utilisez à la fois reCAPTCHA SMS Defense et la protection contre les robots, et que vous souhaitez désactiver reCAPTCHA SMS Defense sans désactiver la protection contre les robots, utilisez l'Google APIs Explorer pour mettre à jour la configuration du projet :
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE_MODE',
useSmsTollFraudProtection: 'false',
useSmsBotScore: 'true'
}
Remplacez ENFORCE_MODE
par le mode que vous avez défini précédemment 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 Modes d'application de l'authentification par téléphone reCAPTCHA.
Désactiver reCAPTCHA SMS defense
Pour désactiver la protection reCAPTCHA par SMS, utilisez l'Google APIs Explorer pour mettre à jour la configuration du projet en saisissant l'URL HTTP suivante dans une nouvelle fenêtre de navigateur dans laquelle vous êtes connecté à la console Google Cloud :
https://cloud.google.com/identity-platform/docs/reference/rest/v2/projects/updateConfig?apix_params={"name":"projects/PROJECT_ID/config","updateMask":"recaptchaConfig","resource":{"recaptchaConfig":{"phoneEnforcementState":"OFF","useSmsTollFraudProtection":"false"}}}
Remplacez PROJECT_ID
par l'ID du projet.
Pour désactiver reCAPTCHA SMS defense lorsque vous utilisez la protection contre les robots, consultez Désactiver reCAPTCHA SMS defense lorsque vous utilisez la protection contre les robots.
Étapes suivantes
- En savoir plus sur la fonctionnalité de protection reCAPTCHA par SMS