Integre o Identity Platform com a API reCAPTCHA Enterprise
Este documento mostra como usar a integração da Identity Platform com a API reCAPTCHA Enterprise para melhorar a segurança dos seus utilizadores. Esta funcionalidade torna a sua 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 os pedidos dos utilizadores. Para informações de preços, consulte os preços do reCAPTCHA.
Vista geral
Quando configura a integração da Identity Platform com a API reCAPTCHA Enterprise, ativa a funcionalidade de proteção predefinida do reCAPTCHA, ou seja, a proteção contra bots do reCAPTCHA. Com a proteção contra bots, a Identity Platform aprova chaves do reCAPTCHA baseadas em pontuação no seu projeto em seu nome. Quando um utilizador acede à sua app ou site através de qualquer uma das seguintes operações, o SDK do cliente carrega o reCAPTCHA quando o fornecedor correspondente está ativado.
| Fornecedor | Operação | Método |
|---|---|---|
passwordProvider |
Início de sessão com email e palavra-passe | signInWithPassword |
| Inscrição com email e palavra-passe | signUpPassword |
|
| Início de sessão com link por email | getOobCode |
|
| Redefinição de palavra-passe | getOobCode |
|
phoneProvider |
Inscrição ou início de sessão com número de telefone | sendVerificationCode |
| Inscrição do número de telefone para MFA | mfaSmsEnrollment |
|
| Início de sessão com número de telefone para MFA | mfaSmsSignIn |
Em seguida, o reCAPTCHA fornece à Identity Platform pontuações que avaliam o risco do pedido com base na sua configuração e tolerância ao risco.
Para mais informações, consulte o artigo Vista geral do reCAPTCHA.
Antes de começar
Com base no tipo de fluxo de autenticação que quer proteger com o reCAPTCHA, certifique-se de que configurou o seguinte:
- Para fluxos de autenticação de email/palavra-passe, certifique-se de que configurou o início de sessão por email para os utilizadores.
Para fluxos de autenticação baseados em SMS, certifique-se de que aderiu a, pelo menos, um dos seguintes:
- Início de sessão por telefone para utilizadores.
- Autenticação multifator para a sua app Web, Android ou iOS.
Criar uma conta de serviço
A integração da Identity Platform com a API reCAPTCHA Enterprise requer uma conta de serviço da Identity Platform para cada projeto que vai usar o reCAPTCHA. Isto permite que a Identity Platform gere as chaves do reCAPTCHA em seu nome. Se já tiver criado uma conta de serviço, conceda-lhe acesso ao reCAPTCHA.
Se ainda não tiver criado uma conta de serviço ou tiver projetos adicionais que queira proteger com o reCAPTCHA, faça o seguinte:
Use a CLI Google Cloud 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 o seguinte:
PROJECT_ID: o ID do projetoPROJECT_NUMBER: o número de 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 utilizadores: auditoria e aplicação. Estes modos diferem no comportamento com base no fornecedor de identidade.
Fornecedor de palavra-passe por email
Os modos de auditoria e aplicação comportam-se da seguinte forma para os fluxos de autenticação de email e palavra-passe.
Modo de auditoria
Quando define a aplicação de palavra-passe de email 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 Identity Platform sem bloquear pedidos. Use as métricas emitidas durante o modo de auditoria para determinar se deve ativar a aplicação do reCAPTCHA.
Modo de aplicação
Quando define a aplicação de palavra-passe de email para o 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 Identity Platform. Os pedidos da API que não incluam um token do reCAPTCHA são rejeitados. Ative a aplicação apenas depois de migrar todos os seus clientes para um SDK com suporte do reCAPTCHA.
Fornecedor de serviços telefónicos
Os modos de auditoria e aplicação comportam-se da seguinte forma para os fluxos de autenticação por telefone.
Modo de auditoria
Quando define a aplicação da autenticação por telefone para o modo de auditoria, o Identity Platform usa a proteção contra bots do reCAPTCHA para a validação de apps. Se o pedido de um utilizador passar na avaliação de fraude de tarifação, é enviado um código de validação por SMS. Se o pedido de um utilizador falhar na avaliação de fraude de tarifação e estiver a usar o SDK do cliente, o Identity Platform aciona métodos de validação alternativos para concluir o fluxo de autenticação por telefone. Os métodos alternativos aceites dependem da plataforma da sua app.
O SDK do cliente aciona os métodos de validação alternativos nos seguintes cenários:
- O token reCAPTCHA está em falta.
- O token do reCAPTCHA é inválido ou expirou.
- O token reCAPTCHA não passa o limite de pontuação.
- O reCAPTCHA não está configurado corretamente.
Certifique-se de que os métodos de validação alternativos para a plataforma da sua 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 baseia-se no reCAPTCHA v2 para validação. Por conseguinte, tem de configurar o validador do reCAPTCHA (RecaptchaVerifier) e transmiti-lo às seguintes operações de autenticação por telemóvel:
verifyPhoneNumbersignInWithPhoneNumberlinkWithPhoneNumberreauthenticateWithPhoneNumber
auth/argument-error. Para mais
informações sobre como configurar o verificador do reCAPTCHA, consulte o artigo Configure
o verificador do reCAPTCHA na documentação do Firebase.
Android
Se a avaliação inicial de proteção contra bots falhar, o modo de auditoria valida a sua app em relação à API Play Integrity. Se esta validação falhar, o reCAPTCHA v2 é acionado. O reCAPTCHA v2 pode ser acionado nos seguintes cenários:
- Se o dispositivo do utilizador final não tiver os Serviços do Google Play instalados.
- Se a app não for distribuída através da Google Play Store (no SDK de autenticação v21.2.0 e posterior).
- Se o token do SafetyNet obtido não for válido (em versões do SDK Authentication anteriores à v21.2.0).
iOS
Se a avaliação inicial de proteção contra bots falhar, o modo de auditoria baseia-se em notificações push silenciosas para validação. Este método de validação envolve o envio de um token para a sua app no dispositivo que está a fazer o pedido com uma notificação push silenciosa. Se a sua app receber com êxito a notificação, o fluxo de autenticação por telemóvel continua. Se a sua app não receber a notificação push, o reCAPTCHA v2 é acionado. O reCAPTCHA v2 pode ser acionado se as notificações push silenciosas não estiverem configuradas corretamente.
Para mais informações sobre a configuração da validação de apps iOS, consulte o artigo Ative a validação de apps na documentação do Firebase.
Modo de aplicação
Quando define a aplicação da autenticação por telefone para o modo de aplicação, o Identity Platform usa a proteção contra bots do reCAPTCHA para a validação de apps. Se o pedido de um utilizador passar na avaliação de fraude de tarifação, é enviado um código de validação por SMS. Se o pedido de um utilizador falhar na avaliação de fraude de custos, o Identity Platform bloqueia o pedido e não envia uma mensagem SMS com um código de validação.
Não é necessária nenhuma validação alternativa no modo de aplicação. Não tem de configurar métodos de validação adicionais para a sua app. No entanto, recomendamos que configure o validador reCAPTCHA para apps Web para garantir que o reCAPTCHA v2 está ativado se decidir alterar o modo reCAPTCHA da sua app para AUDIT ou OFF.
Configure a integração da Identity Platform com a API reCAPTCHA Enterprise
Para configurar a integração da Identity Platform com a API reCAPTCHA Enterprise, realiza 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 da sua app.
Recomendamos que ative primeiro a aplicação do reCAPTCHA no modo de auditoria e monitorize as métricas do reCAPTCHA que o seu projeto emite para garantir que os fluxos de autenticação estão protegidos adequadamente.
Isto é feito para não interromper o tráfego de utilizadores enquanto audita a respetiva utilização do reCAPTCHA. Depois de validar que os fluxos de autenticação estão protegidos, defina a proteção contra bots como ENFORCE.
Ative a proteção contra bots do reCAPTCHA
Fornecedor de palavra-passe por email
Para ativar a proteção contra bots do reCAPTCHA para fluxos de autenticação de email e palavra-passe, faça o seguinte:
Se ainda não o fez, ative a API reCAPTCHA Enterprise no seu projeto.
Para ativar a proteção contra bots para um projeto, use o SDK de administrador. O suporte do reCAPTCHA está disponível nas versões 11.7.0 e posteriores do SDK de administrador do Node.js.
Por 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 o seguinte:
ENFORCE_MODE: o modo que quer definir para a aplicação da autenticação por email e palavra-passe do reCAPTCHA. Os valores válidos sãoOFF,AUDITeENFORCE. Para ativar a proteção contra bots, este parâmetro tem de ser definido comoAUDITouENFORCE. Quando ativa a proteção contra bots pela primeira vez, recomendamos que defina este parâmetro comoAUDITe garanta que os seus fluxos de autenticação estão protegidos antes de o definir comoENFORCE. Para mais informações sobre como funcionam os modos, consulte os modos de proteção contra bots do reCAPTCHA.END_SCORE: a pontuação de avaliação de proteção contra bots mais baixa que um pedido pode ter antes de falhar. Pode definir esta pontuação entre0.0e1.0. Por exemplo, se definir um limite de0.6, o reCAPTCHA vai falhar qualquer pedido com um valor de0.5ou inferior. Por conseguinte, quanto mais elevada for a pontuação, mais rigorosas serão as regras.
Também pode ativar a proteção contra bots com o mesmo método de configuração para um inquilino através do SDK de administrador. Para mais informações sobre como atualizar um inquilino, consulte o artigo Atualize um inquilino.
Se usar a Identity Platform no iOS ou Android, tem de registar a sua app na consola do Firebase:
- Para iOS, registe cada ID do pacote que usa a Identity Platform
- Para Android, registe cada nome de pacote Android que usa a Identity Platform
Se estiver a usar a Identity Platform na Web, tem de adicionar um domínio autorizado para cada domínio que use o reCAPTCHA. Para adicionar domínios autorizados, faça o seguinte:
Na Google Cloud consola, aceda à página Identity Platform.
Aceda a Definições > Segurança.
Clique em Adicionar domínio.
Introduza o nome do domínio e clique em Adicionar para guardar o domínio.
O aprovisionamento da chave do reCAPTCHA pode demorar vários minutos a ser concluído.
Se tiver definido a aplicação para o modo de auditoria, recomendamos que monitorize as métricas do reCAPTCHA para proteção contra bots para garantir que os seus fluxos estão a ser protegidos.
Fornecedor de serviços telefónicos
Para ativar a proteção contra bots do reCAPTCHA para fluxos de autenticação baseados em SMS, faça o seguinte:
Se ainda não o fez, ative a API reCAPTCHA Enterprise no seu projeto.
Para ativar a proteção contra bots para um projeto, use o SDK de administrador. O suporte do reCAPTCHA está disponível nas versões 12.7.0 e posteriores do SDK de administrador do Node.js.
Por 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 o seguinte:
ENFORCE_MODE: o modo que quer definir para a aplicação da autenticação telefónica do reCAPTCHA. Os valores válidos sãoOFF,AUDITeENFORCE. Para ativar a proteção contra bots para fluxos baseados em SMS, este parâmetro tem de estar definido comoAUDITouENFORCE, euseSmsBotScoretem de estar definido comotrue.Quando ativa a proteção contra bots pela primeira vez, recomendamos que defina este parâmetro como
AUDITe se certifique de que os seus fluxos de autenticação estão protegidos antes de o definir comoENFORCE. Para mais informações sobre como funcionam os modos, consulte os modos de proteção contra bots do reCAPTCHA.END_SCORE: a pontuação de avaliação de proteção contra bots mais baixa que um pedido pode ter antes de falhar. Pode definir esta pontuação entre0.0e1.0. Por exemplo, se definir um limite de0.6, o reCAPTCHA vai falhar qualquer pedido com um valor de0.5ou inferior. Por conseguinte, quanto mais elevada for a pontuação, mais rigorosas serão as regras.
Também pode ativar a proteção contra bots com o mesmo método de configuração para um inquilino através do SDK de administrador. Para mais informações sobre como atualizar um inquilino, consulte o artigo Atualize um inquilino.
Se estiver a usar a Identity Platform no iOS ou Android, tem de registar a sua app na consola do Firebase:
- Para iOS, registe cada ID do pacote que usa a Identity Platform
- Para Android, registe cada nome de pacote Android que usa a Identity Platform
Se estiver a usar a Identity Platform na Web, tem de adicionar um domínio autorizado para cada domínio que use o reCAPTCHA. Para adicionar domínios autorizados, faça o seguinte:
Na Google Cloud consola, aceda à página Identity Platform.
Aceda a Definições > Segurança.
Clique em Adicionar domínio.
Introduza o nome do domínio e clique em Adicionar para guardar o domínio.
O aprovisionamento da chave do reCAPTCHA pode demorar vários minutos a ser concluído.
Se tiver definido a aplicação para o modo de auditoria, recomendamos que monitorize as métricas do reCAPTCHA para proteção contra bots para garantir que os seus fluxos estão a ser protegidos.
Configure o SDK do cliente
Configure o SDK do cliente de acordo com a plataforma da sua app.
Web
Atualize para a versão mais recente do SDK Web.
- O suporte do reCAPTCHA para autenticação por email e palavra-passe em apps Web está disponível nas versões 9.20.0 e posteriores do SDK JavaScript.
- O suporte do reCAPTCHA para a autenticação por telefone em apps Web está disponível nas versões 11 e posteriores do SDK JavaScript.
Depois de integrar o SDK Web com a sua app, o SDK obtém automaticamente a configuração do reCAPTCHA e ativa a proteção para os fornecedores que configurou.
Se necessário, pode forçar a obtenção do sinal 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 email e palavra-passe e autenticação por telefone em apps Android está disponível na versão 23.1.0 e posterior do SDK do Android.
Além disso, o suporte do reCAPTCHA requer o nível da API 23 (Marshmallow) ou superior e o Android 6 ou superior.
Depois de integrar o SDK Android na sua app, o SDK obtém automaticamente a configuração do reCAPTCHA e ativa a proteção para os fornecedores que configurou.
Adicione a seguinte regra de compilação à secção de dependências do ficheiro
build.gradleao nível da app:implementation 'com.google.android.recaptcha:recaptcha:18.5.1'Certifique-se de que usa a versão 18.5.1 ou posterior do SDK do reCAPTCHA.
Se necessário, pode forçar a obtenção do sinal 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 posterior do SDK para iOS. Depois de integrar o SDK iOS com a sua app, o SDK obtém automaticamente a configuração do reCAPTCHA e ativa a proteção para os fornecedores que configurou.
Para integrar o SDK do reCAPTCHA para iOS na sua app, consulte o artigo Prepare o seu ambiente.
Certifique-se de que
-ObjCestá listado nas suas flags do linker. Navegue para Segmento > Definições de criação > Tudo > Associação e verifique seOther Linker Flagsapresenta-ObjC.Se necessário, pode forçar a obtenção do sinal 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 }];
Monitorize as métricas do reCAPTCHA para proteção contra bots
Antes de definir a aplicação do reCAPTCHA para o modo de aplicação, recomendamos que use o modo de auditoria e monitorize as métricas do reCAPTCHA que o seu projeto emite para garantir que os fluxos de autenticação estão protegidos. Por exemplo, estas métricas podem ajudar a determinar se configurou corretamente a integração da Identity Platform com a API reCAPTCHA Enterprise. Também podem ajudar a ajustar o limite da pontuação para o tráfego de utilizadores. Se o aprovisionamento 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 continuam a ter êxito normalmente.
Certifique-se de que a autenticação reCAPTCHA está a funcionar examinando as seguintes métricas que o seu projeto emite para o Cloud Monitoring:
identitytoolkit.googleapis.com/recaptcha/verdict_count: Monitoriza os diferentes veredictos devolvidos pelo reCAPTCHA.identitytoolkit.googleapis.com/recaptcha/token_count: Monitoriza o número e o estado dos tokens reCAPTCHA recebidos pelo backend da Identity Platform.identitytoolkit.googleapis.com/recaptcha/risk_scores: Monitoriza a distribuição da pontuação de proteção de bots.
Para mais informações, consulte o artigo Monitorize as métricas do reCAPTCHA.
Aplique a proteção contra bots do reCAPTCHA
Depois de verificar que a sua app está a receber tráfego de utilizadores aceitável, pode ativar a aplicação do reCAPTCHA para proteger os seus utilizadores. Certifique-se de que não interrompe os utilizadores existentes, incluindo os que podem estar a usar uma versão mais antiga da sua app.
Fornecedor de palavra-passe de email
Para ativar a aplicação do reCAPTCHA para fluxos de autenticação por email e palavra-passe num projeto ou inquilino, use o SDK de administrador para executar o seguinte:
const enforceRequest =