Condividi tramite


Impostare la protezione di account cliente

Microsoft Dynamics 365 Fraud Protection include funzionalità di protezione degli account che consentono di determinare se si stanno verificando attività sospette nell'ecosistema aziendale. Queste funzionalità includono strumenti di valutazione del rischio che è possibile utilizzare per bloccare o contrastare tentativi fraudolenti di creare account o compromettere account esistenti. Di seguito sono riportati alcuni esempi.

  • API per la valutazione del rischio in tempo reale
  • Una regola e un'esperienza di elenco che è possibile utilizzare per ottimizzare la strategia dei rischi in base alle esigenze aziendali
  • I dashboard di monitoraggio che è possibile utilizzare per monitorare l'efficacia e le tendenze di Fraud Protection nell'ecosistema

La protezione degli account copre tre tipi di eventi del ciclo di vita dell'account: creazione account, accesso account e valutazione personalizzata. Per ogni tipo di evento, esistono più linee di difesa:

  • Rilevamento efficace dei robot: quando Fraud Protection rileva un tentativo automatico di utilizzare un elenco di credenziali compromesse o forza bruta per creare o modificare account, la prima linea di difesa è un rilevamento dei robot dinamico e potente. Questa intelligenza artificiale adattiva avanzata genera rapidamente un punteggio che viene mappato alla probabilità che un robot stia avviando l'evento.
  • Valutazione rafforzata in tempo reale: come linea di difesa successiva, Fraud Protection utilizza modelli di intelligenza artificiale per generare un punteggio di valutazione del rischio. È possibile utilizzare questo punteggio con regole per approvare, contestare, rifiutare o esaminare i tentativi di accesso e registrazione, in base alle esigenze aziendali.

Obiettivi di questo documento

Questo documento descrive le seguenti attività:

Prerequisiti

Prima di iniziare le attività in questo documento, è necessario completare le seguenti operazioni:

Passaggio 1: implementare API di protezione di account

Per utilizzare la gamma completa delle funzionalità di Fraud Protection, inviare i dati sulle transazioni alle API in tempo reale.

  • Nell'esperienza di valutazione è possibile analizzare i risultati dell'uso di Fraud Protection.
  • Nell'esperienza di protezione, è possibile rispettare le decisioni basate sulle regole configurate.

A seconda di come si intende utilizzare Fraud Protection, è possibile usare API di protezione di account differenti. Esempi di queste API includono: AccountCreation, AccountLogin, AccountCreationStatus, AccountLoginStatus, AccountUpdate, Label e Custom Events.

Per ulteriori informazioni sugli eventi supportati, vedere API di Dynamics 365 Fraud Protection.

Passaggio 2: Creare app Microsoft Entra

Importante

Per completare questo passaggio, è necessario essere un amministratore di applicazioni, un amministratore di applicazioni cloud o un amministratore globale nel tenant di Microsoft Entra.

Per acquisire i token necessari per chiamare le API, usare Fraud Protection per configurare le applicazioni Microsoft Entra.

Configurare un'app Microsoft Entra

  1. Nel portale di Fraud Protection, nella barra di navigazione a sinistra selezionare Dati e quindi selezionare Gestione API.

  2. Nella pagina Gestione API, selezionare Configurazione.

  3. Selezionare Crea applicazione e quindi compilare i campi per creare l'app. I campi seguenti sono obbligatori:

    • Nome visualizzato dell'applicazione - Immettere un nome descrittivo per l'app. La lunghezza massima consentita è di 93 caratteri.

    • Ambiente - Selezionare l'endpoint di produzione.

    • Metodo di autenticazione - Selezionare se utilizzare un certificato o un segreto (protetto con password) per l'autenticazione.

      • Selezionare Certificato, quindi Scegli file per caricare la chiave pubblica. Quando si acquisiscono i token, sarà necessaria la chiave privata corrispondente.
      • Selezionare Segreto per generare automaticamente una password dopo la creazione dell'applicazione.
  4. Al termine della compilazione dei campi, selezionare Crea applicazione.

    Nella pagina di conferma verrà riepilogato il nome dell'app, l'ID e l'identificazione digitale del certificato o il segreto, a seconda della modalità di autenticazione selezionata.

