Rilevare e impedire attività fraudolente relative agli account nelle applicazioni mobile

Questo documento spiega come utilizzare reCAPTCHA Account Defender per rilevare e prevenire attività fraudolente relative all'account nelle applicazioni mobile.

reCAPTCHA ti aiuta a proteggere le azioni critiche come l'accesso e pagamento. Tuttavia, esistono molte forme sottili di comportamento illecito dell'account che possono essere rilevati osservando il comportamento di uno specifico utente su un'applicazione mobile in un periodo di nel tempo. L'account defender di reCAPTCHA aiuta a identificare questi tipi di attività illecita tramite la creazione di un modello specifico per il sito affinché la tua applicazione mobile rilevi tendenza di comportamenti sospetti o un cambiamento nell'attività. Utilizzando il modello specifico per il sito, Account Defender di reCAPTCHA ti aiuta a rilevare quanto segue:

  • Attività sospette
  • Account con comportamenti simili
  • Richieste provenienti da dispositivi contrassegnati come attendibili per utenti specifici

In base all'analisi di reCAPTCHA account defender e alle modello specifico per il sito, puoi eseguire le seguenti azioni:

  • Limitare o disattivare gli account fraudolenti.
  • Impedire i tentativi di acquisizione dell'account.
  • Mitiga le violazioni degli account riuscite.
  • Concedere l'accesso solo alle richieste provenienti da account utente legittimi.
  • Riduci le difficoltà per gli utenti che accedono da uno dei loro dispositivi attendibili.

Prima di iniziare

  1. L'account defender di reCAPTCHA per le app mobile è accessibile dopo che attiva una verifica automatica della sicurezza aggiungendo un account di fatturazione al tuo progetto. Aggiungi un account di fatturazione al tuo progetto per integrare il tuo sito in questa funzionalità.
  2. Prepara l'ambiente per reCAPTCHA.
  3. Crea una chiave basata sul punteggio.

Configurare l'applicazione mobile per l'account defender di reCAPTCHA

L'account defender di reCAPTCHA richiede una comprensione completa le attività dell'account per consentire un rilevamento efficace. Per iniziare a fornire attività correlate all'account all'account defender di reCAPTCHA e per creare e migliorare il tuo modello specifico per il sito, segui questi passaggi:

  1. Integra reCAPTCHA con la tua applicazione mobile.

  2. Genera report sulle azioni critiche degli utenti.
  3. Valutare gli eventi utente critici.
  4. Annota gli eventi utente per ottimizzare il modello specifico del tuo sito.

Report sulle azioni critiche degli utenti

Per rilevare schemi di attività sospette e comprendere meglio i pattern di attività tipici sul tuo sito, account reCAPTCHA il difensore ha bisogno di informazioni sulle azioni critiche dell'utente. Per ogni azione dell'app protetta da reCAPTCHA, chiama il metodo execute() con RecaptchaAction. Per ulteriori informazioni su execute() e RecaptchaAction, consulta quanto segue:

reCAPTCHA fornisce un insieme di azioni integrate e, se necessario, puoi creare azioni personalizzate.

La seguente tabella elenca i nomi delle azioni che puoi utilizzare quando segnali le azioni critiche degli utenti.

Nome azione Evento o azione avviata dall'utente
LOGIN

Accedi all'applicazione mobile.

SIGNUP

Registrati nell'applicazione mobile.

Valutare gli eventi utente critici

Quando chiami execute() per un'azione utente, viene generato un token. Per gli eventi utente critici, come accessi riusciti e non riusciti, registrazioni e azioni degli utenti che hanno eseguito l'accesso, crea una valutazione per valutare i risultati della chiamata execute(). La ti fornisce un esito di rischio, che puoi utilizzare per decidere come gestire attività potenzialmente fraudolente. Ad esempio, puoi bloccare le richieste sospette, contestare gli accessi rischiosi e indagare sugli account di tuo interesse.

L'account defender di reCAPTCHA richiede che tu fornisca un identificatore di account stabile a attribuire l'attività utente, come richieste di accesso, richieste di accesso e richieste di registrazione, a un per un account specifico. Questo consente all'account defender di reCAPTCHA di comprendere l'attività utente pattern di attività e verrà creato un modello di attività per ciascun account al fine di rilevare meglio le per via del traffico.

Scegli un identificatore account stabile accountId che non viene modificato spesso dall'utente e fornirlo alla valutazione nel projects.assessments.create. Questo identificatore account stabile deve avere lo stesso valore per tutti gli eventi relativi allo stesso utente. Puoi fornire quanto segue come identificatore account:

Identificatori degli utenti

Se ogni account può essere associato in modo univoco a un nome utente, un indirizzo email o un numero di telefono stabile, puoi utilizzarlo come accountId. Quando fornisci questi identificatori cross-site (identificatori che possono essere riutilizzati su più siti), reCAPTCHA utilizza queste informazioni per migliorare la protezione dei tuoi account utente in base a modelli cross-site, segnalando gli identificatori di account illeciti e utilizzando la conoscenza dei pattern di abusi cross-site correlati a questi identificatori.

In alternativa, se hai un ID utente interno associato in modo univoco a ogni account, puoi indicalo come accountId.

Sottoposte ad hashing o criptate

Se non disponi di un ID utente interno associato in modo univoco a ogni account, puoi trasformare qualsiasi identificativo stabile in un identificativo account opaco e specifico per il sito. Questo identificatore è ancora necessaria all'account defender di reCAPTCHA per comprendere l'attività utente pattern e rileva comportamenti anomali, ma non viene condiviso con altri siti.

Scegli qualsiasi identificatore dell'account stabile e rendilo opaco prima di inviarlo a reCAPTCHA entro il giorno usando la crittografia o l'hashing:

  • crittografia (opzione consigliata): cripta l'identificatore dell'account utilizzando un metodo di crittografia deterministico che produce un testo criptato stabile. Per istruzioni dettagliate, vedi criptare i dati in modo deterministico. Quando scegli la crittografia simmetrica rispetto all'hashing, non è necessario mantenere una mappatura tra gli identificatori utente e i corrispondenti identificatori utente opaci. Decripta gli identificatori opachi restituiti da reCAPTCHA per convertirli nel identificatore utente.

  • hashing: ti consigliamo di eseguire l'hashing dell'identificatore dell'account utilizzando il metodo SHA256-HMAC con un valore salt personalizzato a tua scelta. Poiché gli hash sono solo unidirezionali, devi mantenere una mappatura tra gli hash generati e gli identificatori utente per consentirti di mappare gli hash generati identificatore di account restituiti agli account originali.

Oltre a fornire un identificatore account stabile per tutte le richieste relative all'account, puoi fornire identificatori account aggiuntivi, potenzialmente non stabili, per alcune richieste specifiche. Identificatori dell'account specifici per il contesto forniti in aggiunta alla guida di accountId L'account defender di reCAPTCHA comprende meglio l'attività utente e rileva l'account tentativi di violazione per proteggere gli account utente. Quando fornisci identificatori aggiuntivi, reCAPTCHA utilizza queste informazioni per migliorare la protezione dei tuoi account utente in base ai seguenti dati: cross-site mediante la segnalazione di identificatori di account illeciti e l'utilizzo della conoscenza di comportamenti illeciti tra siti pattern correlati a questi identificatori. Ad esempio, puoi fornire quanto segue:

  • Il nome utente, l'indirizzo email o il numero di telefono utilizzato come handle di accesso per le richieste di accesso

  • L'indirizzo email o il numero di telefono verificato per una richiesta di autenticazione a più fattori

  • Un indirizzo email o un numero di telefono (principale o secondario) fornito dall'utente durante una richiesta di aggiornamento dell'account

  • Gli indirizzi email e i numeri di telefono forniti dall'utente durante una registrazione richiesta

Aggiungi l'identificatore dell'account stabile scelto al parametro accountId nel metodo projects.assessments.create per tutte le richieste relative all'account. Se vuoi, fornisci identificatori account aggiuntivi per le richieste pertinenti utilizzando il campo userIds nella valutazione.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • TOKEN: token restituito dalla chiamata execute()
  • KEY_ID: chiave reCAPTCHA associata all'app
  • ACCOUNT_ID: l'identificatore associato in modo univoco all'account utente per un account utente della tua app
  • EMAIL_ADDRESS: facoltativo. Un indirizzo email associato a questa richiesta, se presente
  • PHONE_NUMBER: facoltativo. Un numero di telefono associato a questa richiesta, se presente
  • USERNAME: facoltativo. Un nome utente associato a questa richiesta, se presente

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

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

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

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

Salva il corpo della richiesta in un file denominato request.json. ed esegui questo 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

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "tokenProperties": {
    "valid": true,
    "androidPackageName": "com.example.app" or "iosBundleId": "com.example.app",
    "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"]
  }
}

Esempio di codice

Java

Per eseguire l'autenticazione a reCAPTCHA, configura le credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


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;
  }
}

Interpreta il verdetto di rischio degli eventi utente critici

Quando crei una valutazione con account defender abilitato, account defender restituisce accountDefenderAssessment come parte della risposta della valutazione. Il valore di accountDefenderAssessment aiuta valuti se l'attività utente è legittima o fraudolenta. Restituisce inoltre un ID valutazione da utilizzare per annotare gli eventi utente.

Di seguito è riportato un esempio di risposta JSON:

{
  "tokenProperties": {
    "valid": true,
    "androidPackageName": "com.example.app" or "iosBundleId": "com.example.app",
    "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"]
  }
}

Il campo accountDefenderAssessment può avere uno qualsiasi dei seguenti valori:

Valore Descrizione
SUSPICIOUS_LOGIN_ACTIVITY Indica che la richiesta rappresenta un rischio elevato di stuffing delle credenziali o di compromissione dell'account.
SUSPICIOUS_ACCOUNT_CREATION Indica che la richiesta rappresenta un rischio elevato di creazione di account illeciti.
PROFILE_MATCH

Indica che gli attributi dell'utente corrispondono alla che sono stati visti in precedenza per l'utente in questione. Questo valore indica che l'utente utilizza un dispositivo attendibile che è stato utilizzato in precedenza per accedere alla tua applicazione mobile.

