Integra Identity Platform con la API de reCAPTCHA Enterprise
En este documento, se muestra cómo usar la integración de Identity Platform con la API de reCAPTCHA Enterprise para mejorar la seguridad de tus usuarios. Esta función hace que tu app sea más resistente al spam, el abuso y otras actividades fraudulentas.
La integración crea una evaluación de reCAPTCHA Enterprise en tu nombre para validar las solicitudes de los usuarios. Para obtener información sobre los precios, consulta los precios de reCAPTCHA.
Descripción general
Cuando configuras la integración de Identity Platform con la API de reCAPTCHA Enterprise, habilitas la función de protección predeterminada de reCAPTCHA: la protección contra bots de reCAPTCHA. Con la protección contra bots, Identity Platform aprovisiona claves de reCAPTCHA basadas en la puntuación en tu proyecto en tu nombre. Cuando un usuario accede a tu app o sitio con cualquiera de las siguientes operaciones, el SDK de cliente carga reCAPTCHA cuando se habilita el proveedor correspondiente.
Proveedor | Operación | Método |
---|---|---|
passwordProvider |
Acceso con correo electrónico y contraseña | signInWithPassword |
Registro con correo electrónico y contraseña | signUpPassword |
|
Acceso con vínculo de correo electrónico | getOobCode |
|
Restablecimiento de contraseña | getOobCode |
|
phoneProvider |
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 Identity Platform puntuaciones que evalúan el riesgo de la solicitud según tu configuración y tolerancia al riesgo.
Para obtener más información, consulta la Descripción general de reCAPTCHA.
Antes de comenzar
Según el tipo de flujo de autenticación que deseas proteger con reCAPTCHA, asegúrate de haber configurado lo siguiente:
- Para los flujos de autenticación con correo electrónico y contraseña, asegúrate de haber configurado el acceso de los usuarios con correo electrónico.
Para los flujos de autenticación basados en SMS, asegúrate de haber completado la incorporación a al menos uno de los siguientes servicios:
- Acceso telefónico para usuarios.
- Autenticación de varios factores para tu app para Web, Android o iOS
Crea una cuenta de servicio
La integración de Identity Platform con la API de reCAPTCHA Enterprise requiere una cuenta de servicio de Identity Platform para cada proyecto que usará reCAPTCHA. Esto permite que Identity Platform administre las claves de reCAPTCHA en tu nombre. Si ya creaste una cuenta de servicio, otórgale acceso a reCAPTCHA.
Si aún no creaste una cuenta de servicio o tienes proyectos adicionales que deseas proteger con reCAPTCHA, haz lo siguiente:
Usa Google Cloud CLI para crear una cuenta de servicio:
gcloud beta services identity create \ --service=identitytoolkit.googleapis.com \ --project=PROJECT_ID
Reemplaza
PROJECT_ID
por el ID del proyecto.Otorga acceso a la cuenta de servicio a reCAPTCHA:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-identitytoolkit.iam.gserviceaccount.com \ --role=roles/identitytoolkit.serviceAgent
Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyectoPROJECT_NUMBER
: Es el número de cuenta del proyecto.
Modos de protección de reCAPTCHA contra bots
La protección contra bots de reCAPTCHA tiene dos modos que te ayudan a proteger a los usuarios: auditoría y aplicación. Estos modos difieren en su comportamiento según el proveedor de identidad.
Proveedor de correo electrónico y contraseña
Los modos de auditoría y aplicación se comportan de la siguiente manera para los flujos de autenticación con correo electrónico y contraseña.
Modo de auditoría
Cuando configuras la aplicación de contraseñas por correo electrónico en modo de auditoría, Identity Platform crea una o más claves de reCAPTCHA en tu proyecto que se usan para evaluar el tráfico a las APIs de Identity Platform sin bloquear ninguna solicitud. Usa las métricas que se emiten durante el modo de auditoría para determinar si debes habilitar la aplicación de reCAPTCHA.
Modo de aplicación
Cuando configuras la aplicación de la contraseña por correo electrónico en modo de aplicación, Identity Platform crea una o más claves de reCAPTCHA en tu proyecto que se usan para evaluar el tráfico a las APIs de Identity Platform. Se rechazan las solicitudes a la API que no incluyen un token de reCAPTCHA. Habilita la aplicación forzosa solo después de migrar todos tus clientes a un SDK que admita reCAPTCHA.
Proveedor de telefonía
Los modos de auditoría y aplicación se comportan de la siguiente manera para los flujos de autenticación telefónica.
Modo de auditoría
Cuando configuras la aplicación forzosa de la autenticación telefónica en modo de auditoría, Identity Platform usa la protección contra bots de reCAPTCHA para la verificación de la app. 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 solicitud de un usuario no pasa la evaluación de fraude de cargos telefónicos y usas el SDK de cliente, Identity Platform activa métodos de verificación alternativos para completar el flujo de autenticación telefónica. Los métodos de resguardo aceptados dependen de la plataforma de tu app.
El SDK de cliente activa los métodos de verificación alternativos en las siguientes situaciones:
- Falta el token de reCAPTCHA.
- El token de reCAPTCHA no es válido o venció.
- El token de reCAPTCHA no supera el umbral de puntuación.
- reCAPTCHA no está configurado correctamente.
Asegúrate de que los métodos de verificación alternativos para la plataforma de tu app estén configurados y listos para que el SDK de cliente los active si es necesario.
Web
Si falla la evaluación inicial de protección contra bots, el modo de auditoría se basa en reCAPTCHA v2 para la verificación. Por lo tanto, debes configurar el verificador de reCAPTCHA (RecaptchaVerifier
) y pasarlo a las siguientes operaciones de autenticación por teléfono:
verifyPhoneNumber
signInWithPhoneNumber
linkWithPhoneNumber
reauthenticateWithPhoneNumber
auth/argument-error
. Para obtener más
información sobre cómo configurar el verificador de reCAPTCHA, consulta Configura
el verificador de reCAPTCHA en la documentación de Firebase.
Android
Si falla la evaluación inicial de protección contra bots, el modo de auditoría verifica tu app con la API de Play Integrity. Si falla esta verificación, se activa reCAPTCHA v2. reCAPTCHA v2 se puede activar en las siguientes situaciones:
- Si el dispositivo del usuario final no tiene instalados los Servicios de Google Play.
- Si la app no se distribuye a través de Google Play Store (en el SDK de Authentication v21.2.0 y versiones posteriores).
- Si el token de SafetyNet obtenido no es válido (en versiones del SDK de Authentication anteriores a la v21.2.0).
iOS
Si falla la evaluación inicial de protección contra bots, el modo de auditoría se basa en notificaciones push silenciosas para la verificación. Este método de verificación implica enviar un token a tu app en el dispositivo solicitante con una notificación push silenciosa. Si tu app recibe correctamente la notificación, continúa el flujo de autenticación por teléfono. Si tu app no recibe la notificación push, se activará reCAPTCHA v2. Es posible que se active reCAPTCHA v2 si las notificaciones push silenciosas no están configuradas correctamente.
Para obtener más información sobre cómo configurar la verificación de apps para iOS, consulta Habilita la verificación de apps en la documentación de Firebase.
Modo de aplicación
Cuando configuras la aplicación forzosa de la autenticación telefónica en el modo de aplicación forzosa, Identity Platform usa la protección contra bots de reCAPTCHA para la verificación de la app. 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 solicitud de un usuario no pasa la evaluación de fraude de cargos telefónicos, Identity Platform la bloquea y no envía un mensaje SMS con un código de verificación.
No se requiere ninguna verificación alternativa en el modo de aplicación, por lo que no es necesario que configures ningún método de verificación adicional para tu app. Sin embargo, te recomendamos que configures el verificador de reCAPTCHA para las apps web y te asegures de que reCAPTCHA v2 esté habilitado si decides cambiar el modo de reCAPTCHA de tu app a AUDIT
o OFF
.
Configura la integración de Identity Platform con la API de reCAPTCHA Enterprise
Para configurar la integración de Identity Platform con la API de reCAPTCHA Enterprise, realiza las siguientes tareas:
- Usa el SDK de Admin para establecer el estado de aplicación de reCAPTCHA y habilitar la protección contra bots.
- Configura el SDK cliente para la plataforma de tu app.
Te recomendamos que primero habilites la aplicación de reCAPTCHA en el modo de auditoría y supervises las métricas de reCAPTCHA que emite tu proyecto para asegurarte de que los flujos de autenticación estén protegidos de forma adecuada.
Esto se hace para que no interrumpas el tráfico de usuarios mientras auditas su uso de reCAPTCHA. Después de verificar que tus flujos de autenticación estén protegidos, configura la protección contra bots en ENFORCE
.
Habilita la protección de reCAPTCHA contra bots
Proveedor de correo electrónico y contraseña
Para habilitar la protección de reCAPTCHA contra bots en los flujos de autenticación con correo electrónico y contraseña, haz lo siguiente:
Si aún no lo hiciste, habilita la API de reCAPTCHA Enterprise en tu proyecto.
Para habilitar la protección contra bots en un proyecto, usa el SDK de Admin. La compatibilidad con reCAPTCHA está disponible en las versiones 11.7.0 y posteriores del SDK de Admin de Node.js.
Por ejemplo:
// 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); }); }
Reemplaza lo siguiente:
ENFORCE_MODE
: Es el modo que deseas establecer para la aplicación de la autenticación con contraseña y correo electrónico de reCAPTCHA. Los valores válidos sonOFF
,AUDIT
yENFORCE
. Para habilitar la protección contra bots, este parámetro debe establecerse enAUDIT
oENFORCE
. Cuando habilites la protección contra bots por primera vez, te recomendamos que establezcas este parámetro enAUDIT
y te asegures de que tus flujos de autenticación estén protegidos antes de establecerlo enENFORCE
. Para obtener más información sobre el funcionamiento de los modos, consulta Modos de protección de bots de reCAPTCHA.END_SCORE
: Es la puntuación de evaluación de protección contra bots más baja que puede tener una solicitud antes de fallar. Puedes establecer esta puntuación entre0.0
y1.0
. Por ejemplo, si estableces un umbral de0.6
, reCAPTCHA rechazará cualquier solicitud con un valor de0.5
o inferior. Por lo tanto, cuanto más alto establezcas la puntuación, más estrictas serán las reglas.
También puedes habilitar la protección contra bots con el mismo método de configuración para un inquilino a través del SDK de Admin. Para obtener más información sobre cómo actualizar un inquilino, consulta Actualiza un inquilino.
Si usas Identity Platform en iOS o Android, debes registrar tu app desde Firebase console:
- En iOS, registra cada ID de paquete que use Identity Platform.
- En Android, registra cada nombre de paquete de Android que use Identity Platform
Si usas Identity Platform en la Web, debes agregar un dominio autorizado para cada dominio que use reCAPTCHA. Para agregar dominios autorizados, haz lo siguiente:
En la consola de Google Cloud , ve a la página de Identity Platform.
Ve a Configuración > Seguridad.
Haz clic en Add domain.
Ingresa el nombre de dominio y haz clic en Agregar para guardar el dominio.
El aprovisionamiento de la clave de reCAPTCHA puede tardar varios minutos en completarse.
Si configuraste la aplicación de la política en modo de auditoría, te recomendamos que supervises las métricas de reCAPTCHA para la protección contra bots y te asegures de que tus flujos estén protegidos.
Proveedor de telefonía
Para habilitar la protección contra bots de reCAPTCHA en los flujos de autenticación basados en SMS, haz lo siguiente:
Si aún no lo hiciste, habilita la API de reCAPTCHA Enterprise en tu proyecto.
Para habilitar la protección contra bots en un proyecto, usa el SDK de Admin. La compatibilidad con reCAPTCHA está disponible en las versiones 12.7.0 y posteriores del SDK de Admin de Node.js.
Por ejemplo:
// 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);
Reemplaza lo siguiente:
ENFORCE_MODE
: Es el modo que deseas establecer para la aplicación de la autenticación telefónica de reCAPTCHA. Los valores válidos sonOFF
,AUDIT
yENFORCE
. Para habilitar la protección contra bots en flujos basados en SMS, este parámetro debe establecerse enAUDIT
oENFORCE
, yuseSmsBotScore
debe establecerse entrue
.Cuando habilites la protección contra bots por primera vez, te recomendamos que establezcas este parámetro en
AUDIT
y te asegures de que tus flujos de autenticación estén protegidos antes de establecerlo enENFORCE
. Para obtener más información sobre el funcionamiento de los modos, consulta Modos de protección de bots de reCAPTCHA.END_SCORE
: Es la puntuación de evaluación de protección contra bots más baja que puede tener una solicitud antes de fallar. Puedes establecer esta puntuación entre0.0
y1.0
. Por ejemplo, si estableces un umbral de0.6
, reCAPTCHA rechazará cualquier solicitud con un valor de0.5
o inferior. Por lo tanto, cuanto más alto establezcas la puntuación, más estrictas serán las reglas.
También puedes habilitar la protección contra bots con el mismo método de configuración para un inquilino a través del SDK de Admin. Para obtener más información sobre cómo actualizar un arrendatario, consulta Actualiza un arrendatario.
Si usas Identity Platform en iOS o Android, debes registrar tu app desde Firebase console:
- En iOS, registra cada ID de paquete que use Identity Platform.
- En Android, registra cada nombre de paquete de Android que use Identity Platform
Si usas Identity Platform en la Web, debes agregar un dominio autorizado para cada dominio que use reCAPTCHA. Para agregar dominios autorizados, haz lo siguiente:
En la consola de Google Cloud , ve a la página de Identity Platform.
Ve a Configuración > Seguridad.
Haz clic en Add domain.
Ingresa el nombre de dominio y haz clic en Agregar para guardar el dominio.
El aprovisionamiento de la clave de reCAPTCHA puede tardar varios minutos en completarse.
Si configuraste la aplicación de la política en modo de auditoría, te recomendamos que supervises las métricas de reCAPTCHA para la protección contra bots y te asegures de que tus flujos estén protegidos.
Configura el SDK cliente
Configura el SDK de cliente según la plataforma de tu app.
Web
Actualiza a la versión más reciente del SDK web.
- La compatibilidad con reCAPTCHA para 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 con reCAPTCHA para 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, este recupera automáticamente tu configuración de reCAPTCHA y habilita la protección para los proveedores que configuraste.
Si es necesario, puedes forzar la recuperación del indicador de reCAPTCHA de la siguiente manera:
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
Actualiza a la versión más reciente del SDK de Android. La compatibilidad con reCAPTCHA para la autenticación por correo electrónico y contraseña, y la autenticación por teléfono en 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 superior, y Android 6 o superior.
Después de integrar el SDK de Android en tu app, el SDK recupera automáticamente tu configuración de reCAPTCHA y habilita la protección para los proveedores que configuraste.
Agrega la siguiente regla de compilación a la sección de dependencias de tu archivo
build.gradle
a 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.
Si es necesario, puedes forzar la recuperación del indicador de reCAPTCHA de la siguiente manera:
- 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
Actualiza a la versión 11.6.0 o posterior del SDK de iOS. Después de integrar el SDK para iOS en tu app, el SDK recupera automáticamente tu configuración de reCAPTCHA y habilita la protección para los proveedores que configuraste.
Para integrar el SDK de reCAPTCHA para iOS en tu app, consulta Cómo preparar tu entorno.
Asegúrate de que
-ObjC
aparezca en tus marcas de vinculadores. Navega a Objetivo > Configuración de compilación > Todas > Vinculación y verifica queOther Linker Flags
muestre-ObjC
.Si es necesario, puedes forzar la recuperación del indicador de reCAPTCHA de la siguiente manera:
- Swift:
// Initialize Firebase Authentication try await Auth.auth().initializeRecaptchaConfig()
- Objective-C:
// Initialize Firebase Authentication [[FIRAuth auth] initializeRecaptchaConfigWithCompletion:^(NSError * _Nullable error) { // Firebase Authentication initialization finished }];
Supervisa las métricas de reCAPTCHA para la protección contra bots
Antes de establecer la aplicación de reCAPTCHA en el modo de aplicación, te recomendamos que uses el modo de auditoría y supervises las métricas de reCAPTCHA que emite tu proyecto para garantizar que los flujos de autenticación 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 ajustar el umbral de puntuación para tu tráfico de usuarios. Si falla el aprovisionamiento de la clave de reCAPTCHA o no se crearon las cuentas de servicio requeridas, los intentos de autenticación de reCAPTCHA seguirán teniendo éxito normalmente.
Para asegurarte de que la autenticación de reCAPTCHA funcione, examina las siguientes métricas que tu proyecto emite a Cloud Monitoring:
identitytoolkit.googleapis.com/recaptcha/verdict_count
: Realiza un seguimiento de los diferentes veredictos que devuelve reCAPTCHA.identitytoolkit.googleapis.com/recaptcha/token_count
: Realiza un seguimiento de la cantidad y el estado de los tokens de reCAPTCHA que recibe el backend de Identity Platform.identitytoolkit.googleapis.com/recaptcha/risk_scores
: Realiza un seguimiento de la distribución de la puntuación de protección contra bots.
Para obtener más información, consulta Supervisa las métricas de reCAPTCHA.
Aplica la protección de reCAPTCHA contra bots
Después de verificar que tu app recibe tráfico de usuarios aceptable, puedes habilitar la aplicación de reCAPTCHA para proteger a tus usuarios. Asegúrate de no interrumpir a los usuarios existentes, incluidos los que puedan estar usando una versión anterior de tu app.
Proveedor de correo electrónico y contraseña
Para habilitar la aplicación de reCAPTCHA en los flujos de autenticación por correo electrónico y contraseña en un proyecto o inquilino, usa el SDK de Admin para ejecutar lo siguiente:
const enforceRequest = {
recaptchaConfig: {
emailPasswordEnforcementState: 'ENFORCE',
}]
}
};
Proveedor de telefonía
Para habilitar la aplicación de reCAPTCHA en los flujos de autenticación basados en SMS en un proyecto o inquilino, usa el SDK de Admin para ejecutar lo siguiente:
const enforceRequest = {
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE',
useSmsBotScore: 'true'
}]
}
};
Inhabilita la protección de reCAPTCHA contra bots
Proveedor de correo electrónico y contraseña
Para inhabilitar la protección contra bots en los flujos de autenticación con correo electrónico y contraseña, usa el SDK de Admin para ejecutar el siguiente comando:
const disableRequest = {
recaptchaConfig: {
emailPasswordEnforcementState: 'OFF',
}
};
Proveedor de telefonía
Para inhabilitar la protección contra bots en los flujos de autenticación basados en SMS, usa el SDK de Admin para ejecutar el siguiente comando:
const disableRequest = {
recaptchaConfig: {
phoneEnforcementState: 'OFF',
useSmsBotScore: 'false'
}
};
Cómo anular los veredictos de reCAPTCHA con Cloud Run Functions
Además de configurar umbrales de puntuación, puedes anular el veredicto de reCAPTCHA para un token determinado con una función de bloqueo personalizada de Cloud Run Functions. Esto es útil en los casos en que la puntuación de reCAPTCHA para el acceso de un usuario determinado puede ser baja, pero el usuario es de confianza o se verificó por otros medios y, por lo tanto, se le permite completar el acceso.
Para obtener más información sobre cómo configurar funciones de bloqueo con reCAPTCHA, consulta Extiende Firebase Authentication con Cloud Functions de bloqueo.
¿Qué sigue?
- Habilita reCAPTCHA SMS defense para los flujos de autenticación basados en SMS.
- Aprende a usar tu propia clave de reCAPTCHA.
- Obtén más información para supervisar las métricas de reCAPTCHA.
- Obtén más información sobre reCAPTCHA.