Integrar o Identity Platform à API reCAPTCHA Enterprise
Neste documento, mostramos como usar a integração do Identity Platform com a API reCAPTCHA Enterprise para aumentar a segurança dos seus usuários. Esse recurso torna seu app mais resiliente contra spam, abuso e outras atividades fraudulentas.
A integração cria uma avaliação do reCAPTCHA Enterprise em seu nome para validar as solicitações do usuário. Para informações sobre preços, consulte preços do reCAPTCHA.
Visão geral
Ao configurar a integração do Identity Platform com a API reCAPTCHA Enterprise, você ativa o recurso de proteção padrão do reCAPTCHA, que é a proteção contra bots. Com a proteção contra bots, o Identity Platform provisiona chaves do reCAPTCHA baseadas em pontuação no seu projeto em seu nome. Quando um usuário acessa seu app ou site usando qualquer uma das operações a seguir, o SDK do cliente carrega o reCAPTCHA quando o provedor correspondente está ativado.
| Provedor | Operação | Método |
|---|---|---|
passwordProvider |
Login com e-mail e senha | signInWithPassword |
| Inscrição com e-mail e senha | signUpPassword |
|
| Login com link por e-mail | getOobCode |
|
| Redefinição de senha | getOobCode |
|
phoneProvider |
Inscrição ou login com número de telefone | sendVerificationCode |
| Registro do número de telefone para MFA | mfaSmsEnrollment |
|
| Login com número de telefone para MFA | mfaSmsSignIn |
Em seguida, o reCAPTCHA fornece ao Identity Platform pontuações que avaliam o risco da solicitação com base na sua configuração e tolerância a riscos.
Para mais informações, consulte Visão geral do reCAPTCHA.
Antes de começar
Com base no tipo de fluxo de autenticação que você quer proteger com o reCAPTCHA, verifique se você configurou o seguinte:
- Para fluxos de autenticação por e-mail e senha, verifique se você configurou o login por e-mail para usuários.
Para fluxos de autenticação baseados em SMS, verifique se você fez a integração com pelo menos uma das seguintes opções:
- Login com smartphone para usuários.
- Autenticação multifator para seu app da Web, Android ou iOS.
Criar uma conta de serviço
A integração do Identity Platform com a API reCAPTCHA Enterprise exige uma conta de serviço do Identity Platform para cada projeto que vai usar o reCAPTCHA. Isso permite que a Identity Platform gerencie chaves do reCAPTCHA em seu nome. Se você já tiver criado uma conta de serviço, conceda a ela acesso ao reCAPTCHA.
Se você ainda não criou uma conta de serviço ou tem outros projetos que quer proteger com o reCAPTCHA, faça o seguinte:
Use a Google Cloud CLI para criar uma conta de serviço:
gcloud beta services identity create \ --service=identitytoolkit.googleapis.com \ --project=PROJECT_IDSubstitua
PROJECT_IDpelo ID do projeto.Conceda à conta de serviço acesso ao reCAPTCHA:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-identitytoolkit.iam.gserviceaccount.com \ --role=roles/identitytoolkit.serviceAgentSubstitua:
PROJECT_ID: o ID do projeto;PROJECT_NUMBER: o número da conta do projeto
Modos de proteção contra bots do reCAPTCHA
A proteção contra bots do reCAPTCHA tem dois modos que ajudam você a proteger os usuários: auditoria e aplicação. Esses modos têm comportamentos diferentes com base no provedor de identidade.
Provedor de e-mail/senha
Os modos de auditoria e imposição se comportam da seguinte maneira para fluxos de autenticação de e-mail e senha.
Modo de auditoria
Quando você define a aplicação de senha de e-mail para o modo de auditoria, o Identity Platform cria uma ou mais chaves do reCAPTCHA no seu projeto, que são usadas para avaliar o tráfego para as APIs do Identity Platform sem bloquear nenhuma solicitação. Use as métricas emitidas durante o modo de auditoria para determinar se você deve ativar a aplicação do reCAPTCHA.
Modo de restrição
Quando você define a aplicação de senha por e-mail como "Modo de aplicação", o Identity Platform cria uma ou mais chaves do reCAPTCHA no seu projeto, que são usadas para avaliar o tráfego para as APIs do Identity Platform. As solicitações de API que não incluem um token do reCAPTCHA são rejeitadas. Só ative a aplicação depois de migrar todos os clientes para um SDK com suporte ao reCAPTCHA.
Provedor de serviços telefônicos
Os modos de auditoria e restrição funcionam da seguinte maneira para fluxos de autenticação por smartphone.
Modo de auditoria
Quando você define a restrição da autenticação por smartphone como modo de auditoria, o Identity Platform usa a proteção contra bots do reCAPTCHA para verificação de apps. Se a solicitação de um usuário for aprovada na avaliação de fraude de cobrança, um código de verificação por SMS será enviado. Se a solicitação de um usuário não passar na avaliação de fraude de cobrança e você estiver usando o SDK de cliente, o Identity Platform vai acionar métodos de verificação alternativos para concluir o fluxo de autenticação por telefone. Os métodos de substituição aceitos dependem da plataforma do app.
O SDK de cliente aciona os métodos de verificação alternativos nos seguintes cenários:
- O token do reCAPTCHA está faltando.
- O token do reCAPTCHA é inválido ou expirou.
- O token reCAPTCHA não atinge o limite de pontuação.
- O reCAPTCHA não está configurado corretamente.
Verifique se os métodos de verificação alternativos para a plataforma do app estão configurados e prontos para serem acionados pelo SDK do cliente, se necessário.
Web
Se a avaliação inicial de proteção contra bots falhar, o modo de auditoria vai usar o reCAPTCHA v2 para verificação. Portanto, é necessário configurar o
verificador reCAPTCHA (RecaptchaVerifier) e transmiti-lo para as
seguintes operações de autenticação por telefone:
verifyPhoneNumbersignInWithPhoneNumberlinkWithPhoneNumberreauthenticateWithPhoneNumber
auth/argument-error. Para mais
informações sobre a configuração do verificador reCAPTCHA, consulte Configurar
o verificador reCAPTCHA na documentação do Firebase.
Android
Se a avaliação inicial de proteção contra bots falhar, o modo de auditoria vai verificar seu app com a API Play Integrity. Se essa verificação falhar, o reCAPTCHA v2 será acionado. O reCAPTCHA v2 pode ser acionado nos seguintes cenários:
- Se o dispositivo do usuário final não tiver o Google Play Services instalado.
- Se o app não for distribuído pela Google Play Store (no SDK do Authentication v21.2.0 e versões mais recentes).
- Se o token SafetyNet recebido não for válido (em versões do SDK do Authentication anteriores à v21.2.0).
iOS
Se a avaliação inicial de proteção contra bots falhar, o modo de auditoria vai usar notificações push silenciosas para verificação. Esse método de verificação envolve o envio de um token ao seu app no dispositivo solicitante com uma notificação push silenciosa. Se o app receber a notificação, o fluxo de autenticação por telefone vai continuar. Se o app não receber a notificação push, o reCAPTCHA v2 será acionado. O reCAPTCHA v2 pode ser acionado se as notificações push silenciosas não estiverem configuradas corretamente.
Para mais informações sobre como configurar a verificação de apps iOS, consulte Ativar a verificação de apps na documentação do Firebase.
Modo de restrição
Quando você define a restrição da autenticação por telefone como "modo restrito", o Identity Platform usa a proteção contra bots do reCAPTCHA para a verificação de apps. Se a solicitação de um usuário for aprovada na avaliação de fraude de cobrança, um código de verificação por SMS será enviado. Se a solicitação de um usuário não passar na avaliação de fraude de cobrança, o Identity Platform vai bloquear a solicitação e não vai enviar uma mensagem SMS com um código de verificação.
Não é necessária uma verificação de substituição no modo de aplicação. Você não precisa configurar nenhum método de verificação adicional para seu app. No entanto, recomendamos configurar o verificador do reCAPTCHA para apps da Web e garantir que o reCAPTCHA v2 esteja ativado se você decidir mudar o modo do reCAPTCHA do app para AUDIT ou OFF.
Configurar a integração do Identity Platform com a API reCAPTCHA Enterprise
Para configurar a integração da Identity Platform com a API reCAPTCHA Enterprise, faça o seguinte:
- Use o SDK Admin para definir o estado de aplicação do reCAPTCHA e ativar a proteção contra bots.
- Configure o SDK do cliente para a plataforma do seu app.
Recomendamos que você primeiro ative a aplicação do reCAPTCHA no modo de auditoria e monitore as métricas do reCAPTCHA que seu projeto emite para garantir que os fluxos de autenticação estejam protegidos adequadamente.
Isso evita interrupções no tráfego de usuários enquanto você audita o uso do reCAPTCHA. Depois de verificar se os fluxos de autenticação estão
protegidos, defina a
proteção contra bots como ENFORCE.
Ativar a proteção contra bots do reCAPTCHA
Provedor de e-mail/senha
Para ativar a proteção contra bots do reCAPTCHA em fluxos de autenticação de senha de e-mail, faça o seguinte:
Se você ainda não tiver feito isso, ative a API reCAPTCHA Enterprise no seu projeto.
Para ativar a proteção contra bots em um projeto, use o SDK Admin. O suporte ao reCAPTCHA está disponível nas versões 11.7.0 e mais recentes do SDK Admin para Node.js.
Exemplo:
// 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); }); }Substitua:
ENFORCE_MODE: o modo que você quer definir para a aplicação da autenticação por e-mail e senha do reCAPTCHA. Os valores válidos sãoOFF,AUDITeENFORCE. Para ativar a proteção contra bots, esse parâmetro precisa ser definido comoAUDITouENFORCE. Quando você ativa a proteção contra bots pela primeira vez, recomendamos definir esse parâmetro comoAUDITe garantir que seus fluxos de autenticação estejam protegidos antes de definir comoENFORCE. Para mais informações sobre como os modos funcionam, consulte Modos de proteção contra bots do reCAPTCHA.END_SCORE: a menor pontuação de avaliação de proteção contra bots que uma solicitação pode ter antes de falhar. Você pode definir essa pontuação entre0.0e1.0. Por exemplo, se você definir um limite de0.6, o reCAPTCHA vai falhar em qualquer solicitação com um0.5ou menos. Portanto, quanto maior a pontuação, mais rígidas serão as regras.
Você também pode ativar a proteção contra bots com o mesmo método de configuração para um locatário usando o SDK Admin. Para mais informações sobre como atualizar um locatário, consulte Atualizar um locatário.
Se você usa o Identity Platform no iOS ou Android, registre o app no console do Firebase:
- Para iOS, registre cada ID do pacote que usa o Identity Platform.
- Para Android, registre cada nome de pacote Android que usa o Identity Platform.
Se você estiver usando o Identity Platform na Web, adicione um domínio autorizado para cada domínio que usa o reCAPTCHA. Para adicionar domínios autorizados, faça o seguinte:
No Google Cloud console, acesse a página do Identity Platform.
Acesse Configurações > Segurança.
Clique em Adicionar domínio.
Digite o nome do domínio e clique em Adicionar para salvar.
O provisionamento da chave do reCAPTCHA pode levar vários minutos para ser concluído.
Se você definiu a aplicação para o modo de auditoria, recomendamos monitorar as métricas do reCAPTCHA para proteção contra bots e garantir que seus fluxos estejam protegidos.
Provedor de serviços telefônicos
Para ativar a proteção contra bots do reCAPTCHA em fluxos de autenticação baseados em SMS, faça o seguinte:
Se você ainda não tiver feito isso, ative a API reCAPTCHA Enterprise no seu projeto.
Para ativar a proteção contra bots em um projeto, use o SDK Admin. O suporte ao reCAPTCHA está disponível nas versões 12.7.0 e mais recentes do SDK Admin para Node.js.
Exemplo:
// 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);Substitua:
ENFORCE_MODE: o modo que você quer definir para a aplicação da autenticação por telefone do reCAPTCHA. Os valores válidos sãoOFF,AUDITeENFORCE. Para ativar a proteção contra bots em fluxos baseados em SMS, esse parâmetro precisa ser definido comoAUDITouENFORCE, euseSmsBotScoreprecisa ser definido comotrue.Ao ativar a proteção contra bots pela primeira vez, recomendamos definir esse parâmetro como
AUDITe garantir que seus fluxos de autenticação estejam protegidos antes de definir comoENFORCE. Para mais informações sobre como os modos funcionam, consulte Modos de proteção contra bots do reCAPTCHA.END_SCORE: a menor pontuação de avaliação de proteção contra bots que uma solicitação pode ter antes de falhar. Você pode definir essa pontuação entre0.0e1.0. Por exemplo, se você definir um limite de0.6, o reCAPTCHA vai falhar em qualquer solicitação com um0.5ou menos. Portanto, quanto maior a pontuação, mais rígidas serão as regras.
Você também pode ativar a proteção contra bots com o mesmo método de configuração para um locatário usando o SDK Admin. Para mais informações sobre como atualizar um locatário, consulte Atualizar um locatário.
Se você estiver usando o Identity Platform no iOS ou Android, registre o app no Console do Firebase:
- Para iOS, registre cada ID do pacote que usa o Identity Platform.
- Para Android, registre cada nome de pacote Android que usa o Identity Platform.
Se você estiver usando o Identity Platform na Web, adicione um domínio autorizado para cada domínio que usa o reCAPTCHA. Para adicionar domínios autorizados, faça o seguinte:
No Google Cloud console, acesse a página do Identity Platform.
Acesse Configurações > Segurança.
Clique em Adicionar domínio.
Digite o nome do domínio e clique em Adicionar para salvar.
O provisionamento da chave do reCAPTCHA pode levar vários minutos para ser concluído.
Se você definiu a aplicação para o modo de auditoria, recomendamos monitorar as métricas do reCAPTCHA para proteção contra bots e garantir que seus fluxos estejam protegidos.
Configurar o SDK do cliente
Configure o SDK do cliente de acordo com a plataforma do app.
Web
Atualize para a versão mais recente do SDK da Web.
- O suporte do reCAPTCHA para autenticação por e-mail e senha em apps da Web está disponível nas versões 9.20.0 e mais recentes do SDK para JavaScript.
- O suporte do reCAPTCHA para autenticação por telefone em apps da Web está disponível nas versões 11 e mais recentes do SDK para JavaScript.
Depois de integrar o SDK da Web ao seu app, ele busca automaticamente a configuração do reCAPTCHA e ativa a proteção para os provedores que você configurou.
Se necessário, force a busca do indicador do reCAPTCHA da seguinte maneira:
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
Atualize para a versão mais recente do SDK do Android. O suporte do reCAPTCHA para autenticação por e-mail e senha e autenticação por telefone em apps Android está disponível no SDK do Android versão 23.1.0 e mais recente.
Além disso, o suporte ao reCAPTCHA exige o nível 23 da API (Marshmallow) ou mais recente e o Android 6 ou mais recente.
Depois de integrar o SDK do Android ao seu app, ele busca automaticamente a configuração do reCAPTCHA e ativa a proteção para os provedores que você configurou.
Adicione a seguinte regra de build à seção de dependências do arquivo
build.gradleno nível do app:implementation 'com.google.android.recaptcha:recaptcha:18.5.1'Use a versão 18.5.1 ou mais recente do SDK do reCAPTCHA.
Se necessário, force a busca do indicador do reCAPTCHA da seguinte maneira:
- 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
Atualize para a versão 11.6.0 ou mais recente do SDK do iOS. Depois de integrar o SDK do iOS ao seu app, ele busca automaticamente a configuração do reCAPTCHA e ativa a proteção para os provedores que você configurou.
Para integrar o SDK do reCAPTCHA para iOS ao seu app, consulte Preparar seu ambiente.
Verifique se
-ObjCestá listado nos seus sinalizadores do vinculador. Navegue até Destino > Configurações de build > Todos > Vinculação e verifique seOther Linker Flagsmostra-ObjC.Se necessário, force a busca do indicador do reCAPTCHA da seguinte maneira:
- Swift:
// Initialize Firebase Authentication try await Auth.auth().initializeRecaptchaConfig()- Objective-C:
// Initialize Firebase Authentication [[FIRAuth auth] initializeRecaptchaConfigWithCompletion:^(NSError * _Nullable error) { // Firebase Authentication initialization finished }];
Monitorar métricas do reCAPTCHA para proteção contra bots
Antes de definir a aplicação do reCAPTCHA para o modo de aplicação, recomendamos usar o modo de auditoria e monitorar as métricas do reCAPTCHA que seu projeto emite para garantir que os fluxos de autenticação estejam protegidos. Por exemplo, essas métricas podem ajudar você a determinar se configurou corretamente a integração do Identity Platform com a API reCAPTCHA Enterprise. Eles também podem ajudar você a ajustar o limite de pontuação para o tráfego de usuários. Se o provisionamento da chave do reCAPTCHA falhar ou se as contas de serviço necessárias não forem criadas, as tentativas de autenticação do reCAPTCHA ainda serão bem-sucedidas normalmente.
Verifique se a autenticação do reCAPTCHA está funcionando examinando as seguintes métricas que seu projeto emite para o Cloud Monitoring:
identitytoolkit.googleapis.com/recaptcha/verdict_count: rastreia os diferentes veredictos retornados pelo reCAPTCHA.identitytoolkit.googleapis.com/recaptcha/token_count: rastreia o número e o status dos tokens reCAPTCHA recebidos pelo backend do Identity Platform.identitytoolkit.googleapis.com/recaptcha/risk_scores: rastreia a distribuição da pontuação de proteção contra bots.
Para mais informações, consulte Monitorar métricas do reCAPTCHA.
Aplicar a proteção contra bots do reCAPTCHA
Depois de verificar se o app está recebendo um tráfego de usuários aceitável, ative a aplicação do reCAPTCHA para proteger seus usuários. Não interrompa os usuários atuais, incluindo aqueles que podem estar usando uma versão mais antiga do app.
Provedor de e-mail/senha
Para ativar a aplicação do reCAPTCHA em fluxos de autenticação por e-mail e senha em um projeto ou locatário, use o SDK Admin para executar o seguinte:
const enforceRequest = {
recaptchaConfig: {
emailPasswordEnforcementState: 'ENFORCE',
}]
}
};
Provedor de serviços telefônicos
Para ativar a aplicação do reCAPTCHA em fluxos de autenticação por SMS em um projeto ou locatário, use o SDK Admin para executar o seguinte:
const enforceRequest = {
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE',
useSmsBotScore: 'true'
}]
}
};
Desativar a proteção contra bots do reCAPTCHA
Provedor de e-mail/senha
Para desativar a proteção contra bots nos fluxos de autenticação por e-mail e senha, use o SDK Admin para executar o seguinte comando:
const disableRequest = {
recaptchaConfig: {
emailPasswordEnforcementState: 'OFF',
}
};
Provedor de serviços telefônicos
Para desativar a proteção contra bots em fluxos de autenticação baseados em SMS, use o SDK Admin para executar o seguinte comando:
const disableRequest = {
recaptchaConfig: {
phoneEnforcementState: 'OFF',
useSmsBotScore: 'false'
}
};
Substituir vereditos do reCAPTCHA com funções do Cloud Run
Além de configurar limites de pontuação, é possível substituir um veredito do reCAPTCHA para um determinado token usando funções de bloqueio para permitir ou bloquear fluxos com base em fatores personalizados. Isso é útil em casos em que a pontuação do reCAPTCHA para um determinado login de usuário pode ser baixa, mas o usuário é confiável ou foi verificado por outros meios e, portanto, pode concluir o login.
O exemplo a seguir mostra como substituir um veredito do reCAPTCHA usando funções de bloqueio:
Node.js
const functions = require("firebase-functions/v1");
exports.beforesmsv1 = functions.auth.user().beforeSms((context) => {
if (
context.smsType === "SIGN_IN_OR_SIGN_UP" &&
context.additionalUserInfo.phoneNumber.includes('+91')
) {
return {
recaptchaActionOverride: "ALLOW",
};
}
// Allow users to sign in with recaptcha score greater than 0.5
if (event.additionalUserInfo.recaptchaScore > 0.5) {
return {
recaptchaActionOverride: 'ALLOW',
};
}
// Block all others.
return {
recaptchaActionOverride: 'BLOCK',
}
});
A seguir
- Ative o reCAPTCHA SMS Defense para fluxos de autenticação baseados em SMS.
- Saiba como usar sua própria chave do reCAPTCHA.
- Saiba mais sobre como monitorar métricas do reCAPTCHA.
- Saiba mais sobre o reCAPTCHA.