Dela via


Konfigurera skydd för kundkonton

Microsoft Dynamics 365 Fraud Protection innehåller kontoskyddsfunktioner som hjälper dig att bedöma om någon misstänkt aktivitet inträffar i ditt affärsekosystem. Dessa funktioner omfattar funktioner för riskbedömning som du kan använda för att blockera eller utmana bedrägliga försök att skapa konton eller kompromettera befintliga konton. Nedan följer några exempel:

  • API:er för riskbedömning i realtid
  • En regel- och listupplevelse som du kan använda för att optimera din riskstrategi enligt dina affärsbehov
  • Övervaka instrumentpaneler som du kan använda för att övervaka bedrägeriskyddseffektivitet och trender i ditt ekosystem

Kontoskyddet omfattar tre typer av händelser för kontolivscykeln: kontoskapande, kontoinloggning och anpassad utvärdering. För varje händelsetyp finns det flera försvarslinjer:

  • Effektiv robotidentifiering: När Bedrägeriskydd identifierar ett automatiserat försök att använda en lista över komprometterade autentiseringsuppgifter eller råstyrke för att skapa eller ändra konton är dess första försvarslinje dynamisk och robust robotidentifiering. Den här avancerade adaptiva artificiella intelligensen (AI) genererar snabbt en poäng som mappas till sannolikheten att en robot initierar händelsen.
  • Förstärkt utvärdering i realtid: Som nästa försvarslinje använder Fraud Protection AI-modeller för att generera en riskbedömningspoäng. Du kan använda den här poängen med regler för att godkänna, utmana, avvisa eller granska inloggnings- och registreringsförsök baserat på företagets behov.

Mål för det här dokumentet

Det här dokumentet vägleder dig genom följande aktiviteter:

Förutsättningar

Innan du påbörjar aktiviteterna i det här dokumentet måste du utföra följande uppgifter:

  • Konfigurera Bedrägeriskydd i en Microsoft Entra-klientorganisation.
  • Konfigurera enhetens fingeravtryck.

Steg 1: Implementera API:er för kontoskydd

Om du vill dra nytta av alla funktioner i Bedrägeriskydd skickar du dina transaktionsdata till API:erna i realtid.

  • I utvärderingsmiljön kan du analysera resultatet av att använda Bedrägeriskydd.
  • I skyddsmiljön kan du respektera beslut baserat på de regler som du har konfigurerat.

Du kan använda olika API:er för kontoskydd beroende på hur du vill använda Bedrägeriskydd. Exempel på dessa API:er är: AccountCreation, AccountLogin, AccountCreationStatus, AccountLoginStatus, AccountUpdate, Label och Custom Events.

Mer information om händelser som stöds finns i Dynamics 365 Fraud Protection API.

Steg 2: Skapa Microsoft Entra-appar

Viktigt!

För att slutföra det här steget måste du vara programadministratör, molnprogramadministratör eller global administratör i din Microsoft Entra-klientorganisation.

Om du vill hämta de token som krävs för att anropa API:erna använder du Bedrägeriskydd för att konfigurera Microsoft Entra-program.

Konfigurera en Microsoft Entra-app

  1. I det vänstra navigeringsfönstret i bedrägeriskyddsportalen väljer du Inställningar och sedan Åtkomstkontroll.

  2. Välj Programåtkomst. I listrutan + Tilldela programroller väljer du Skapa nytt program och fyller sedan i fälten för att skapa din app. Följande fält krävs:

    • Programvisningsnamn – Ange ett beskrivande namn för din app. Den maximala längden är 93 tecken.

    • Autentiseringsmetod – Välj om ett certifikat eller en hemlighet (lösenordsskyddat) ska användas för autentisering.

      • Välj Certifikat och välj sedan Välj fil för att ladda upp den offentliga nyckeln. När du hämtar token behöver du den matchande privata nyckeln.
      • Välj Hemlighet för att automatiskt generera ett lösenord när appen har skapats. Hemligheter är inte lika säkra som certifikat.
  3. Välj de API-roller som du vill tilldela till den här appen i listrutan Roller . Den Risk_API rollen är markerad som standard. Du kan när som helst redigera API-roller.

  • Risk_API – Entra-appar som tilldelats Risk_API roller kan anropa API-slutpunkter för utvärdering och observation av bedrägeriskyddshändelser.
  • Provisioning_API – Entra-appar som tilldelats Provisioning_API roller kan anropa API-slutpunkten för etablering av bedrägeriskydd, vilket gör det möjligt att skapa, uppdatera och ta bort icke-rotmiljöer.