Importante

Salvare le informazioni relative al segreto o identificazione digitale del certificato per riferimento futuro. Questa informazione verrà mostrata solo una volta.

Creare app aggiuntive

È possibile creare il numero di app necessario per eseguire le chiamate API in ognuno degli ambienti di produzione.

  1. Nella scheda Configurazione, selezionare Crea un'altra applicazione.
  2. Compila i campi per creare la tua app, quindi seleziona Crea applicazione.

Chiamare le API in tempo reale di Fraud Protection

Utilizzare le informazioni in questa sezione per integrare i sistemi con Fraud Protection.

ID e informazioni necessarie

  • Endpoint API - L'URI per l'ambiente appare nel riquadro Informazioni sull'account nel dashboard di Fraud Protection.
  • ID directory (tenant) - L'ID directory è l'identificatore univoco globale (GUID) per il dominio di un tenant in Azure. Compare nel portale di Azure e nel riquadro Informazioni sull'account nel dashboard di Fraud Protection.
  • ID applicazione (client): l'ID applicazione identifica l'app Microsoft Entra creata per chiamare le API. È possibile trovare questo ID nella pagina di conferma che appare dopo aver selezionato Crea applicazione nella pagina Gestione API. È disponibile anche in seguito, sotto Registrazioni app nel portale di Azure. Ci sarà un ID per ogni app creata.
  • Identificazione digitale o segreto del certificato - È possibile trovare l'identificazione digitale o il segreto del certificato nella pagina di conferma che appare dopo aver selezionato Crea applicazione nella pagina Gestione API.
  • ID istanza - L'ID istanza è l'identificatore univoco globale (GUID) per l'ambiente in Fraud Protection. Appare nel riquadro Integrazione nel dashboard di Fraud Protection.

Generare un token di accesso

È necessario generare questo token e fornirlo con ogni chiamata API. Si noti che i token di accesso hanno una durata limitata. È consigliabile memorizzare ogni token di accesso nella cache e riutilizzarlo fino a che non è il momento di ottenerne uno nuovo. L'esempio di codice C# seguente mostra come è possibile acquisire un token utilizzando il certificato o il segreto. Sostituire i segnaposto con informazioni personalizzate.

Identificazione personale CERTIFICATO

   public async Task<string> AcquireTokenWithCertificateAsync()
     {
          var x509Cert = CertificateUtility.GetByThumbprint("<Certificate thumbprint>");
          var clientAssertion = new ClientAssertionCertificate("<Client ID>", x509Cert);
          var context = new AuthenticationContext("<Authority URL. Typically https://login.microsoftonline.com/[Directory_ID]>");
          var authenticationResult = await context.AcquireTokenAsync("<API endpoint>", clientAssertion);
          
          return authenticationResult.AccessToken;
     }

Segreto

   public async Task<string> AcquireTokenWithSecretAsync()
     {
          var clientAssertion = new ClientCredential("<Client ID>", "<Client secret>");
          var context = new AuthenticationContext("<Authority URL. Typically https://login.microsoftonline.com/[Directory_ID]>");
          var authenticationResult = await context.AcquireTokenAsync("<API endpoint>", clientAssertion);
          
          return authenticationResult.AccessToken;
     }

Risposta

In background, il codice precedente genera una richiesta HTTP e riceve una risposta simile al seguente esempio.

   HTTP/1.1 200 OK
     Content-Type: application/json; charset=utf-8
     Date: <date>
     Content-Length: <content length>
     {
          "token_type":"Bearer",
          "expires_in":"3599",
          "ext_expires_in":"3599",
          "expires_on":"<date timestamp>",
          "not_before":"<date timestamp>",
          "resource":"https://api.dfp.dynamics.com",
          "access_token":"<your access token; e.g.: eyJ0eXA...NFLCQ>"
     }

