Habilita la función reCAPTCHA SMS defense para la autenticación basada en SMS
En este documento, se explica cómo puedes usar reCAPTCHA SMS defense para proteger tus flujos basados en SMS de Identity Platform, como la autenticación de varios factores y la autenticación telefónica, contra el fraude de cargos telefónicos por SMS (también conocido como ataques de SMS pumping). Esta integración ayuda a evitar que el tráfico de SMS no autorizado afecte de forma negativa a tus usuarios y recursos.
Descripción general
Si tu app depende de los SMS para la autenticación, te recomendamos que habilites
la integración de reCAPTCHA SMS defense. Después de habilitarla,
Firebase Authentication y Identity Platform invocan automáticamente la
función de defensa de SMS de reCAPTCHA cada vez que un usuario final solicita un mensaje de SMS
de verificación desde tu app o sitio
con las siguientes operaciones de phoneProvider:
| Operación | Método | |
|---|---|---|
| Registro o acceso con número de teléfono | sendVerificationCode |
|
| Inscripción del número de teléfono para la MFA | mfaSmsEnrollment |
|
| Acceso con número de teléfono para la MFA | mfaSmsSignIn |
Luego, reCAPTCHA proporciona a Firebase Authentication o Identity Platform una puntuación de riesgo que indica la probabilidad de fraude de cargos telefónicos por SMS para el número de teléfono del usuario. Luego, esta puntuación se compara con el umbral configurado. Si la solicitud de un usuario pasa la evaluación de fraude de cargos telefónicos, se envía un código de verificación por SMS. Si la puntuación de riesgo supera el umbral configurado, Identity Platform bloquea la solicitud y no envía un mensaje SMS con un código de verificación.
Cuando la función reCAPTCHA SMS defense está habilitada, no se requiere una verificación de resguardo y no tienes que configurar ningún método de verificación adicional para tu app. Sin embargo, te recomendamos configurar el verificador de reCAPTCHA para las apps web para asegurarte de que reCAPTCHA v2 esté disponible si decides inhabilitar la función reCAPTCHA SMS defense.
Para comprender cómo funcionan las puntuaciones de la defensa de SMS de reCAPTCHA, consulta Interpreta las puntuaciones.
Para obtener más información sobre la función de SMS defense de reCAPTCHA, consulta Detecta y evita el fraude de SMS.
Antes de comenzar
Antes de habilitar reCAPTCHA SMS defense para Identity Platform, completa las siguientes tareas:
Configura lo siguiente para tu app o sitio, según corresponda:
- Acceso con teléfono para los usuarios.
- Autenticación de varios factores para tu app web, Android o iOS.
Configura Firebase Authentication para tu app o sitio, según corresponda:
Habilita la función reCAPTCHA SMS defense
Configura la autenticación:
-
En la consola de Google Cloud , activa Cloud Shell.
Crea una identidad de servicio:
gcloud beta services identity create \ --service=identitytoolkit.googleapis.com \ --project=PROJECT_IDReemplaza
PROJECT_IDpor el ID del proyecto.Otorga el rol
roles/identitytoolkit.serviceAgenta la identidad de servicio que creaste.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-identitytoolkit.iam.gserviceaccount.com \ --role=roles/identitytoolkit.serviceAgentReemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto.PROJECT_NUMBER: Es el número de cuenta del proyecto.
-
Habilita la API de reCAPTCHA Enterprise en tu proyecto.
Habilita la función reCAPTCHA SMS defense para tu proyecto:
En la consola de Google Cloud , ve a la página de reCAPTCHA.
Verifica que el nombre de tu proyecto aparezca en el selector de recursos.
Si no ves el nombre de tu proyecto, haz clic en el selector de recursos y, luego, selecciona tu proyecto.
Haz clic en Configuración.
En el panel SMS defense, haz clic en Configurar.
Haz clic en el botón de activación Habilitar y, luego, en Guardar.
Cuando habilitas reCAPTCHA SMS defense, también se habilita la protección de cuentas, si aún no lo está.
La habilitación de la función reCAPTCHA SMS defense puede tardar unos minutos en propagarse a nuestros sistemas. Una vez que se propague, comenzarás a recibir respuestas relacionadas con la defensa de SMS de reCAPTCHA como parte de las evaluaciones.
Para configurar los parámetros de protección de SMS de reCAPTCHA para un proyecto de Firebase Authentication o Identity Platform, haz lo siguiente:
En la siguiente URL, reemplaza
PROJECT_IDySTART_SCORE:https://cloud.google.com/identity-platform/docs/reference/rest/v2/projects/updateConfig?apix_params={"name":"projects/PROJECT_ID/config","updateMask":"recaptchaConfig.phoneEnforcementState,recaptchaConfig.useSmsTollFraudProtection,recaptchaConfig.tollFraudManagedRules","resource":{"recaptchaConfig":{"phoneEnforcementState":"ENFORCE","useSmsTollFraudProtection":true,"tollFraudManagedRules":[{"action":"BLOCK","startScore":START_SCORE}]}}}PROJECT_ID: Es el identificador del proyecto con Identity Platform habilitado.START_SCORE: Es un umbral configurable que determina la puntuación más alta que puede tener una solicitud de SMS antes de que se marque y bloquee como fraude de cargos telefónicos.El umbral mínimo es
0.0. El umbral máximo es0.9. Cualquier solicitud con una puntuación superior al umbral se considera fraudulenta. Por ejemplo, si estableces el umbral en0.3, reCAPTCHA bloqueará cualquier solicitud con una puntuación de fraude de0.4o más.Para aumentar el nivel de protección contra fraudes, establece el umbral en un valor más bajo. Para reducir el nivel de protección contra fraudes, establece el umbral en un valor más alto. Este parámetro de configuración permitirá que se aprueben más solicitudes con puntuaciones más altas.
Para la implementación inicial, te recomendamos que comiences con un umbral más alto, como
0.8, y, luego, lo reduzcas de forma iterativa según tu tolerancia al riesgo específica.No recomendamos un umbral de
0.0ni de1.0. Si estableces el umbral en0.0, se bloquearán todos los mensajes SMS, mientras que1.0inhabilitará por completo la protección contra fraudes, lo que puede generar errores de entrega de SMS en regiones de alto riesgo.
Ingresa la URL en una nueva ventana del navegador en la que hayas accedido a la consola de Google Cloud .
Si usas Identity Platform en la Web o en Android, registra tu app desde Firebase console:
En Android, registra cada nombre de paquete de Android que use Identity Platform.
En la Web, agrega un dominio autorizado para cada dominio que use reCAPTCHA:
En la consola de Google Cloud , ve a la página Identity Platform.
Ve a Configuración > Seguridad.
Haz clic en Agregar dominio.
Ingresa el nombre de dominio y haz clic en Agregar para guardarlo.
El aprovisionamiento de la clave de reCAPTCHA puede tardar varios minutos en completarse.
Verifica la configuración:
Recupera los detalles de configuración de reCAPTCHA:
{replace-your-project}por tuprojectIdoprojectNumber. Ejecuta la API deGetConfigen el panel lateral para recuperar la configuración de reCAPTCHA.Verifica que la función reCAPTCHA SMS defense esté configurada correctamente:
Si la configuración de reCAPTCHA se establece de forma correcta, la respuesta debe tener los siguientes campos con los valores especificados:
recaptchaKeys: El campo no debe estar vacío y se debe configurar para al menos una de estas plataformas: iOS, Web o Android.useSmsTollFraudProtection: El valor de este campo debe establecerse entrue.phoneEnforcementState: El valor se debe establecer enENFORCE.tollFraudManagedRules: En este campo,startScoredebe configurarse con el umbral que elijas, que debe ser un valor entre0y0.9.
De lo contrario, vuelve a configurar reCAPTCHA SMS defense.
Respuesta de muestra:
{ "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 } } ```
Asegúrate de que las versiones del SDK sean correctas.
Web
Actualiza a la versión más reciente del SDK web.
- La compatibilidad de reCAPTCHA con la autenticación por correo electrónico y contraseña en apps web está disponible en las versiones 9.20.0 y posteriores del SDK de JavaScript.
- La compatibilidad de reCAPTCHA con la autenticación por teléfono en apps web está disponible en las versiones 11 y posteriores del SDK de JavaScript.
Después de integrar el SDK web en tu app, el SDK recupera automáticamente tu configuración de reCAPTCHA y habilita la protección para los proveedores que configuraste.
Android
Actualiza a la versión más reciente del SDK de Android. La compatibilidad de reCAPTCHA con la autenticación por correo electrónico y contraseña, y la autenticación por teléfono en las apps para Android está disponible en la versión 23.1.0 y posteriores del SDK de Android.
Además, la compatibilidad con reCAPTCHA requiere el nivel de API 23 (Marshmallow) o una versión posterior, y Android 6 o una versión posterior.
Después de integrar el SDK de Android en tu app, el SDK recupera automáticamente tu configuración de reCAPTCHA y aplica los umbrales que estableciste para los proveedores que configuraste.
Agrega la siguiente regla de compilación a la sección de dependencias del archivo
build.gradlea nivel de la app:implementation 'com.google.android.recaptcha:recaptcha:18.5.1'Asegúrate de usar la versión 18.5.1 o posterior del SDK de reCAPTCHA.
iOS
- Actualiza a la versión 11.6.0 o posterior del SDK para iOS.
Después de integrar el SDK de iOS en tu app, el SDK recupera automáticamente tu configuración de reCAPTCHA y aplica los umbrales que estableciste para los proveedores que configuraste.
Para integrar el SDK de reCAPTCHA para iOS en tu app, consulta Prepara tu entorno de iOS.
Para verificar que
-ObjCaparezca en tus marcas de vinculador, navega a Target > Build Settings > All > Linking y verifica queOther Linker Flagsmuestre-ObjC.
Supervisa las métricas de reCAPTCHA para reCAPTCHA SMS defense
Supervisa las métricas de reCAPTCHA que emite tu proyecto para verificar que tus flujos de autenticación basados en SMS estén protegidos. Por ejemplo, estas métricas pueden ayudarte a determinar si configuraste correctamente la integración de Identity Platform con la API de reCAPTCHA Enterprise. También pueden ayudarte a definir mejor el umbral de puntuación para el tráfico de tus usuarios.
Para verificar que la función reCAPTCHA SMS defense esté funcionando, revisa las siguientes métricas que tu proyecto emite a Cloud Monitoring:
identitytoolkit.googleapis.com/recaptcha/verdict_countidentitytoolkit.googleapis.com/recaptcha/token_countidentitytoolkit.googleapis.com/recaptcha/sms_tf_risk_scores
Para obtener más información, consulta Supervisa las métricas de reCAPTCHA.
Usa reCAPTCHA SMS defense con protección contra bots
Puedes usar reCAPTCHA SMS defense de forma simultánea con
la protección contra bots. Cuando ambas están habilitadas y phoneEnforcementState
se establece en ENFORCE, Identity Platform solo pasa una solicitud cuando cumple con
ambas evaluaciones, y la solicitud falla y se cierra sin recurrir a otro
método de verificación.
Para habilitar ambas funciones, usa el Explorador de APIs de Google para actualizar la configuración del proyecto:
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE',
useSmsTollFraudProtection: true,
useSmsBotScore: true
}
Inhabilita reCAPTCHA SMS defense mientras usas la protección contra bots
Si usas la defensa de SMS de reCAPTCHA y la protección contra bots, y quieres inhabilitar la defensa de SMS de reCAPTCHA sin inhabilitar la protección contra bots, usa el Explorador de APIs de Google para actualizar la configuración del proyecto:
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE',
useSmsTollFraudProtection: false,
useSmsBotScore: true
}
Establece phoneEnforcementState en ENFORCE y useSmsBotScore en true para mantener
habilitada la protección contra bots en los flujos de autenticación por teléfono.
Inhabilitar reCAPTCHA SMS defense
Para inhabilitar toda la protección de reCAPTCHA para teléfonos, incluida la defensa de SMS de reCAPTCHA, usa el Explorador de APIs de Google para actualizar la configuración del proyecto. Para ello, ingresa la siguiente URL HTTP en una nueva ventana del navegador en la que hayas accedido a la consola de Google Cloud :
https://cloud.google.com/identity-platform/docs/reference/rest/v2/projects/updateConfig?apix_params={"name":"projects/PROJECT_ID/config","updateMask":"recaptchaConfig.phoneEnforcementState,recaptchaConfig.useSmsTollFraudProtection,recaptchaConfig.useSmsBotScore","resource":{"recaptchaConfig":{"phoneEnforcementState":"OFF","useSmsTollFraudProtection":false,"useSmsBotScore":false}}}
Reemplaza PROJECT_ID por el ID del proyecto.
Para inhabilitar la defensa de SMS de reCAPTCHA mientras usas la protección contra bots, consulta Inhabilita la defensa de SMS de reCAPTCHA mientras usas la protección contra bots.
¿Qué sigue?
- Obtén más información sobre la función de defensa de SMS de reCAPTCHA.