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á criou 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_ID
Substitua
PROJECT_ID
pelo 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.serviceAgent
Substitua:
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 funcionam 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 no modo de auditoria, o Identity Platform cria uma ou mais chaves 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 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 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:
verifyPhoneNumber
signInWithPhoneNumber
linkWithPhoneNumber
reauthenticateWithPhoneNumber
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
,AUDIT
eENFORCE
. Para ativar a proteção contra bots, esse parâmetro precisa ser definido comoAUDIT
ouENFORCE
. Quando você ativa a proteção contra bots pela primeira vez, recomendamos definir esse parâmetro comoAUDIT
e 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.0
e1.0
. Por exemplo, se você definir um limite de0.6
, o reCAPTCHA vai falhar em qualquer solicitação com um0.5
ou 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
,AUDIT
eENFORCE
. Para ativar a proteção contra bots em fluxos baseados em SMS, esse parâmetro precisa ser definido comoAUDIT
ouENFORCE
, euseSmsBotScore
precisa ser definido comotrue
.Ao ativar a proteção contra bots pela primeira vez, recomendamos definir esse parâmetro como
AUDIT
e 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.0
e1.0
. Por exemplo, se você definir um limite de0.6
, o reCAPTCHA vai falhar em qualquer solicitação com um0.5
ou 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 forma:
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.gradle
no 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 forma:
- 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
-ObjC
está listado nos seus sinalizadores do vinculador. Navegue até Destino > Configurações de build > Todos > Vinculação e verifique seOther Linker Flags
mostra-ObjC
.Se necessário, force a busca do indicador do reCAPTCHA da seguinte forma:
- 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 o modo de aplicação do reCAPTCHA, recomendamos usar o modo de auditoria e monitorar as métricas 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 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 o Cloud Run functions
Além de configurar limites de pontuação, é possível substituir um veredito do reCAPTCHA para um determinado token usando uma função de bloqueio personalizada do Cloud Run functions. 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.
Para saber mais sobre como configurar funções de bloqueio com o reCAPTCHA, consulte Ampliar o Firebase Authentication com funções do Cloud de bloqueio.
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.