Viktigt!

Du kan när som helst redigera API-roller för en befintlig Entra-app. Mer information finns i artikeln Konfigurera Microsoft Entra-appåtkomst .

  1. När du har fyllt i fälten väljer du Skapa program.

Sidan Bekräftelse sammanfattar appens namn och ID och antingen certifikatets tumavtryck eller hemligheten, beroende på vilken autentiseringsmetod du har valt.

Viktigt!

Spara informationen om ditt certifikats tumavtryck eller hemlighet för framtida referens. Den här informationen visas bara en gång.

Skapa ytterligare appar

Du kan skapa så många appar som du behöver för att köra API-anrop i dina produktionsmiljöer.

  1. På fliken Programåtkomst väljer du Skapa nytt program i listrutan Tilldela programroller i det övre navigeringsfältet .
  2. Fyll i fälten för att skapa din app och välj sedan Skapa program.

Anropa API:er för bedrägeriskydd i realtid

Använd informationen i det här avsnittet för att integrera dina system med Bedrägeriskydd.

Nödvändiga ID:ar och information

  • API-slutpunkt – URI:n för din miljö visas på panelen Kontoinformation på instrumentpanelen för bedrägeriskydd.
  • Katalog-ID (klientorganisation) – katalog-ID:t är den globalt unika identifieraren (GUID) för en klientorganisations domän i Azure. Den visas i Azure Portal och på panelen Kontoinformation på instrumentpanelen bedrägeriskydd.
  • Program-ID (klient) – Program-ID:t identifierar Microsoft Entra-appen som du skapade för att anropa API:er. Du hittar det här ID:t på bekräftelsesidan som visas när du har valt Skapa programsidan API Management . Du kan också hitta den senare, under Appregistreringar i Azure Portal. Det kommer att finnas ett ID för varje app som du skapar.
  • Certifikatets tumavtryck eller hemlighet – Du hittar certifikatets tumavtryck eller hemligheten på bekräftelsesidan som visas när du har valt Skapa programsidan API Management .
  • Instans-ID – instans-ID:t är den globalt unika identifieraren (GUID) för din miljö i Bedrägeriskydd. Den visas i integrationspanelen på instrumentpanelen för bedrägeriskydd.

Generera en åtkomsttoken

Du måste generera den här token och ange den för varje API-anrop. Observera att åtkomsttoken har en begränsad livslängd. Vi rekommenderar att du cachelagr och återanvänder varje åtkomsttoken tills det är dags att skaffa en ny. Följande C#-kodexempel visar hur du kan hämta en token med hjälp av ditt certifikat eller din hemlighet. Ersätt platshållarna med din egen information.

CERTIFIKATets tumavtryck

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

Hemlighet

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

Response

I bakgrunden genererar föregående kod en HTTP-begäran och tar emot ett svar som liknar följande exempel.

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

Mer information om åtkomsttoken finns i följande Azure-dokumentation:

Anropa API:erna

  1. Skicka följande nödvändiga HTTP-huvuden för varje begäran.
Huvudnamn Huvudvärde
Auktorisering

Använd följande format för den här rubriken: Bearer accesstoken

I det här formatet är accesstoken den token som returneras av Microsoft Entra ID.

x-ms-correlation-id Skicka ett nytt GUID-värde för varje uppsättning API-anrop som görs tillsammans.
Innehållstyp application/json
x-ms-dfpenvid Skicka GUID-värdet för ditt instans-ID.
  1. Generera en händelsebaserad nyttolast. Fyll i händelsedata med relevant information från systemet.

    Mer information om händelser som stöds finns i Dynamics 365 Fraud Protection API.

  2. Kombinera huvudet (som innehåller åtkomsttoken) och nyttolasten och skicka dem sedan till din bedrägeriskyddsslutpunkt. (API-slutpunkten är URI:n för din miljö och visas på panelen Kontoinformation på instrumentpanelen bedrägeriskydd.)

