Integrar o Identity Platform à API reCAPTCHA Enterprise
Este documento mostra como usar a integração do Identity Platform com a API reCAPTCHA Enterprise para melhorar a segurança dos seus usuários. Esse recurso torna seu app mais resistente a 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 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 abaixo, 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 por e-mail e senha | signUpPassword |
|
Login com link de e-mail | getOobCode |
|
Redefinição de senha | getOobCode |
|
phoneProvider |
Inscrição ou login com número de telefone | sendVerificationCode |
Registro de número de telefone do MFA | mfaSmsEnrollment |
|
Login com número de telefone de MFA | mfaSmsSignIn |
O reCAPTCHA fornece ao Identity Platform pontuações que avaliam o risco da solicitação com base na sua configuração e na tolerância de risco.
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, configure o login de e-mail para usuários.
Para fluxos de autenticação por SMS, verifique se você fez a integração com pelo menos um dos seguintes:
- Fazer login com o número de telefone dos usuários.
- Autenticação multifator para seu app da Web, Android ou iOS.
Crie 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 as chaves 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 a proteger os usuários: auditoria e aplicação. O comportamento desses modos varia de acordo com o provedor de identidade.
Provedor de e-mail/senha
Os modos de auditoria e aplicação se comportam da seguinte maneira para os fluxos de autenticação de e-mail e senha.
Modo de auditoria
Quando você define a aplicação de e-mail e senha 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ê precisa ativar a aplicação do reCAPTCHA.
Modo de restrição
Quando você define a aplicação de e-mail e senha para ativar o modo, 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. As solicitações de API que não incluem um token reCAPTCHA são rejeitadas. Só ative a aplicação depois de migrar todos os clientes para um SDK com suporte ao reCAPTCHA.
Provedor de telefonia
Os modos de auditoria e aplicação se comportam da seguinte maneira para os fluxos de autenticação por telefone.
Modo de auditoria
Quando você define a aplicação de autenticação de smartphone no modo de auditoria, o Identity Platform usa a proteção de bot reCAPTCHA para a verificação de apps. Se a solicitação do usuário passar pela avaliação de proteção contra bots, o Identity Platform vai enviar uma mensagem SMS com um código de verificação para o smartphone do usuário. Se uma solicitação falhar na avaliação de proteção contra bots e você estiver usando o SDK do cliente, os métodos de verificação alternativos serão acionados para concluir o fluxo de autenticação por telefone. Os métodos alternativos aceitos dependem da plataforma do app.
O SDK do cliente aciona os métodos de verificação de fallback nos seguintes cenários:
- O token reCAPTCHA está ausente.
- O token reCAPTCHA é inválido ou expirou.
- O token reCAPTCHA não passa do limite de pontuação.
- O reCAPTCHA não está configurado corretamente.
Verifique se os métodos de verificação substitutos 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 em relação à 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 para o app no dispositivo solicitante com uma notificação push silenciosa. Se o app receber a notificação, o fluxo de autenticação do smartphone vai prosseguir. 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 aplicação da autenticação de smartphone para o modo de aplicação, o Identity Platform usa a proteção contra bots do reCAPTCHA para a verificação de apps. Se a solicitação do usuário passar na avaliação de proteção contra bots, o Identity Platform vai enviar uma mensagem SMS com um código de verificação para o smartphone do usuário. Se a solicitação falhar na avaliação de proteção contra bots, o Identity Platform vai bloquear a solicitação e não enviar uma mensagem SMS com um código de verificação.
Não é necessária nenhuma verificação de fallback no modo de aplicação. Você não precisa configurar outros métodos de verificação para o app. No entanto, recomendamos configurar o verificador reCAPTCHA para apps da Web e garantir que o reCAPTCHA v2 esteja ativado se você decidir mudar o modo 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, realize as seguintes tarefas:
- 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ê ative primeiro 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 sejam protegidos adequadamente.
Isso é feito para que você não interrompa o tráfego do usuário enquanto 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 para fluxos de autenticação de e-mail/senha, faça o seguinte:
Ative a API reCAPTCHA Enterprise no seu projeto, se ainda não tiver feito isso.
Para ativar a proteção contra bots em um projeto, use o SDK Admin. O suporte a 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 de 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ê ativar 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 com0.5
ou inferior. Portanto, quanto maior a pontuação, mais rígidas serão as regras.
Também é possível ativar a proteção contra bots com o mesmo método de configuração para um tenant 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 no Android, registre seu app no console do Firebase:
- Para iOS, registre cada ID do pacote que usa o Identity Platform.
- Para Android, registre cada nome de pacote 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 console do Google Cloud, 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 reCAPTCHA pode levar alguns minutos para ser concluído.
Se você tiver definido a aplicação para o modo de auditoria, recomendamos monitorar as métricas do reCAPTCHA para proteção contra bots para garantir que seus fluxos estejam sendo protegidos.
Provedor de serviços de telefonia
Para ativar a proteção contra bots do reCAPTCHA para fluxos de autenticação por SMS, faça o seguinte:
Ative a API reCAPTCHA Enterprise no seu projeto, se ainda não tiver feito isso.
Para ativar a proteção contra bots em um projeto, use o SDK Admin. O suporte a 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 para 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 com0.5
ou inferior. Portanto, quanto maior a pontuação, mais rígidas serão as regras.
Também é possível ativar a proteção contra bots com o mesmo método de configuração para um tenant 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 no Android, registre seu app no Console do Firebase:
- Para iOS, registre cada ID do pacote que usa o Identity Platform.
- Para Android, registre cada nome de pacote 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 console do Google Cloud, 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 reCAPTCHA pode levar alguns minutos para ser concluído.
Se você tiver definido a aplicação para o modo de auditoria, recomendamos monitorar as métricas do reCAPTCHA para proteção contra bots para garantir que seus fluxos estejam sendo 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 que você integrar o SDK da Web ao seu app, o SDK vai buscar automaticamente a configuração do reCAPTCHA e ativar a proteção para os provedores que você configurou.
Se necessário, você pode forçar a busca do indicador 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 por telefone em apps Android está disponível na versão 23.1.0 do SDK do Android e mais recentes.
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 app, o SDK vai buscar automaticamente a configuração do reCAPTCHA e ativar 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 o SDK do reCAPTCHA na versão 18.5.1 ou mais recente.
Se necessário, você pode forçar a busca do indicador 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 para iOS ao seu app, o SDK vai buscar automaticamente a configuração do reCAPTCHA e ativar a proteção para os provedores configurados.
Para integrar o SDK do reCAPTCHA para iOS ao seu app, consulte Preparar seu ambiente.
Verifique se
-ObjC
está listado nas flags do vinculador. Navegue até Target > Build Settings > All > Linking e verifique seOther Linker Flags
mostra-ObjC
.Se necessário, você pode forçar a busca do indicador 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 as métricas do reCAPTCHA para proteção contra bots
Antes de definir a aplicação do reCAPTCHA para ativar o modo, recomendamos usar o modo de auditoria e monitorar as métricas do reCAPTCHA emitido pelo seu projeto para garantir que os fluxos de autenticação estejam protegidos. Por exemplo, essas métricas podem ajudar a determinar se você configurou a integração da Identity Platform com a API reCAPTCHA Enterprise corretamente. Eles também podem ajudar a ajustar o limite de pontuação para o tráfego de usuários. Se o provisionamento da chave reCAPTCHA falhar ou se as contas de serviço necessárias não forem criadas, as tentativas de autenticação do reCAPTCHA ainda vão ser bem-sucedidas.
Verifique se a autenticação 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 vereditos retornados pelo reCAPTCHA.identitytoolkit.googleapis.com/recaptcha/token_count
: rastreia o número e o status dos tokens reCAPTCHA recebidos pelo back-end da Identity Platform.identitytoolkit.googleapis.com/recaptcha/risk_scores
: rastreia a distribuição da pontuação da proteção contra bots.
Para mais informações, consulte Monitorar as métricas do reCAPTCHA.
Aplique a proteção contra bots do reCAPTCHA
Depois de verificar se o app está recebendo tráfego de usuário aceitável, ative a aplicação do reCAPTCHA para proteger seus usuários. Não interrompa os usuários existentes, 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 para 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 de telefonia
Para ativar a aplicação do reCAPTCHA para 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 para 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 de telefonia
Para desativar a proteção contra bots para fluxos de autenticação baseados em SMS, use o SDK Admin para executar o seguinte comando:
const disableRequest = {
recaptchaConfig: {
phoneEnforcementState: 'OFF',
useSmsBotScore: 'false'
}
};
Substituir os vereditos do reCAPTCHA com as funções do Cloud Run
Além de configurar os 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, tem permissão para concluir o login.
Para saber mais sobre como configurar funções de bloqueio com o reCAPTCHA, consulte Ampliar a Autenticação do Firebase com funções do Cloud de bloqueio.
A seguir
- Ative a proteção contra fraudes de cobrança por SMS do reCAPTCHA para fluxos de autenticação baseados em SMS.
- Saiba como usar sua própria chave reCAPTCHA.
- Saiba mais sobre como monitorar as métricas do reCAPTCHA.
- Saiba mais sobre o reCAPTCHA.