Delen via


Bescherming van klantrekeningen instellen

Microsoft Dynamics 365 Fraud Protection bevat mogelijkheden voor accountbeveiliging zodat u beter kunt beoordelen of er verdachte activiteiten in uw bedrijf plaatsvinden. Tot deze mogelijkheden behoren opties voor risicobeoordeling die u kunt gebruiken voor het blokkeren of bevragen van frauduleuze pogingen om accounts te maken of bestaande accounts te hacken. Hieronder volgen een aantal voorbeelden:

  • API's voor realtime risicobeoordeling
  • Een regel- en lijstervaring die u kunt gebruiken om uw risicostrategie te optimaliseren in overeenstemming met uw bedrijfsbehoeften
  • Controledashboards die u kunt gebruiken om de effectiviteit van fraudebescherming en tendensen in uw ecosysteem te controleren

Accountbeveiliging bestaat uit drie typen accountlevenscyclusgebeurtenissen: account maken, aanmelding bij een account en aangepaste beoordeling. Voor elk type gebeurtenis zijn er meerdere verdedigingslinies:

  • Efficiënte botdetectie: wanneer Fraud Protection een automatische poging ontdekt om een lijst met gemanipuleerde referenties of brute kracht te gebruiken om accounts te maken of te wijzigen, is de eerste verdedigingslinie dynamische en krachtige bot-detectie. Met deze geavanceerde adaptieve kunstmatige intelligentie (AI) genereert u snel een score die is gekoppeld aan de kans dat een bot de gebeurtenis initieert.
  • Realtime beoordeling: als volgende verdedigingslinie gebruikt Fraud Protection AI-modellen om een risicobeoordelingsscore te genereren. U kunt deze score met regels gebruiken voor het goedkeuren, bevragen, afwijzen of beoordelen van aanmeldingspogingen op basis van bedrijfsbehoeften.

Doelstellingen voor dit document

Dit document begeleidt u door de volgende activiteiten:

Vereisten

Voordat u de activiteiten in dit document start, moet u de volgende taken uitvoeren:

Stap 1: API's voor accountbeveiliging implementeren

Als u de volledige reeks functies in Fraud Protection wilt gebruiken, verzendt u uw transactiegegevens naar de realtime API's.

  • Met de 'evaluate'-ervaring kunt u de resultaten van het gebruik van Fraud Protection analyseren.
  • Met de 'protect'-ervaring kunt u beslissingen bevestigen op basis van de regels die u hebt geconfigureerd.

U kunt verschillende API's voor accountbeveiliging gebruiken, afhankelijk van de manier waarop u Fraud Protection wilt gebruiken. Voorbeelden van deze API's zijn: AccountCreation, AccountLogin, AccountCreationStatus, AccountLoginStatus, AccountUpdate, Label en Aangepaste gebeurtenissen.

Zie Dynamics 365 Fraud Protection-API voor meer informatie over ondersteunde gebeurtenissen.

Stap 2: Microsoft Entra-apps maken

Belangrijk

Als u deze stap wilt voltooien, moet u een toepassingsbeheerder, een cloudtoepassingsbeheerder of een globale beheerder in uw Microsoft Entra-tenant zijn.

Als u de tokens wilt verkrijgen die nodig zijn om de API's aan te roepen, gebruikt u Fraudebeveiliging om Microsoft Entra-toepassingen te configureren.

Een Microsoft Entra-app configureren

  1. Selecteer in de Fraud Protection-portal, in de linkernavigatie, de optie Gegevens en selecteer vervolgens API-beheer.

  2. Selecteer op de pagina API-beheer de optie Configuratie.

  3. Selecteer Toepassingen maken en vul vervolgens de velden in om uw app te maken. Het volgende velden zijn vereist:

    • Weergavenaam van toepassing: voer een beschrijvende naam voor de toepassing in. De tekst mag maximaal 93 tekens lang zijn.

    • Omgeving : selecteer het productie-eindpunt.

    • Verificatiemethode: selecteer of u voor verificatie een certificaat of een geheim (met wachtwoord beveiligd) wilt gebruiken.

      • Selecteer Certificaat en vervolgens Bestand kiezen om de openbare sleutel te uploaden. Als u tokens krijgt, hebt u de bijpassende persoonlijke sleutel nodig.
      • Selecteer Geheim om automatisch een wachtwoord te genereren nadat de toepassing is gemaakt.
  4. Wanneer u klaar bent met het invullen van de velden, selecteert u Toepassing maken.

    De bevestigingspagina geeft een overzicht met de naam, de id, en de vingerafdruk van het certificaat of het geheim voor de toepassing, afhankelijk van de verificatiemethode.

Belangrijk

Sla de informatie over de vingerafdruk van het certificaat of het geheim op voor toekomstige referentie. Deze informatie wordt slechts één keer weergegeven.

Extra apps maken

U kunt zoveel toepassingen maken als nodig zijn om API-aanroepen in uw productieomgevingen uit te voeren.

  1. Selecteer Een andere toepassing maken op het tabblad Configuratie.
  2. Vul de velden in om uw app te maken en selecteer vervolgens Toepassing maken.

De realtime API's van Fraud Protection aanroepen

Gebruik de informatie in deze sectie om uw systemen te integreren met Fraud Protection.

Vereiste id's en gegevens

  • API-eindpunt: de URI voor uw omgeving wordt weergegeven op de tegel Accountgegevens van het Fraud Protection-dashboard.
  • Directory-id (tenant): de directory-id is de GUID (Globally Unique Identifier) voor het domein van een tenant in Azure. Deze verschijnt in de Azure Portal en op de tegel Accountgegevens op het Fraud Protection-dashboard.
  • Toepassings-id (client): de toepassings-id identificeert de Microsoft Entra-app die u hebt gemaakt om API's aan te roepen. U vindt deze id op de bevestigingspagina die wordt weergegeven nadat u Toepassing maken hebt geselecteerd op de pagina API-beheer. U kunt deze ook later vinden onder App-registraties in de Azure Portal. Er is één id voor elke app die u maakt.
  • Vingerafdruk van certificaat of geheim: u vindt de vingerafdruk van het certificaat of het geheim op de bevestigingspagina die wordt weergegeven nadat u Toepassing maken hebt geselecteerd op de pagina API-beheer.
  • Exemplaar-id: de exemplaar-id is de GUID voor uw omgeving in Fraud Protection. Deze wordt weergegeven op de tegel Integratie van het Fraud Protection-dashboard.

Een toegangstoken genereren

U moet dit token genereren en bij elke API-aanroep opgeven. Houd er rekening mee dat toegangstokens een beperkte levensduur hebben. We raden u aan om elke toegangstoken in de cache te plaatsen en opnieuw te gebruiken totdat het tijd is om een nieuwe aan te vragen. De volgende voorbeelden in C#-code laten zien hoe u een token kunt aanvragen via uw certificaat of geheim. Vervang de tijdelijke aanduidingen door uw eigen informatie.

Vingerafdruk CERTIFICAAT

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

Geheim

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

Respons

Met de voorgaande code wordt achter de scherm een HTTP-aanvraag gegenereerd en ontvangt u een reactie vergelijkbaar met het volgende voorbeeld.

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

Zie de volgende Azure-documentatie voor meer informatie over toegangstokens:

De API's aanroepen

  1. Geef bij elk verzoek de volgende vereiste HTTP-headers door.
Headernaam Headerwaarde
Autorisatie

Gebruik de volgende indeling voor deze koptekst: accesstoken van bearer

In deze indeling is het toegangstoken het token dat wordt geretourneerd door Microsoft Entra-id.

x-ms-correlation-id Verzend een nieuwe GUID-waarde voor elke set API-aanroepen die samen worden ingediend.
Content-Type application/json
x-ms-dfpenvid Verzend de GUID-waarde van uw exemplaar-id.
  1. Genereer een op gebeurtenissen gebaseerde payload. Vul voor de gebeurtenisgegevens de relevante informatie van uw systeem in.

    Zie Dynamics 365 Fraud Protection-API voor meer informatie over ondersteunde gebeurtenissen.

  2. Combineer de header (inclusief de toegangstoken) en de payload en stuur deze vervolgens naar uw Fraud Protection-eindpunt. (Het API-eindpunt is de URI voor uw omgeving die wordt weergegeven op de tegel accountgegevens van het Fraud Protection-dashboard.)

Zie Dynamics 365 Fraud Protection-API voor meer informatie over API's.

Stap 3: Gebeurtenissen voor accountbeveiliging begrijpen

Account maken

Met de gebeurtenis Account maken kunt u informatie en context verzenden over een poging om een nieuw account te maken. Het antwoord bevat een beslissing voor de API voor account maken.

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

De waarde van signUpId moet uniek zijn per aanvraag. De waarde moet overeenkomen met de waarde in de sectie met metagegevens in het voorbeeld dat volgt.

Belangrijk

De waarde van deviceContextId moet overeenkomen met de waarde van session_id in de apparaatvingerafdrukinstellingen.

Voorbeeld van nettolading

   {
          "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"
     }

Aanmelding bij account

Met de gebeurtenis Aanmelding bij account kunt u informatie en context verzenden over een poging om een nieuw accountaanmelding te maken. Het antwoord bevat een beslissing voor de API voor accountaanmelding.

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

De waarde van userId moet overeenkomen met de waarde in de nettolading. Elke gebruiker moet een unieke waarde hebben. U kunt hier een GUID-waarde gebruiken.

Belangrijk

De waarde van deviceContextId moet overeenkomen met de waarde van session_id in de apparaatvingerafdrukinstellingen.

Voorbeeld van nettolading

  {
     "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"
  }

Status van account maken

Met de gebeurtenis Status van account maken kunt u informatie en context verzenden over een poging om een nieuw account te maken. Het antwoord bevat een beslissing voor de API voor status van account maken.

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

De waarde van userId moet overeenkomen met de waarde in de nettolading. Elke gebruiker moet een unieke waarde hebben. U kunt hier een GUID-waarde gebruiken.

Voorbeeld van nettolading

  {
     "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"
  }

Status accountaanmelding

Met de gebeurtenis Status accountaanmelding kunt u informatie en context verzenden over een poging om een nieuw accountaanmeldingsstatus te maken. Het antwoord bevat een beslissing voor de API voor status accountaanmelding.

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

De waarde van signUpId moet overeenkomen met de waarde in de nettolading. Elke id moet een unieke waarde hebben. U kunt hier een GUID-waarde gebruiken.

Voorbeeld van nettolading

  {
     "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"
  }

Etiket

Met de gebeurtenis Label kunt u aanvullende informatie verzenden naar Fraud Protection, naast de gegevens voor de functies voor virtuele fraudeanalyse en controle. De API Label biedt de aanvullende informatie voor modeltraining die is gebaseerd op een extra set met fraudesignalen. U kunt hiermee ook informatie over transacties, details over een account of betalingsinstrument en omkeringen ontvangen.

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

De waarde van userId moet overeenkomen met de overeenkomende API voor accountaanmelding.

Voorbeeld van nettolading

  {
     "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
          }

Gefeliciteerd! U hebt de training met succes voltooid en kunt de mogelijkheden voor accountbeveiliging van Fraud Protection gaan gebruiken.

Volgende stappen

Zie de volgende documenten voor informatie over het openen en gebruiken van andere mogelijkheden van Fraud Protection: