Integrar Identity Platform con la API reCAPTCHA Enterprise
En este documento se explica 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 aplicación sea más resistente al spam, al abuso y a 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.
Informació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, que es la protección contra bots de reCAPTCHA. Con la protección frente a bots, Identity Platform proporciona claves de reCAPTCHA basadas en puntuación en tu proyecto en tu nombre. Cuando un usuario accede a su aplicación o sitio mediante cualquiera de las siguientes operaciones, el SDK de cliente carga reCAPTCHA cuando se habilita el proveedor correspondiente.
Proveedor | Operación | Método |
---|---|---|
passwordProvider |
Inicio de sesión con correo y contraseña | signInWithPassword |
Registro con correo y contraseña | signUpPassword |
|
Inicio de sesión con enlace enviado por correo electrónico | getOobCode |
|
Cambio de contraseña | getOobCode |
|
phoneProvider |
Registrarse o iniciar sesión con un número de teléfono | sendVerificationCode |
Registro del número de teléfono para la MFA | mfaSmsEnrollment |
|
Inicio de sesión con número de teléfono y MFA | mfaSmsSignIn |
A continuación, reCAPTCHA proporciona a Identity Platform puntuaciones que evalúan el riesgo de la solicitud en función de tu configuración y tolerancia al riesgo.
Para obtener más información, consulta el artículo sobre reCAPTCHA.
Antes de empezar
En función del tipo de flujo de autenticación que quieras proteger con reCAPTCHA, asegúrate de haber configurado lo siguiente:
- En el caso de los flujos de autenticación con correo y contraseña, asegúrate de haber configurado el inicio de sesión con correo para los usuarios.
En los flujos de autenticación basados en SMS, asegúrate de haber completado el proceso de incorporación de al menos uno de los siguientes elementos:
- Inicio de sesión con el teléfono para los usuarios.
- Autenticación multifactor para tu aplicación web, Android o iOS.
Crear 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 vaya a usar reCAPTCHA. Esto permite que Identity Platform gestione las claves de reCAPTCHA en tu nombre. Si ya has creado una cuenta de servicio, concédele acceso a reCAPTCHA.
Si aún no has creado una cuenta de servicio o tienes otros proyectos que quieres proteger con reCAPTCHA, haz lo siguiente:
Usa la CLI de Google Cloud para crear una cuenta de servicio:
gcloud beta services identity create \ --service=identitytoolkit.googleapis.com \ --project=PROJECT_ID
Sustituye
PROJECT_ID
por el ID del proyecto.Concede a la cuenta de servicio acceso 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
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyectoPROJECT_NUMBER
: el número de cuenta del proyecto
Modos de protección contra bots de reCAPTCHA
La protección frente a bots de reCAPTCHA tiene dos modos que te ayudan a proteger a los usuarios: auditoría y aplicación. El comportamiento de estos modos varía en función del proveedor de identidades.
Proveedor de correo y contraseña
Los modos de auditoría y de cumplimiento se comportan de la siguiente manera en los flujos de autenticación con correo y contraseña.
Modo de auditoría
Cuando configuras la aplicación de la contraseña de correo en el modo de auditoría, Identity Platform crea una o varias 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 obligatorio
Cuando configuras la aplicación de la autenticación con correo y contraseña en el modo de aplicación, Identity Platform crea una o varias claves de reCAPTCHA en tu proyecto que se usan para evaluar el tráfico a las APIs de Identity Platform. Las solicitudes a la API que no incluyan un token de reCAPTCHA se rechazarán. Habilita la medida solo cuando hayas migrado todos tus clientes a un SDK compatible con reCAPTCHA.
Proveedor de servicios telefónicos
Los modos de auditoría y de cumplimiento se comportan de la siguiente manera en los flujos de autenticación por teléfono.
Modo de auditoría
Cuando configuras la autenticación telefónica en modo de auditoría, Identity Platform usa la protección frente a bots de reCAPTCHA para verificar la aplicación. Si la solicitud de un usuario supera la evaluación de fraude de peaje, se envía un código de verificación por SMS. Si la solicitud de un usuario no supera la evaluación de fraude de peaje y estás usando 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 alternativos aceptados dependen de la plataforma de tu aplicación.
El SDK de cliente activa los métodos de verificación alternativos en los siguientes casos:
- Falta el token de reCAPTCHA.
- El token de reCAPTCHA no es válido o ha caducado.
- 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 de la plataforma de tu aplicación estén configurados y listos para que el SDK del cliente los active si es necesario.
Web
Si la evaluación inicial de protección contra bots falla, 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 telefónica:
verifyPhoneNumber
signInWithPhoneNumber
linkWithPhoneNumber
reauthenticateWithPhoneNumber
auth/argument-error
. Para obtener más información sobre cómo configurar el verificador de reCAPTCHA, consulta el artículo Configurar el verificador de reCAPTCHA en la documentación de Firebase.
Android
Si no se supera la evaluación inicial de protección contra bots, el modo de auditoría verifica tu aplicación con la API Play Integrity. Si esta verificación falla, se activa reCAPTCHA v2. reCAPTCHA v2 puede activarse en los siguientes casos:
- Si el dispositivo del usuario final no tiene instalados los servicios de Google Play.
- Si la aplicación no se distribuye a través de Google Play Store (en el SDK de autenticación v21.2.0 y versiones posteriores).
- Si el token de SafetyNet obtenido no era válido (en versiones del SDK de autenticación anteriores a la 21.2.0).
iOS
Si la evaluación inicial de protección de bots falla, el modo de auditoría se basa en notificaciones push silenciosas para la verificación. Este método de verificación consiste en enviar un token a tu aplicación en el dispositivo que realiza la solicitud mediante una notificación push silenciosa. Si tu aplicación recibe la notificación correctamente, se iniciará el flujo de autenticación del teléfono. Si tu aplicación no recibe la notificación push, se activará reCAPTCHA v2. reCAPTCHA v2 puede activarse si las notificaciones push silenciosas no están configuradas correctamente.
Para obtener más información sobre cómo configurar la verificación de aplicaciones iOS, consulta el artículo Habilitar la verificación de aplicaciones en la documentación de Firebase.
Modo obligatorio
Cuando configuras la autenticación por teléfono en modo obligatorio, Identity Platform usa la protección frente a bots de reCAPTCHA para verificar la aplicación. Si la solicitud de un usuario supera la evaluación de fraude de peaje, se envía un código de verificación por SMS. Si la solicitud de un usuario no supera la evaluación de fraude de peaje, Identity Platform la bloquea y no envía un mensaje SMS con un código de verificación.
En el modo obligatorio no se requiere ninguna verificación alternativa, por lo que no tienes que configurar ningún método de verificación adicional para tu aplicación. Sin embargo, te recomendamos que configures el verificador reCAPTCHA para las aplicaciones web y que te asegures de que reCAPTCHA v2 esté habilitado si decides cambiar el modo de reCAPTCHA de tu aplicación a AUDIT
o OFF
.
Configurar 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, debes hacer lo siguiente:
- Usa el SDK de administrador para definir el estado de aplicación de reCAPTCHA y habilitar la protección frente a bots.
- Configura el SDK de cliente para la plataforma de tu aplicación.
Te recomendamos que primero habilites la aplicación de reCAPTCHA en modo de auditoría y monitorices las métricas de reCAPTCHA que emite tu proyecto para asegurarte de que los flujos de autenticación estén protegidos correctamente.
De esta forma, no interrumpirás el tráfico de usuarios mientras auditas su uso de reCAPTCHA. Una vez que hayas verificado que tus flujos de autenticación están protegidos, activa la protección contra bots ENFORCE
.
Habilitar la protección frente a bots de reCAPTCHA
Proveedor de correo y contraseña
Para habilitar la protección contra bots de reCAPTCHA en los flujos de autenticación por correo y contraseña, haz lo siguiente:
Si aún no lo has hecho, habilita la API de reCAPTCHA Enterprise en tu proyecto.
Para habilitar la protección contra bots en un proyecto, usa el SDK de administrador. reCAPTCHA está disponible en las versiones 11.7.0 y posteriores del SDK de administrador 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); }); }
Haz los cambios siguientes:
ENFORCE_MODE
: el modo que quieras definir para la aplicación de la autenticación con correo y contraseña de reCAPTCHA. Los valores válidos sonOFF
,AUDIT
yENFORCE
. Para habilitar la protección de bots, este parámetro debe tener el valorAUDIT
oENFORCE
. Cuando habilites la protección contra bots por primera vez, te recomendamos que definas este parámetro comoAUDIT
y que te asegures de que tus flujos de autenticación estén protegidos antes de definirlo comoENFORCE
. Para obtener más información sobre cómo funcionan los modos, consulta Modos de protección de bots de reCAPTCHA.END_SCORE
: la puntuación de evaluación de protección de bots más baja que puede tener una solicitud antes de que falle. Puedes definir una puntuación entre0.0
y1.0
. Por ejemplo, si defines un umbral de0.6
, reCAPTCHA rechazará cualquier solicitud con una puntuación de0.5
o inferior. Por lo tanto, cuanto más alta sea 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 mediante el SDK de administrador. Para obtener más información sobre cómo actualizar un arrendatario, consulta Actualizar un arrendatario.
Si usas Identity Platform en iOS o Android, debes registrar tu aplicación en la consola de Firebase:
- En iOS, registra cada ID de paquete que utilice Identity Platform.
- En Android, registra cada nombre de paquete de Android que use Identity Platform.
Si usas Identity Platform en la Web, debes añadir un dominio autorizado para cada dominio que use reCAPTCHA. Para añadir dominios autorizados, siga estos pasos:
En la Google Cloud consola, ve a la página Identity Platform.
Ve a Ajustes > Seguridad.
Haz clic en Añadir dominio.
Introduce el nombre del dominio y haz clic en Añadir para guardar el dominio.
El aprovisionamiento de claves de reCAPTCHA puede tardar varios minutos en completarse.
Si has configurado el modo de auditoría, te recomendamos que monitorices las métricas de reCAPTCHA para protegerte contra los bots y asegurarte de que tus flujos están protegidos.
Proveedor de servicios telefónicos
Para habilitar la protección frente a bots de reCAPTCHA en los flujos de autenticación basados en SMS, haz lo siguiente:
Si aún no lo has hecho, habilita la API de reCAPTCHA Enterprise en tu proyecto.
Para habilitar la protección contra bots en un proyecto, usa el SDK de administrador. reCAPTCHA está disponible en las versiones 12.7.0 y posteriores del SDK de administrador 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);
Haz los cambios siguientes:
ENFORCE_MODE
: el modo que quieras definir 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 los flujos basados en SMS, este parámetro debe tener el valorAUDIT
oENFORCE
, yuseSmsBotScore
debe tener el valortrue
.Cuando habilites la protección contra bots por primera vez, te recomendamos que definas este parámetro como
AUDIT
y que te asegures de que tus flujos de autenticación estén protegidos antes de definirlo comoENFORCE
. Para obtener más información sobre cómo funcionan los modos, consulta Modos de protección de bots de reCAPTCHA.END_SCORE
: la puntuación de evaluación de protección de bots más baja que puede tener una solicitud antes de que falle. Puedes definir una puntuación entre0.0
y1.0
. Por ejemplo, si defines un umbral de0.6
, reCAPTCHA rechazará cualquier solicitud con una puntuación de0.5
o inferior. Por lo tanto, cuanto más alta sea 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 mediante el SDK de administrador. Para obtener más información sobre cómo actualizar un arrendatario, consulta Actualizar un arrendatario.
Si usas Identity Platform en iOS o Android, debes registrar tu aplicación en la consola de Firebase:
- En iOS, registra cada ID de paquete que utilice Identity Platform.
- En Android, registra cada nombre de paquete de Android que use Identity Platform.
Si usas Identity Platform en la Web, debes añadir un dominio autorizado para cada dominio que use reCAPTCHA. Para añadir dominios autorizados, sigue estos pasos:
En la Google Cloud consola, ve a la página Identity Platform.
Ve a Ajustes > Seguridad.
Haz clic en Añadir dominio.
Introduce el nombre del dominio y haz clic en Añadir para guardar el dominio.
El aprovisionamiento de claves de reCAPTCHA puede tardar varios minutos en completarse.
Si has configurado el modo de auditoría, te recomendamos que monitorices las métricas de reCAPTCHA para protegerte contra los bots y asegurarte de que tus flujos están protegidos.
Configurar el SDK del cliente
Configura el SDK de cliente según la plataforma de tu aplicación.
Web
Actualiza a la versión más reciente del SDK web.
- reCAPTCHA admite la autenticación con correo electrónico y contraseña en aplicaciones web con las versiones 9.20.0 y posteriores del SDK de JavaScript.
- reCAPTCHA admite la autenticación por teléfono en aplicaciones web en las versiones 11 y posteriores del SDK de JavaScript.
Una vez que hayas integrado el SDK web con tu aplicación, el SDK obtendrá automáticamente tu configuración de reCAPTCHA y habilitará la protección de los proveedores que hayas configurado.
Si es necesario, puedes forzar la obtención de la señal 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 de reCAPTCHA con la autenticación por correo electrónico y contraseña, y la autenticación telefónica en aplicaciones Android está disponible en la versión 23.1.0 del SDK de Android y versiones posteriores.
Además, para usar reCAPTCHA, se necesita el nivel de API 23 (Marshmallow) o una versión posterior, así como Android 6 o una versión posterior.
Una vez que hayas integrado el SDK de Android en tu aplicación, el SDK obtendrá automáticamente tu configuración de reCAPTCHA y habilitará la protección de los proveedores que hayas configurado.
Añade la siguiente regla de compilación a la sección de dependencias de tu archivo
build.gradle
a nivel de aplicación:implementation 'com.google.android.recaptcha:recaptcha:18.5.1'
Asegúrate de usar la versión 18.5.1 o una posterior del SDK de reCAPTCHA.
Si es necesario, puedes forzar la obtención de la señal 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 una posterior del SDK de iOS. Una vez que hayas integrado el SDK de iOS con tu aplicación, el SDK obtendrá automáticamente tu configuración de reCAPTCHA y habilitará la protección de los proveedores que hayas configurado.
Para integrar el SDK de reCAPTCHA para iOS en tu aplicación, consulta el artículo sobre cómo preparar tu entorno.
Asegúrate de que
-ObjC
esté en tus marcas de enlazador. Ve a Target (Destino) > Build Settings (Configuración de compilación) > All (Todo) > Linking (Vinculación) y comprueba queOther Linker Flags
muestra-ObjC
.Si es necesario, puedes forzar la obtención de la señal 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 }];
Monitorizar las métricas de reCAPTCHA para protegerse contra los bots
Antes de configurar reCAPTCHA en el modo de aplicación, te recomendamos que uses el modo de auditoría y monitorices las métricas de reCAPTCHA que emite tu proyecto para asegurarte de que los flujos de autenticación están protegidos. Por ejemplo, estas métricas pueden ayudarte a determinar si has configurado correctamente la integración de Identity Platform con la API de reCAPTCHA Enterprise. También pueden ayudarte a ajustar el umbral de puntuación del tráfico de tus usuarios. Si no se puede aprovisionar la clave de reCAPTCHA o no se han creado las cuentas de servicio necesarias, los intentos de autenticación de reCAPTCHA se seguirán realizando con normalidad.
Comprueba que la autenticación reCAPTCHA funciona examinando las siguientes métricas que emite tu proyecto a Cloud Monitoring:
identitytoolkit.googleapis.com/recaptcha/verdict_count
: hace un seguimiento de los diferentes veredictos devueltos por reCAPTCHA.identitytoolkit.googleapis.com/recaptcha/token_count
: Registra el número y el estado de los tokens de reCAPTCHA recibidos por el backend de Identity Platform.identitytoolkit.googleapis.com/recaptcha/risk_scores
: hace un seguimiento de la distribución de la puntuación de protección del bot.
Para obtener más información, consulta Monitorizar métricas de reCAPTCHA.
Aplicar la protección contra bots de reCAPTCHA
Una vez que hayas verificado que tu aplicación 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 que ya tengas, incluidos los que usen una versión anterior de tu aplicación.
Proveedor de correo y contraseña
Para habilitar la aplicación de reCAPTCHA en los flujos de autenticación con correo y contraseña de un proyecto o un arrendatario, usa el SDK de administrador para ejecutar lo siguiente:
const enforceRequest = {
recaptchaConfig: {
emailPasswordEnforcementState: 'ENFORCE',
}]
}
};
Proveedor de servicios telefónicos
Para habilitar la aplicación de reCAPTCHA en los flujos de autenticación basados en SMS de un proyecto o un arrendatario, usa el SDK de administrador para ejecutar lo siguiente:
const enforceRequest = {
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE',
useSmsBotScore: 'true'
}]
}
};
Inhabilitar la protección contra bots de reCAPTCHA
Proveedor de correo y contraseña
Para inhabilitar la protección contra bots en los flujos de autenticación con correo y contraseña, usa el SDK de administrador para ejecutar el siguiente comando:
const disableRequest = {
recaptchaConfig: {
emailPasswordEnforcementState: 'OFF',
}
};
Proveedor de servicios telefónicos
Para inhabilitar la protección contra bots en los flujos de autenticación basados en SMS, usa el SDK de administrador para ejecutar el siguiente comando:
const disableRequest = {
recaptchaConfig: {
phoneEnforcementState: 'OFF',
useSmsBotScore: 'false'
}
};
Anular veredictos de reCAPTCHA con funciones de Cloud Run
Además de configurar umbrales de puntuación, puedes anular el veredicto de reCAPTCHA de un token determinado mediante una función de bloqueo de funciones de Cloud Run personalizada. Esto resulta útil en los casos en los que la puntuación de reCAPTCHA de un usuario determinado al iniciar sesión puede ser baja, pero el usuario es de confianza o se ha verificado por otros medios y, por lo tanto, se le permite completar el inicio de sesión.
Para obtener más información sobre cómo configurar funciones de bloqueo con reCAPTCHA, consulta Activadores de bloqueo de autenticación (1.ª gen.).
Siguientes pasos
- Habilita reCAPTCHA SMS defense para los flujos de autenticación basados en SMS.
- Consulta cómo usar tu propia clave de reCAPTCHA.
- Más información sobre la monitorización de las métricas de reCAPTCHA
- Consulta más información sobre reCAPTCHA.