PROFILE_MATCH viene restituito solo nei seguenti scenari:

  • Utilizzi l'autenticazione a più fattori (MFA) o a due fattori (2FA) e Account Defender di reCAPTCHA contrassegna i profili utente come attendibili dopo che gli utenti hanno superato la verifica MFA o 2FA.
  • Annoti le valutazioni come LEGITIMATE o PASSED_TWO_FACTOR e il difensore dell'account reCAPTCHA contrassegna il corrispondente profilo utente come attendibile.

Annota gli eventi per ottimizzare il modello specifico per il tuo sito

Per fornire ulteriori informazioni ad Account Defender di reCAPTCHA e migliorare il modello di rilevamento specifico per il sito, devi annotare gli eventi che hai valutato creando valutazioni.

Puoi annotare un test inviando una richiesta al projects.assessments.annotate con l'ID valutazione. Includi le etichette nel corpo della richiesta fornendo ulteriori informazioni su un evento descritto nella valutazione.

Per aggiungere annotazioni a una valutazione:

  1. Determina le informazioni e le etichette da aggiungere nel corpo JSON della richiesta a seconda del caso d'uso.

    La seguente tabella elenca le etichette e i valori che puoi utilizzare per inserire annotazioni eventi:

    Etichetta Descrizione Esempio di richiesta
    reasons Obbligatorio. Un'etichetta a supporto delle tue valutazioni.

    Fornisci i dettagli degli eventi in tempo reale nell'etichetta reasons entro pochi secondi o minuti dall'evento, in quanto influiscono sul rilevamento in tempo reale.

    Per l'elenco valori possibili, consulta i valori dei motivi.

    Esempio: per rilevare le acquisizioni di account, annota se la password inserita era corretta con i valori CORRECT_PASSWORD o INCORRECT_PASSWORD. Se hai implementato la tua autenticazione a due fattori, puoi aggiungere i seguenti valori: INITIATED_TWO_FACTOR e PASSED_TWO_FACTOR o FAILED_TWO_FACTOR.

          {
          "reasons": ["INCORRECT_PASSWORD"]
          }
        
    annotation Facoltativo. Un'etichetta per indicare la legalità delle valutazioni.

    Fornisci informazioni su accesso e eventi di registrazione per convalidare o correggere le valutazioni del rischio nel Etichetta annotation.

    Valori possibili: LEGITIMATE o FRAUDULENT.

    Puoi inviare queste informazioni in qualsiasi momento o nell'ambito di un job batch. Tuttavia, ti consigliamo di inviare queste informazioni in pochi secondi o minuti al termine dell'evento perché influenzano il rilevamento in tempo reale.

          {
           "annotation": "LEGITIMATE"
          }
    
      
    accountId

    Facoltativo. Un'etichetta per associare un ID account a un evento.

    Se hai creato una valutazione senza un ID account, utilizza questa etichetta per fornire l'account L'ID di un evento, ogni volta che è disponibile.

      {
       "accountId": "ACCOUNT_ID"
      }
  2. Crea una richiesta di annotazione con le etichette appropriate.

    Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

    • ASSESSMENT_ID: valore del campo name restituito dalla chiamata projects.assessments.create.
    • ANNOTATION: facoltativo. Un'etichetta per indicare se la valutazione è legittima o fraudolenta.
    • REASONS: facoltativo. Motivi a sostegno dell'annotazione. Per l'elenco dei valori possibili, consulta valori reasons.
    • ACCOUNT_ID: facoltativo. L'identificatore associato in modo univoco all'account utente nella tua app.

    Per ulteriori informazioni, consulta le Etichette per le annotazioni.

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

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

    Per inviare la richiesta, scegli una delle seguenti opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

    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

    Salva il corpo della richiesta in un file denominato request.json. ed esegui questo 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

    Dovresti ricevere un codice di stato di operazione riuscita (2xx) e una risposta vuota.

Esempio di codice

Java

Per eseguire l'autenticazione a reCAPTCHA, configura le credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


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);
    }
  }
}

Attivare l'account defender di reCAPTCHA

Dopo aver configurato la tua applicazione mobile per l'account defender di reCAPTCHA, puoi abilitare il servizio di difesa dell'account reCAPTCHA.

  1. Nella console Google Cloud, vai alla pagina reCAPTCHA.

    Vai a reCAPTCHA

  2. Verifica che il nome del progetto venga visualizzato nel selettore di risorse nella parte superiore della pagina.

    Se non vedi il nome del progetto, fai clic sul selettore di risorse e poi seleziona il progetto.

  3. Fai clic su Impostazioni.
  4. Nel riquadro Difensore dell'account, fai clic su Configura.

  5. Nella finestra di dialogo Configura Account Defender, fai clic su Attiva e poi su Salva.

Potrebbero essere necessarie alcune ore prima che il difensore dell'account reCAPTCHA la propagazione ai nostri sistemi. Una volta che l'abilitazione della funzionalità nei nostri sistemi, dovresti iniziare a ricevere risposte relative all'account, il difensore nell'ambito delle valutazioni.

Passaggi successivi