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 inquilino 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 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 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, ele vai buscar automaticamente a configuração do reCAPTCHA e ativar a proteção para os provedores configurados.
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 a 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 do 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 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, você pode 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.