Per ulteriori informazioni sui token di accesso, vedere la seguente documentazione di Azure:

Chiamare le API

  1. Passare le seguenti intestazioni HTTP obbligatorie per ogni richiesta.
Nome intestazione Valore intestazione
Autorizzazione

Utilizzare il seguente formato per questa intestazione: Bearer accesstoken

In questo formato, accesstoken è il token restituito dall'ID Microsoft Entra.

x-ms-correlation-id Invia un nuovo valore GUID in ogni set di chiamate API effettuate insieme.
Content-Type application/json
x-ms-dfpenvid Invia il valore GUID del tuo ID istanza.
  1. Genera un payload basato su evento. Compila i dati evento con le informazioni pertinenti dal sistema.

    Per ulteriori informazioni sugli eventi supportati, vedere API di Dynamics 365 Fraud Protection.

  2. Combina l'intestazione (che include il token di accesso) e il payload e quindi inviali all'endpoint di Fraud Protection (l'endpoint API è l'URI per l'ambiente e appare nel riquadro Informazioni sull'account nel dashboard di Fraud Protection).

Per ulteriori informazioni sull'API, vedere API di Dynamics 365 Fraud Protection.

Passaggio 3: comprendere eventi di protezione di account

Creazione account

Usare l'evento Creazione account per inviare informazioni e contesto su un tentativo in arrivo di creare un nuovo account. La risposta contiene una decisione per l'API Creazione account.

URI: <Endpoint API>/v1.0/action/account/create/<signUpId>

Il valore di signUpId deve essere univoco per richiesta. Deve corrispondere al valore nella sezione dei metadati nell'esempio che segue.

Importante

Il valore di deviceContextId deve corrispondere al valore di session_id nelle impostazioni della funzionalità di creazione impronta digitale dispositivo.

Payload di esempio

   {
          "device": {
               "deviceContextId": "2cf391cc-62d2-47d4-a9c1-78ec025293da",
               "ipAddress": "192.168.8.214",
               "provider": "DFPFingerprinting",
               "externalDeviceId": "1234567890",
               "externalDeviceType": "Tablet"
     },
     "user": {
          "userId": " cf4e1d39-1100-4791-a6cf-98580f3d91cb",
          "userType": "Consumer",
          "username": "kayla@contoso.com",
          "firstName": "Kayla",
          "lastName": "Goderich",
          "countryRegion": "US",
          "zipCode": "44329",
          "timeZone": "-08:00",
          "language": "en-us",
          "membershipId": " CC004567",
          "isMembershipIdUsername": false
     },
     "email": [
          {
          "emailType": "Primary",
          "emailValue": "kayla@contoso.com",
          "isEmailValidated": true,
          "emailValidatedDate": "2018-11-27T15:12:26.9733817-08:00",
          "isEmailUsername": true
          }
     ],
     "phone": [
          {
               "phoneType": "Alternative",
               "phoneNumber": "1-4985550190",
               "isPhoneNumberValidated": true,
               "phoneNumberValidatedDate": "2018-11-27T15:12:26.9739451-08:00",
               "isPhoneUsername": false
          }
     ],
     "address": [
          {
               "addressType": "Primary",
               "firstName": "Kayla",
               "lastName": "Goderich",
               "phoneNumber": "1-4985550190",
               "street1": "0123 Bechtelar Loop",
               "street2": "",
               "street3": "",
               "city": "Kubtown",
               "state": "SC",
               "district": "",
               "zipCode": "44329",
               "countryRegion": "US"
          }
     ],
     "paymentInstruments": [
          {
               "merchantPaymentInstrumentId": "6ac8406f-128a-41ce-a02d-1bbaa23fbe15",
               "type": "Credit Card",
               "creationDate": "2020-03-24T13:23:32.3247803-07:00",
               "updateDate": "2020-03-24T13:23:32.3248203-07:00"
          }
     ],
     "ssoAuthenticationProvider": {
          "authenticationProvider": "MerchantAuth",
          "displayName": "Kayla Goderich"
     },
     "metadata": {
          "signUpId": "f5085b48-0f9d-47f5-85d1-2c95e7842d39",
          "customerLocalDate": "2020-02-25T15:12:26.9653975-08:00",
          "assessmentType": "Protect",
          "trackingId": "d65544f0-f8b4-4249-a5e0-94b32a25548f",
          "merchantTimeStamp": "2020-11-27T15:12:26.9721842-08:00"
     },
     "name": "AP.AccountCreation",
     "version": "0.5"
     }

Accesso account

Usare l'evento Accesso account per inviare informazioni e contesto su un tentativo in arrivo di creare un nuovo accesso account. La risposta contiene una decisione per l'API Accesso account.

URI: <Endpoint API>/v1.0/action/account/login/<userId>

Il valore di userId deve corrispondere al valore nel payload. Ogni utente deve avere un valore univoco. Un valore GUID può essere utilizzato qui.

Importante

Il valore di deviceContextId deve corrispondere al valore di session_id nelle impostazioni della funzionalità di creazione impronta digitale dispositivo.

Payload di esempio

  {
     "device": {
          "deviceContextId": "2ef10376-2ba8-4f36-a911-da438e5e5e27",
          "ipAddress": "192.168.8.214",
          "provider": "DFPFingerprinting",
          "externalDeviceId": "1234567890",
     "externalDeviceType": "Computer"
     },
     "user": {
          "userId": "cf4e1d39-1100-4791-a6cf-98580f3d91cb",
          "userType": "Consumer",
          "username": "kayla@contoso.com",
          "firstName": "Kayla",
          "lastName": "Goderich",
          "countryRegion": "US",
          "zipCode": "44329",
          "timeZone": "-08:00",
          "language": "en-us",
          "membershipId": "CC004567",
          "isMembershipIdUsername": false
     },
     "recentUpdate": {
          "lastPhoneNumberUpdateDate": "2018-11-127T15:22:42.3412611-08:00",
          "lastEmailUpdateDate": "2018-11-127T15:22:42.3412611-08:00 ",
          "lastAddressUpdateDate": "2018-11-127T15:22:42.3412611-08:00",
          "lastPaymentInstrumentUpdateDate": "2018-11-127T15:22:42.3412611-08:00"
     },
     "ssoAuthenticationProvider": {
          "authenticationProvider": "MerchantAuth",
          "displayName": "Kayla Goderich"
     },
     "metadata": {
          "LogInId": "a15d4a5d-fadc-49ab-8022-712fec597e22",
          "customerLocalDate": "2020-02-25T15:22:42.3397533-08:00",
          "assessmentType": "Protect",
          "trackingId": "a14ebdca-9447-49b4-951e-26f6ccc4445c",
          "merchantTimeStamp": "2020-11-27T15:22:42.3405921-08:00"
     },
     "name": "AP.AccountLogin",
     "version": "0.5"
  }

Stato creazione account

Usare l'evento Stato creazione account per inviare informazioni e contesto su un tentativo in arrivo di creare un nuovo stato account. La risposta contiene una decisione per l'API Stato creazione account.

URI: <Endpoint API>/v1.0/observe/account/create/status/<signUpId>

Il valore di userId deve corrispondere al valore nel payload. Ogni utente deve avere un valore univoco. Un valore GUID può essere utilizzato qui.

Payload di esempio

  {
     "metadata":{
          "signUpId":"a6221a3f-c38c-429e-8fde-3026d8c29ed3",
          "userId":"34f47dc4-9781-4033-99fd-185649c4b001",
          "trackingId":"697a6bee-2d30-4132-92a6-c137aaf49c0a",
          "merchantTimeStamp":"2020-04-03T13:23:32.3226335-07:00"
     },
     "statusDetails":{
          "statusType":"Rejected",
          "reasonType":"ChallengeAbandoned",
          "challengeType":"Email",
          "statusDate":"2020-04-03T13:23:32.3817714-07:00"
     },
     "name":"AP.AccountCreation.Status",
     "version":"0.5"
  }

