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: 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_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 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 email e palavra-passe
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 custos, é 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:
verifyPhoneNumber
signInWithPhoneNumber
linkWithPhoneNumber
reauthenticateWithPhoneNumber
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 de autenticação 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, a 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 custos, é enviado um código de validação por SMS. Se o pedido de um utilizador falhar na avaliação de fraude de chamadas de custo elevado, 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 de administração 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 verificar se 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 email e palavra-passe
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
,AUDIT
eENFORCE
. Para ativar a proteção contra bots, este parâmetro tem de ser definido comoAUDIT
ouENFORCE
. Quando ativa a proteção contra bots pela primeira vez, recomendamos que defina este parâmetro comoAUDIT
e 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.0
e1.0
. Por exemplo, se definir um limite de0.6
, o reCAPTCHA vai rejeitar qualquer pedido com uma pontuação de0.5
ou 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
,AUDIT
eENFORCE
. Para ativar a proteção contra bots para fluxos baseados em SMS, este parâmetro tem de estar definido comoAUDIT
ouENFORCE
, euseSmsBotScore
tem de estar definido comotrue
.Quando ativa a proteção contra bots pela primeira vez, recomendamos que defina este parâmetro como
AUDIT
e 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.0
e1.0
. Por exemplo, se definir um limite de0.6
, o reCAPTCHA vai rejeitar qualquer pedido com uma pontuação de0.5
ou 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 de 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.gradle
ao 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
-ObjC
está listado nas suas flags do linker. Navegue para Segmento > Definições de criação > Tudo > Associação e verifique seOther Linker Flags
apresenta-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 contra 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 email e palavra-passe
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 = {
recaptchaConfig: {
emailPasswordEnforcementState: 'ENFORCE',
}]
}
};
Fornecedor de serviços telefónicos
Para ativar a aplicação do reCAPTCHA para fluxos de autenticação baseados em SMS num projeto ou num inquilino, use o SDK de administrador para executar o seguinte:
const enforceRequest = {
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE',
useSmsBotScore: 'true'
}]
}
};
Desative a proteção contra bots do reCAPTCHA
Fornecedor de email e palavra-passe
Para desativar a proteção contra bots para fluxos de autenticação por email e palavra-passe, use o SDK de administrador para executar o seguinte comando:
const disableRequest = {
recaptchaConfig: {
emailPasswordEnforcementState: 'OFF',
}
};
Fornecedor de serviços telefónicos
Para desativar a proteção contra bots para fluxos de autenticação baseados em SMS, use o SDK de administrador para executar o seguinte comando:
const disableRequest = {
recaptchaConfig: {
phoneEnforcementState: 'OFF',
useSmsBotScore: 'false'
}
};
Substitua veredictos do reCAPTCHA com funções do Cloud Run
Além de configurar os limites de pontuação, pode substituir um veredicto do reCAPTCHA para um determinado token através de funções de bloqueio para permitir ou bloquear fluxos com base em fatores personalizados. Isto é útil nos casos em que uma pontuação do reCAPTCHA para um determinado início de sessão do utilizador pode ser baixa, mas o utilizador é fidedigno ou foi validado por outros meios e, por isso, tem autorização para concluir o início de sessão.
O exemplo seguinte mostra como substituir um veredicto do reCAPTCHA através de 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',
}
});
O que se segue?
- Ative a defesa por SMS do reCAPTCHA para fluxos de autenticação baseados em SMS.
- Saiba como usar a sua própria chave reCAPTCHA.
- Saiba mais sobre a monitorização das métricas do reCAPTCHA.
- Saiba mais acerca do reCAPTCHA.