Mer information om API:er finns i Api:et för Dynamics 365 Bedrägeriskydd.

Steg 3: Förstå kontoskyddshändelser

Skapa konto

Använd händelsen Skapa konto för att skicka information och kontext om ett inkommande försök att skapa ett nytt konto. Svaret innehåller ett beslut för API:et för kontoskapande.

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

Värdet för signUpId bör vara unikt per begäran. Det bör matcha värdet i metadataavsnittet i exemplet som följer.

Viktigt!

Värdet för deviceContextId ska matcha värdet för session_id i enhetens fingeravtrycksinställningar.

Exempelnyttolast

   {
          "device": {
               "deviceContextId": "2cf391cc-62d2-47d4-a9c1-78ec025293da",
               "ipAddress": "192.168.8.214",
               "provider": "DFPFingerprinting",
               "externalDeviceId": "1234567890",
               "externalDeviceType": "Tablet"
     },
     "user": {
          "userId": " 00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
          "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"
     }

Kontoinloggning

Använd kontoinloggningshändelsen för att skicka information och kontext om ett inkommande försök att skapa en ny kontoinloggning. Svaret innehåller ett beslut för kontoinloggnings-API:et.

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

Värdet för userId måste matcha värdet i nyttolasten. Varje användare måste ha ett unikt värde. Ett GUID-värde kan användas här.

Viktigt!

Värdet för deviceContextId ska matcha värdet för session_id i enhetens fingeravtrycksinställningar.

Exempelnyttolast

  {
     "device": {
          "deviceContextId": "2ef10376-2ba8-4f36-a911-da438e5e5e27",
          "ipAddress": "192.168.8.214",
          "provider": "DFPFingerprinting",
          "externalDeviceId": "1234567890",
     "externalDeviceType": "Computer"
     },
     "user": {
          "userId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
          "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 för kontoskapande

Använd händelsen Skapa status för konto för att skicka information och kontext om ett inkommande försök att skapa en ny kontostatus. Svaret innehåller ett beslut för API:et för kontoskapandestatus.

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

Värdet för userId måste matcha värdet i nyttolasten. Varje användare måste ha ett unikt värde. Ett GUID-värde kan användas här.

Exempelnyttolast

  {
     "metadata":{
          "signUpId":"a6221a3f-c38c-429e-8fde-3026d8c29ed3",
          "userId":"11bb11bb-cc22-dd33-ee44-55ff55ff55ff",
          "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"
  }

Kontoinloggningsstatus

Använd händelsen Kontoinloggningsstatus för att skicka information och kontext om ett inkommande försök att skapa en ny kontoinloggningsstatus. Svaret innehåller ett beslut för API:et för kontoinloggningsstatus.

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

Värdet för signUpId måste matcha värdet i nyttolasten. Var och en måste ha ett unikt värde. Ett GUID-värde kan användas här.

Exempelnyttolast

  {
     "metadata":{
          "loginId":"dc4ea331-a6e5-4aa0-8eba-16b4d516a07d",
          "userId":"11bb11bb-cc22-dd33-ee44-55ff55ff55ff",
          "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"
  }

Etikett

Använd etiketthändelsen för att skicka ytterligare information till Bedrägeriskydd, förutom de data som informerar den virtuella bedrägerianalytikern och övervakningsfunktionerna. Label-API:et innehåller ytterligare information för modellträning som baseras på ytterligare en uppsättning bedrägerisignaler. Den skickar också information om transaktioner, konto- eller betalningsmedelsinformation och återföringar.

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

Värdet för userId måste matcha värdet i motsvarande API för kontoinloggning.

Exempelnyttolast

  {
     "metadata": {
          "name": "AP.Label.Metadata",
          "userId": "11bb11bb-cc22-dd33-ee44-55ff55ff55ff",
          "merchantTimeStamp": "2020-06-14T21:53:27.8822492-08:00",
          "trackingId": "11bb11bb-cc22-dd33-ee44-55ff55ff55ff"
     },
     "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
          }

Grattis! Du har slutfört utbildningen och är redo att använda bedrägeriskyddsfunktionerna.

Nästa steg

Information om hur du får åtkomst till och använder andra funktioner för bedrägeriskydd finns i följande dokument: