Detetar e impedir atividades fraudulentas relacionadas com contas em Websites

Este documento mostra-lhe como usar o reCAPTCHA Account Defender para detetar e impedir atividades fraudulentas relacionadas com contas em Websites.

O reCAPTCHA ajuda a proteger ações críticas, como o início de sessão e o pagamento. No entanto, existem muitas formas subtis de abuso de contas que podem ser detetadas através da observação do comportamento de um utilizador específico num Website durante um período. O reCAPTCHA Account Defender ajuda a identificar estes tipos de abuso subtil através da criação de um modelo específico do site para o seu Website de modo a detetar uma tendência de comportamento suspeito ou uma alteração na atividade. Ao usar o modelo específico do site, o reCAPTCHA Account Defender ajuda a detetar o seguinte:

  • Atividades suspeitas
  • Contas com comportamentos semelhantes
  • Pedidos provenientes de dispositivos que foram marcados como fidedignos para utilizadores específicos

Com base na análise do reCAPTCHA Account Defender e do modelo específico do site, pode tomar as seguintes medidas:

  • Restrinja ou desative contas fraudulentas.
  • Impeça tentativas de roubo de conta.
  • Mitigar as aquisições de contas bem-sucedidas.
  • Conceda acesso apenas aos pedidos provenientes de contas de utilizadores legítimas.
  • Reduzir as dificuldades para os utilizadores que iniciam sessão a partir de um dos respetivos dispositivos fidedignos.

Antes de começar

  1. Prepare o seu ambiente para o reCAPTCHA.
  2. Crie uma chave do site baseada em pontuação.

Configure as suas páginas Web para o reCAPTCHA Account Defender

O reCAPTCHA account defender requer uma compreensão abrangente das atividades da conta para permitir uma deteção eficaz. Para começar a enviar atividades relacionadas com a conta para o reCAPTCHA Account Defender e para criar e melhorar o seu modelo específico do site, faça o seguinte:

  1. Ative a recolha de dados de telemetria horizontal.
  2. Crie relatórios sobre ações críticas do utilizador.
  3. Avalie eventos críticos do utilizador.
  4. Anotar eventos do utilizador para otimizar o modelo específico do site.

Ative a recolha de dados de telemetria horizontal

O reCAPTCHA Account Defender requer uma vista completa das ações do utilizador, como se o utilizador tem sessão iniciada ou se está a iniciar sessão. Para ativar a recolha passiva de dados de telemetria horizontal pelo reCAPTCHA Account Defender, carregue o script JavaScript do reCAPTCHA com a chave do site baseada em pontuação que criou em segundo plano de todas as páginas Web que fazem parte do fluxo de trabalho do utilizador.

O exemplo seguinte mostra como carregar o script JavaScript do reCAPTCHA numa página Web.

    <head>
    <script src="https://www.google.com/recaptcha/enterprise.js?render=KEY_ID"></script>
    ....
    </head>

Crie relatórios sobre ações críticas dos utilizadores

Para detetar padrões de atividade suspeitos e compreender melhor os padrões de atividade típicos no seu site, o reCAPTCHA Account Defender precisa das informações sobre ações críticas dos utilizadores. Por conseguinte, comunique ações críticas do utilizador nas páginas Web chamando grecaptcha.enterprise.execute() nessas ações críticas do utilizador.

Recomendamos que comunique todas as ações críticas do utilizador, uma vez que ajuda na recolha de sinais adicionais. Para cada ação do utilizador sobre a qual quer criar relatórios, substitua o valor do parâmetro action de grecaptcha.enterprise.execute() pelo nome de uma ação que descreva a ação do utilizador.

A tabela seguinte lista os nomes das ações que pode usar ao comunicar as ações críticas do utilizador.

Nome da ação Evento iniciado pelo utilizador ou ação do utilizador
LOGIN

Inicie sessão no Website.

REGISTRATION Registo no Website.
SECURITY_QUESTION_CHANGE Pedido para alterar a pergunta de segurança.
PASSWORD_RESET Peça a reposição da palavra-passe.
PHONE_NUMBER_UPDATE Peça a atualização do número de telefone.
EMAIL_UPDATE Solicite a atualização do endereço de email.
ACCOUNT_UPDATE Solicitar a atualização de informações relacionadas com a conta, como os detalhes de contacto.
TRIGGER_MFA Uma ação que aciona um desafio de MFA.
REDEEM_CODE Pedido para resgatar o código.
LIST_PAYMENT_METHODS Obter a lista de métodos de pagamento.

O exemplo seguinte mostra como chamar grecaptcha.enterprise.execute() numa atualização do número de telefone:

    <script>
    function onClick(e) {
      e.preventDefault();
      grecaptcha.enterprise.ready(async () => {
        const token = await grecaptcha.enterprise.execute('KEY_ID', {action: 'PHONE_NUMBER_UPDATE'});
      });
    }
    </script>
    

Avalie eventos críticos do utilizador

Quando chama grecaptcha.enterprise.execute() numa ação do utilizador, gera um token. Para os eventos de utilizador críticos, como inícios de sessão e registos bem-sucedidos e com falhas, e ações dos utilizadores com sessão iniciada, crie uma avaliação para avaliar os resultados da chamada grecaptcha.enterprise.execute(). A avaliação fornece-lhe um veredito de risco, que pode usar para tomar uma decisão sobre como processar atividades potencialmente fraudulentas. Algumas das ações que pode realizar são bloquear pedidos suspeitos, desafiar inícios de sessão arriscados e investigar contas de interesse.

O reCAPTCHA Account Defender requer que faculte um identificador de conta estável para atribuir a atividade do utilizador, como pedidos de início de sessão, pedidos com sessão iniciada e pedidos de inscrição, a uma conta específica. Isto ajuda o reCAPTCHA Account Defender a compreender os padrões de atividade dos utilizadores e a criar um modelo de atividade para cada conta de modo a detetar melhor o tráfego anómalo e abusivo.

Escolha um identificador de conta estável accountId que não seja alterado com frequência pelo utilizador e faculte-o à avaliação no método projects.assessments.create. Este identificador de conta estável deve ter o mesmo valor para todos os eventos relacionados com o mesmo utilizador. Pode indicar o seguinte como identificador da conta:

Identificadores de utilizadores

Se cada conta puder ser associada de forma exclusiva a um nome de utilizador, um endereço de email ou um número de telefone estável, pode usá-lo como o accountId. Quando fornece esses identificadores entre sites (identificadores que podem ser reutilizados em vários sites), o reCAPTCHA usa estas informações para melhorar a proteção das suas contas de utilizador com base em modelos entre sites, ao sinalizar identificadores de contas abusivas e usar o conhecimento de padrões de abuso entre sites relacionados com estes identificadores.

Em alternativa, se tiver um ID do utilizador interno associado exclusivamente a cada conta, pode fornecê-lo como o accountId.

Com hash ou encriptadas

Se não tiver um ID de utilizador interno associado exclusivamente a cada conta, pode transformar qualquer identificador estável num identificador de conta opaco e específico do site. Este identificador continua a ser necessário para o reCAPTCHA account defender compreender os padrões de atividade do utilizador e detetar comportamentos anómalos, mas não é partilhado com outros sites.

Escolha um identificador de conta estável e torne-o opaco antes de o enviar para o reCAPTCHA através de encriptação ou aplicação de hash:

  • Encriptação (recomendada): encriptar o identificador da conta através de um método de encriptação determinístico que produz um texto cifrado estável. Para ver instruções detalhadas, consulte o artigo sobre como encriptar dados de forma determinística. Quando escolhe a encriptação simétrica em vez da aplicação de hash, não precisa de manter um mapeamento entre os seus identificadores de utilizadores e os identificadores de utilizadores opacos correspondentes. Descriptografar os identificadores opacos devolvidos pelo reCAPTCHA para os transformar no identificador do utilizador.

  • aplicar hash: recomendamos que aplique hash ao identificador da conta através do método SHA256-HMAC com um sal personalizado à sua escolha. Uma vez que os hashes são apenas de sentido único, tem de manter um mapeamento entre os hashes gerados e os identificadores de utilizadores para poder mapear o identificador da conta com hash que é devolvido às contas originais.

Além de fornecer um identificador de conta estável para todos os pedidos relacionados com a conta, pode fornecer identificadores de conta adicionais, potencialmente não estáveis, para alguns pedidos específicos. Os identificadores de conta específicos do contexto fornecidos além do accountId ajudam o reCAPTCHA Account Defender a compreender melhor a atividade do utilizador e a detetar tentativas de roubo de conta para manter as contas de utilizador seguras. Quando fornece identificadores adicionais, o reCAPTCHA usa estas informações para melhorar a proteção das suas contas de utilizador com base em modelos de vários sites, sinalizando identificadores de contas abusivas e usando o conhecimento de padrões de abuso em vários sites relacionados com estes identificadores. Por exemplo, pode fornecer o seguinte:

  • O nome de utilizador, o endereço de email ou o número de telefone que foi usado como identificador de início de sessão para pedidos de início de sessão

  • O endereço de email ou o número de telefone que foi validado para um pedido de autenticação multifator

  • Um endereço de email ou um número de telefone (principal ou secundário) que foi fornecido pelo utilizador durante um pedido de atualização da conta

  • Os endereços de email e os números de telefone facultados pelo utilizador durante um pedido de registo

Anexe o identificador de conta estável escolhido ao parâmetro accountId no método projects.assessments.create para todos os pedidos relacionados com a conta. Opcionalmente, faculte identificadores de conta adicionais para os pedidos relevantes através do campo userIds na avaliação.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do seu Google Cloud projeto
  • TOKEN: token devolvido pela chamada grecaptcha.enterprise.execute()
  • KEY_ID: chave reCAPTCHA associada ao site
  • ACCOUNT_ID: o identificador que está exclusivamente associado à conta de utilizador para uma conta de utilizador no seu Website
  • EMAIL_ADDRESS: opcional. Um endereço de email associado a este pedido, se existir
  • PHONE_NUMBER: opcional. Um número de telefone associado a este pedido, se existir
  • USERNAME: opcional. Um nome de utilizador associado a este pedido, se existir

Método HTTP e URL:

POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments

Corpo JSON do pedido:

{
  "event": {
    "token": "TOKEN",
    "siteKey": "KEY_ID",
    "userInfo": {
      "accountId": "ACCOUNT_ID",
      "userIds": [
        {
          "email": "EMAIL_ADDRESS"
        },
        {
          "phoneNumber": "PHONE_NUMBER"
        },
        {
          "username": "USERNAME"
        }
      ]
    }
  }
}

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments"

PowerShell

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments" | Select-Object -Expand Content

Deve receber uma resposta JSON semelhante à seguinte:

{
  "tokenProperties": {
    "valid": true,
    "hostname": "www.google.com",
    "action": "login",
    "createTime": "2019-03-28T12:24:17.894Z"
   },
  "riskAnalysis": {
    "score": 0.6,
  },
 "event": {
    "token": "TOKEN",
    "siteKey": "KEY",
    "userInfo": {
      "accountId": "ACCOUNT_ID"
    }
  },
  "name": "projects/PROJECT_NUMBER/assessments/b6ac310000000000",
  "accountDefenderAssessment": {
    "labels": ["SUSPICIOUS_LOGIN_ACTIVITY"]
  }
}

Exemplo de código

Java

Para se autenticar no reCAPTCHA, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.


import com.google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseServiceClient;
import com.google.protobuf.ByteString;
import com.google.recaptchaenterprise.v1.AccountDefenderAssessment.AccountDefenderLabel;
import com.google.recaptchaenterprise.v1.Assessment;
import com.google.recaptchaenterprise.v1.CreateAssessmentRequest;
import com.google.recaptchaenterprise.v1.Event;
import com.google.recaptchaenterprise.v1.ProjectName;
import com.google.recaptchaenterprise.v1.RiskAnalysis.ClassificationReason;
import com.google.recaptchaenterprise.v1.TokenProperties;
import com.google.recaptchaenterprise.v1.UserId;
import com.google.recaptchaenterprise.v1.UserInfo;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.List;
import java.util.UUID;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

public class AccountDefenderAssessment {

  public static void main(String[] args)
      throws IOException, NoSuchAlgorithmException, InvalidKeyException {
    // TODO(developer): Replace these variables before running the sample.
    // projectId: Google Cloud Project ID
    String projectId = "project-id";

    // recaptchaSiteKey: Site key obtained by registering a domain/app to use recaptcha
    // services.
    String recaptchaSiteKey = "recaptcha-site-key";

    // token: The token obtained from the client on passing the recaptchaSiteKey.
    // To get the token, integrate the recaptchaSiteKey with frontend. See,
    // https://cloud.google.com/recaptcha-enterprise/docs/instrument-web-pages#frontend_integration_score
    String token = "recaptcha-token";

    // recaptchaAction: The action name corresponding to the token.
    String recaptchaAction = "recaptcha-action";

    // Unique ID of the user, such as email, customer ID, etc.
    String accountId = "default" + UUID.randomUUID().toString().split("-")[0];

    // User phone number
    String phoneNumber = "555-987-XXXX";

    // User email address
    String emailAddress = "john.doe@example.com";

    accountDefenderAssessment(projectId, recaptchaSiteKey, token, recaptchaAction, accountId, phoneNumber, emailAddress);
  }

  /**
   * This assessment detects account takeovers. See,
   * https://cloud.google.com/recaptcha-enterprise/docs/account-takeovers The input is the hashed
   * account id. Result tells if the action represents an account takeover. You can optionally
   * trigger a Multi-Factor Authentication based on the result.
   */
  public static void accountDefenderAssessment(
      String projectId,
      String recaptchaSiteKey,
      String token,
      String recaptchaAction,
      String accountId,
      String phoneNumber,
      String emailAddress)
      throws IOException {
    try (RecaptchaEnterpriseServiceClient client = RecaptchaEnterpriseServiceClient.create()) {

      // Set the properties of the event to be tracked.
      Event.Builder eventBuilder =
          Event.newBuilder()
              .setSiteKey(recaptchaSiteKey)
              .setToken(token);

      // Set the account id, email address and phone number (of the user).
      eventBuilder.setUserInfo(
        UserInfo.newBuilder()
          .setAccountId(accountId)
          .addUserIds(UserId.newBuilder().setEmail(emailAddress))
          .addUserIds(UserId.newBuilder().setPhoneNumber(phoneNumber)));

      Event event = eventBuilder.build();

      // Build the assessment request.
      CreateAssessmentRequest createAssessmentRequest =
          CreateAssessmentRequest.newBuilder()
              .setParent(ProjectName.of(projectId).toString())
              .setAssessment(Assessment.newBuilder().setEvent(event).build())
              .build();

      Assessment response = client.createAssessment(createAssessmentRequest);

      // Check integrity of the response token.
      if (!checkTokenIntegrity(response.getTokenProperties(), recaptchaAction)) {
        return;
      }

      // Get the reason(s) and the reCAPTCHA risk score.
      // For more information on interpreting the assessment,
      // see: https://cloud.google.com/recaptcha-enterprise/docs/interpret-assessment
      for (ClassificationReason reason : response.getRiskAnalysis().getReasonsList()) {
        System.out.println(reason);
      }
      float recaptchaScore = response.getRiskAnalysis().getScore();
      System.out.println("The reCAPTCHA score is: " + recaptchaScore);
      String assessmentName = response.getName();
      System.out.println(
          "Assessment name: " + assessmentName.substring(assessmentName.lastIndexOf("/") + 1));

      // Get the Account Defender result.
      com.google.recaptchaenterprise.v1.AccountDefenderAssessment accountDefenderAssessment =
          response.getAccountDefenderAssessment();
      System.out.println(accountDefenderAssessment);

      // Get Account Defender label.
      List<AccountDefenderLabel> defenderResult =
          response.getAccountDefenderAssessment().getLabelsList();
      // Based on the result, can you choose next steps.
      // If the 'defenderResult' field is empty, it indicates that Account Defender did not have
      // anything to add to the score.
      // Few result labels: ACCOUNT_DEFENDER_LABEL_UNSPECIFIED, PROFILE_MATCH,
      // SUSPICIOUS_LOGIN_ACTIVITY, SUSPICIOUS_ACCOUNT_CREATION, RELATED_ACCOUNTS_NUMBER_HIGH.
      // For more information on interpreting the assessment, see:
      // https://cloud.google.com/recaptcha-enterprise/docs/account-defender#interpret-assessment-details
      System.out.println("Account Defender Assessment Result: " + defenderResult);
    }
  }

  private static boolean checkTokenIntegrity(
      TokenProperties tokenProperties, String recaptchaAction) {
    // Check if the token is valid.
    if (!tokenProperties.getValid()) {
      System.out.println(
          "The Account Defender Assessment call failed because the token was: "
              + tokenProperties.getInvalidReason().name());
      return false;
    }

    // Check if the expected action was executed.
    if (!tokenProperties.getAction().equals(recaptchaAction)) {
      System.out.printf(
          "The action attribute in the reCAPTCHA tag '%s' does not match "
              + "the action '%s' you are expecting to score",
          tokenProperties.getAction(), recaptchaAction);
      return false;
    }
    return true;
  }
}

Interprete o veredito de risco dos eventos críticos do utilizador

Quando cria uma avaliação com o Account Defender ativado, o Account Defender devolve accountDefenderAssessment como parte da resposta da avaliação. O valor de accountDefenderAssessment ajuda a avaliar se a atividade do utilizador é legítima ou fraudulenta. Também devolve um ID de avaliação que tem de usar ao anotar eventos do utilizador.

O exemplo seguinte é uma resposta JSON de exemplo:

{
  "tokenProperties": {
    "valid": true,
    "hostname": "www.google.com",
    "action": "login",
    "createTime": "2019-03-28T12:24:17.894Z"
   },
  "riskAnalysis": {
    "score": 0.6,
  },
 "event": {
    "token": "TOKEN",
    "siteKey": "KEY_ID",
    "expectedAction": "USER_ACTION"
  },
  "name": "projects/PROJECT_ID/assessments/b6ac310000000000X",
  "accountDefenderAssessment": {
    labels: ["SUSPICIOUS_LOGIN_ACTIVITY"]
  }
}

O campo accountDefenderAssessment pode ter qualquer um dos seguintes valores:

Valor Descrição
SUSPICIOUS_LOGIN_ACTIVITY Indica que o pedido representa um risco elevado de roubo de credenciais ou roubo de conta.
SUSPICIOUS_ACCOUNT_CREATION Indica que o pedido representa um risco elevado de criação de contas abusivas.
PROFILE_MATCH

Indica que os atributos do utilizador correspondem aos atributos que foram vistos anteriormente para este utilizador específico. Este valor é um indicador de que este utilizador está num dispositivo fidedigno que foi usado anteriormente para aceder ao seu Website.

PROFILE_MATCH só é devolvido nos seguintes cenários:

  • Usa a autenticação multifator(MFA) ou a autenticação de dois fatores(2FA) e o reCAPTCHA Account Defender marca os perfis de utilizadores como fidedignos depois de os utilizadores passarem o desafio de MFA ou 2FA.
  • Anota as avaliações como LEGITIMATE ou PASSED_TWO_FACTOR e o reCAPTCHA Account Defender marca o perfil de utilizador correspondente como fidedigno.
RELATED_ACCOUNTS_NUMBER_HIGH Indica que o pedido tem um número elevado de contas relacionadas. Isto não implica necessariamente que a conta seja má, mas pode exigir uma investigação mais detalhada.

Anote eventos para otimizar o modelo específico do site

Para fornecer mais informações ao reCAPTCHA Account Defender e melhorar o modelo de deteção específico do seu site, tem de anotar os eventos que avaliou criando avaliações.

Anota uma avaliação enviando um pedido para o método projects.assessments.annotate com o ID da avaliação. No corpo desse pedido, inclua etiquetas que forneçam informações adicionais sobre um evento descrito na avaliação.

Para anotar uma avaliação, faça o seguinte:

  1. Determine as informações e as etiquetas a adicionar no corpo JSON do pedido consoante o seu exemplo de utilização.

    A tabela seguinte lista as etiquetas e os valores que pode usar para anotar eventos:

    Etiqueta Descrição Exemplo de pedido
    reasons Obrigatório. Uma etiqueta para apoiar as suas avaliações.

    Forneça detalhes de eventos em tempo real na etiqueta reasons em poucos segundos ou minutos após o evento, porque influenciam a deteção em tempo real.

    Para ver a lista de valores possíveis, consulte os valores de motivos.

    Exemplo: para detetar roubos de contas, anote se a palavra-passe introduzida estava correta com os valores CORRECT_PASSWORD ou INCORRECT_PASSWORD. Se implementou a sua própria MFA, pode adicionar os seguintes valores: INITIATED_TWO_FACTOR e PASSED_TWO_FACTOR ou FAILED_TWO_FACTOR.

          {
          "reasons": ["INCORRECT_PASSWORD"]
          }
        
    annotation Opcional. Uma etiqueta para indicar a legitimidade das avaliações.

    Forneça factos sobre eventos de início de sessão e registo para validar ou corrigir as suas avaliações de risco na etiqueta annotation.

    Valores possíveis: LEGITIMATE ou FRAUDULENT.

    Pode enviar estas informações em qualquer altura ou como parte de um trabalho em lote. No entanto, recomendamos que envie estas informações alguns segundos ou minutos após o evento, uma vez que influenciam a deteção em tempo real.

          {
           "annotation": "LEGITIMATE"
          }
    
      
    accountId

    Opcional. Uma etiqueta para associar um ID da conta a um evento.

    Se criou uma avaliação sem um ID da conta, use esta etiqueta para fornecer o ID da conta de um evento sempre que estiver disponível.

      {
       "accountId": "ACCOUNT_ID"
      }
  2. Crie um pedido de anotação com as etiquetas adequadas.

    Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

    • ASSESSMENT_ID: valor do campo name devolvido pela chamada projects.assessments.create.
    • ANNOTATION: opcional. Uma etiqueta para indicar se a avaliação é legítima ou fraudulenta.
    • REASONS: opcional. Motivos que fundamentam a sua anotação. Para ver a lista de valores possíveis, consulte os valores de motivos.
    • ACCOUNT_ID: opcional. O identificador que está exclusivamente associado à conta de utilizador no seu Website.

    Para mais informações, consulte as etiquetas para anotações.

    Método HTTP e URL:

    POST https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate

    Corpo JSON do pedido:

    {
      "annotation": ANNOTATION,
      "reasons": REASONS,
      "accountId": ACCOUNT_ID
    }
    

    Para enviar o seu pedido, escolha uma destas opções:

    curl

    Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate"

    PowerShell

    Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate" | Select-Object -Expand Content

    Deve receber um código de estado de êxito (2xx) e uma resposta vazia.

Exemplo de código

Java

Para se autenticar no reCAPTCHA, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.


import com.google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseServiceClient;
import com.google.protobuf.ByteString;
import com.google.recaptchaenterprise.v1.AnnotateAssessmentRequest;
import com.google.recaptchaenterprise.v1.AnnotateAssessmentRequest.Annotation;
import com.google.recaptchaenterprise.v1.AnnotateAssessmentRequest.Reason;
import com.google.recaptchaenterprise.v1.AnnotateAssessmentResponse;
import com.google.recaptchaenterprise.v1.AssessmentName;
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.util.UUID;

public class AnnotateAccountDefenderAssessment {

  public static void main(String[] args) throws IOException, NoSuchAlgorithmException {
    // TODO(developer): Replace these variables before running the sample.
    // projectID: GCloud Project id.
    String projectID = "project-id";

    // assessmentId: Value of the 'name' field returned from the CreateAssessment call.
    String assessmentId = "account-defender-assessment-id";

    // accountId: Set the accountId corresponding to the assessment id.
    String accountId = "default" + UUID.randomUUID().toString().split("-")[0];

    annotateAssessment(projectID, assessmentId, accountId);
  }

  /**
   * Pre-requisite: Create an assessment before annotating. Annotate an assessment to provide
   * feedback on the correctness of recaptcha prediction.
   */
  public static void annotateAssessment(
      String projectID, String assessmentId, String accountId) throws IOException {

    try (RecaptchaEnterpriseServiceClient client = RecaptchaEnterpriseServiceClient.create()) {
      // Build the annotation request.
      // For more info on when/how to annotate, see:
      // https://cloud.google.com/recaptcha-enterprise/docs/annotate-assessment#when_to_annotate
      AnnotateAssessmentRequest annotateAssessmentRequest =
          AnnotateAssessmentRequest.newBuilder()
              .setName(AssessmentName.of(projectID, assessmentId).toString())
              .setAnnotation(Annotation.LEGITIMATE)
              .addReasons(Reason.PASSED_TWO_FACTOR)
              .setAccountId(accountId)
              .build();

      // Empty response is sent back.
      AnnotateAssessmentResponse response = client.annotateAssessment(annotateAssessmentRequest);
      System.out.println("Annotated response sent successfully ! " + response);
    }
  }
}

Ative o reCAPTCHA Account Defender

Depois de configurar as suas páginas Web para o reCAPTCHA Account Defender, pode ativar o reCAPTCHA Account Defender.

  1. Na Google Cloud consola, aceda à página reCAPTCHA.

    Aceder ao reCAPTCHA

  2. Verifique se o nome do seu projeto é apresentado no seletor de recursos na parte superior da página.

    Se não vir o nome do seu projeto, clique no seletor de recursos e, de seguida, selecione o seu projeto.

  3. Clique em Definições.
  4. No painel Account defender, clique em Configurar.

  5. Na caixa de diálogo Configurar o Account Defender, clique em Ativar e, de seguida, clique em Guardar.

A ativação do reCAPTCHA Account Defender pode demorar algumas horas a propagar-se aos nossos sistemas. Depois de a ativação da funcionalidade ser propagada aos nossos sistemas, deve começar a receber respostas relacionadas com o Account Defender como parte das avaliações.

O que se segue?