Stato accesso login

Usare l'evento Stato accesso account per inviare informazioni e contesto su un tentativo in arrivo di creare un nuovo stato di accesso account. La risposta contiene una decisione per l'API Stato accesso account.

URI: <Endpoint API>/v1.0/observe/account/login/status/<userId>

Il valore di signUpId deve corrispondere al valore nel payload. Ogni utente deve avere un valore univoco. Un valore GUID può essere utilizzato qui.

Payload di esempio

  {
     "metadata":{
          "loginId":"dc4ea331-a6e5-4aa0-8eba-16b4d516a07d",
          "userId":"34f47dc4-9781-4033-99fd-185649c4b001",
          "trackingId":"dcd65c87-d3db-4a42-8ed3-3e59f443b994",
          "merchantTimeStamp":"2020-04-03T13:23:32.3759321-07:00"
     },
     "statusDetails":{
          "statusType":"Rejected",
          "reasonType":"ChallengeAbandoned",
          "challengeType":"Email",
          "statusDate":"2020-04-03T13:23:32.3884589-07:00"
     },
     "name":"AP.AccountLogin.Status",
     "version":"0.5"
  }

Etichetta

Utilizzare l'evento Etichetta per inviare ulteriori informazioni a Fraud Protection oltre ai dati che informano le funzionalità di monitoraggio e Analista di frodi virtuali. L'API Etichetta fornisce informazioni aggiuntive per il training del modello in base a un set aggiuntivo di segnali di frodi. Invia inoltre informazioni sulle transazioni, dettagli sull'account o sullo strumento di pagamento e sugli storni.

URI: <Endpoint API>/v1.0/label/account/create/<userId>

Il valore di userId deve corrispondere al valore nell'API Accesso account.

Payload di esempio

  {
     "metadata": {
          "name": "AP.Label.Metadata",
          "userId": "34f47dc4-9781-4033-99fd-185649c4b001",
          "merchantTimeStamp": "2020-06-14T21:53:27.8822492-08:00",
          "trackingId": "34f47dc4-9781-4033-99fd-185649c4b001"
     },
     "label": {
          "eventTimeStamp": "2020-02-21T21:53:27.8822492-08:00",
          "labelObjectType": "Account",
          "labelObjectId": "userid",
          "labelSource": "ManualReview",
          "labelState": "AccountCompromised",
          "labelReasonCode": "AccountFraud"
     },
     "name": "AP.Label",
     "version": "0.5"
     }
     public enum LabelObjectTypeName
          {
               Purchase,
               AccountCreation,
               AccountLogin,
               AccountUpdate,
               CustomFraudEvaluation,
               Account,
               PaymentInstrument,
               Email
          }
     public enum LabelSourceName
          {
               CustomerEscalation,
               Chargeback,
               TC40_SAFE,
               ManualReview,
               Refund,
               OfflineAnalysis,
               AccountProtectionReview
          }
     public enum LabelStateName
          {
               InquiryAccepted,
               Fraud,
               Disputed,
               Reversed,
               Abuse,
               ResubmittedRequest,
               AccountCompromised,
               AccountNotCompromised
          }
     public enum LabelReasonCodeName
          {
               ProcessorResponseCode,
               BankResponseCode,
               FraudRefund,
               AccountTakeOver,
               PaymentInstrumentFraud,
               AccountFraud,
               Abuse,
               FriendlyFraud,
               AccountCredentialsLeaked,
               PassedAccountProtectionChecks
          }

Congratulazioni. Il training è stato completato ed è ora possibile utilizzare le funzionalità di protezione di account di Fraud Protection.

Passaggi successivi

Per informazioni su come accedere e utilizzare altre funzionalità di Fraud Protection, vedere i seguenti documenti: