Udostępnij za pośrednictwem


Konfigurowanie ochrony kont klientów

Ważne

Od 3 lutego 2025 r. usługa Dynamics 365 Fraud Protection nie jest już dostępna do zakupu. Wsparcie dla ochrony przed oszustwami zakończy się 3 lutego 2026 r. Aby uzyskać więcej informacji, zapoznaj się z artykułem End of support for Dynamics 365 Fraud Protection (Koniec wsparcia dla usługi Dynamics 365 Fraud Protection).

Ochrona przed oszustwami w usłudze Microsoft Dynamics 365 obejmuje funkcje ochrony konta, które ułatwiają ocenę, czy jakiekolwiek podejrzane działania występują w ekosystemie biznesowym. Te możliwości obejmują możliwości oceny ryzyka, których można użyć do blokowania lub kwestionowania fałszywych prób utworzenia kont lub naruszenia zabezpieczeń istniejących kont. Oto kilka przykładów:

  • Interfejsy API do oceny ryzyka w czasie rzeczywistym
  • Środowisko reguł i listy, których można użyć do optymalizacji strategii ryzyka zgodnie z potrzebami biznesowymi
  • Monitorowanie pulpitów nawigacyjnych, których można użyć do monitorowania skuteczności i trendów ochrony przed oszustwami w ekosystemie

Ochrona konta obejmuje trzy typy zdarzeń cyklu życia konta: tworzenie konta, logowanie do konta i ocenę niestandardową. Dla każdego typu zdarzenia istnieje wiele wierszy obrony:

  • Wydajne wykrywanie botów: gdy usługa Fraud Protection wykrywa automatyczną próbę użycia listy poświadczeń naruszonych lub siłowych w celu utworzenia lub zmodyfikowania kont, jej pierwsza linia obrony jest dynamiczna i niezawodna funkcja wykrywania botów. Ta zaawansowana adaptacyjna sztuczna inteligencja (AI) szybko generuje wynik mapowany na prawdopodobieństwo, że bot inicjuje zdarzenie.
  • Ocena wzmocniona w czasie rzeczywistym: jako kolejna linia obrony ochrona przed oszustwami używa modeli sztucznej inteligencji do generowania oceny ryzyka. Możesz użyć tej oceny z regułami, aby zatwierdzić, zakwestionować, odrzucić lub przejrzeć próby logowania i rejestracji na podstawie potrzeb biznesowych.

Cele dla tego dokumentu

Ten dokument przeprowadzi Cię przez następujące działania:

Wymagania wstępne

Przed rozpoczęciem działań w tym dokumencie należy wykonać następujące zadania:

  • Skonfiguruj ochronę przed oszustwami w dzierżawie Microsoft Entra.
  • Konfigurowanie odcisku palca urządzenia.

Krok 1. Implementowanie interfejsów API ochrony konta

Aby skorzystać z pełnego zestawu funkcji w usłudze Fraud Protection, wyślij dane transakcji do interfejsów API czasu rzeczywistego.

  • W środowisku oceny można analizować wyniki korzystania z usługi Fraud Protection.
  • W środowisku ochrony można honorować decyzje na podstawie skonfigurowanych reguł.

Możesz użyć różnych interfejsów API ochrony kont w zależności od sposobu korzystania z ochrony przed oszustwami. Przykłady tych interfejsów API to: AccountCreation, AccountLogin, AccountCreationStatu s, AccountLoginStatus, AccountUpdate, Label i Custom Events.

Aby uzyskać więcej informacji na temat obsługiwanych zdarzeń, zobacz Dynamics 365 Fraud Protection API (Interfejs API ochrony przed oszustwami w usłudze Dynamics 365).

Krok 2. Tworzenie aplikacji Microsoft Entra

Ważne

Aby wykonać ten krok, musisz być administratorem aplikacji, administratorem aplikacji w chmurze lub administratorem globalnym w dzierżawie firmy Microsoft Entra.

Aby uzyskać tokeny wymagane do wywołania interfejsów API, użyj usługi Fraud Protection, aby skonfigurować aplikacje firmy Microsoft Entra.

Konfigurowanie aplikacji Microsoft Entra

  1. W portalu ochrony przed oszustwami w obszarze nawigacji po lewej stronie wybierz pozycję Ustawienia, a następnie wybierz pozycję Kontrola dostępu.

  2. Wybierz pozycję Dostęp do aplikacji. Z listy rozwijanej + Przypisz role aplikacji wybierz pozycję Utwórz nową aplikację, a następnie wypełnij pola, aby utworzyć aplikację. Wymagane są następujące pola:

    • Nazwa wyświetlana aplikacji — wprowadź opisową nazwę aplikacji. Maksymalna długość to 93 znaki.

    • Metoda uwierzytelniania — wybierz, czy certyfikat, czy klucz tajny (chroniony hasłem) jest używany do uwierzytelniania.

      • Wybierz pozycję Certyfikat, a następnie wybierz pozycję Wybierz plik , aby przekazać klucz publiczny. Podczas uzyskiwania tokenów potrzebny jest pasujący klucz prywatny.
      • Wybierz pozycję Wpis tajny , aby automatycznie wygenerować hasło po utworzeniu aplikacji. Wpisy tajne nie są tak bezpieczne, jak certyfikaty.
  3. Wybierz role interfejsu API, które chcesz przypisać do tej aplikacji z listy rozwijanej Role . Rola Risk_API jest domyślnie zaznaczona. Role interfejsu API można edytować w dowolnym momencie.

  • Risk_API — aplikacje entra przypisane Risk_API role mogą wywoływać punkty końcowe interfejsu API oceny i obserwacji ochrony przed oszustwami.
  • Provisioning_API — role Provisioning_API przypisane przez aplikacje entra mogą wywoływać punkt końcowy interfejsu API aprowizacji ochrony przed oszustwami, który umożliwia tworzenie, aktualizowanie i usuwanie środowisk innych niż główne.

Ważne

Role interfejsu API można edytować dla istniejącej aplikacji Entra w dowolnym momencie. Aby dowiedzieć się więcej, zapoznaj się z artykułem Konfigurowanie dostępu do aplikacji Microsoft Entra.

  1. Po zakończeniu wypełniania pól wybierz pozycję Utwórz aplikację.

Strona Potwierdzenie zawiera podsumowanie nazwy i identyfikatora aplikacji oraz odcisku palca certyfikatu lub wpisu tajnego w zależności od wybranej metody uwierzytelniania.

Ważne

Zapisz informacje o odcisku palca lub wpisie tajnym certyfikatu w celu uzyskania przyszłego odwołania. Te informacje są wyświetlane tylko raz.

Tworzenie dodatkowych aplikacji

W środowiskach produkcyjnych można tworzyć dowolną liczbę aplikacji, które wymagają uruchamiania wywołań interfejsu API.

  1. Na karcie Dostęp do aplikacji wybierz pozycję Utwórz nową aplikację z listy rozwijanej Przypisz role aplikacji na górnym pasku nawigacyjnym.
  2. Wypełnij pola, aby utworzyć aplikację, a następnie wybierz pozycję Utwórz aplikację.

Wywoływanie interfejsów API usługi Fraud Protection w czasie rzeczywistym

Skorzystaj z informacji w tej sekcji, aby zintegrować systemy z usługą Fraud Protection.

Wymagane identyfikatory i informacje

  • Punkt końcowy interfejsu API — identyfikator URI środowiska jest wyświetlany na kafelku Informacje o koncie na pulpicie nawigacyjnym Ochrona przed oszustwami.
  • Identyfikator katalogu (dzierżawy) — identyfikator katalogu to unikatowy identyfikator globalny (GUID) dla domeny dzierżawy na platformie Azure. Zostanie on wyświetlony w witrynie Azure Portal i na kafelku Informacje o koncie na pulpicie nawigacyjnym Ochrona przed oszustwami.
  • Identyfikator aplikacji (klienta) — identyfikator aplikacji identyfikuje aplikację Microsoft Entra utworzoną do wywoływania interfejsów API. Ten identyfikator można znaleźć na stronie potwierdzenia wyświetlanej po wybraniu pozycji Utwórz aplikację na stronie usługi API Management. Możesz go również znaleźć później w obszarze Rejestracje aplikacji w witrynie Azure Portal. Dla każdej utworzonej aplikacji będzie dostępny jeden identyfikator.
  • Odcisk palca certyfikatu lub wpis tajny — odcisk palca certyfikatu lub wpis tajny można znaleźć na stronie potwierdzenia wyświetlanej po wybraniu pozycji Utwórz aplikację na stronie usługi API Management.
  • Identyfikator wystąpienia — identyfikator wystąpienia jest globalnie unikatowym identyfikatorem (GUID) dla twojego środowiska w usłudze Fraud Protection. Zostanie on wyświetlony na kafelku Integracja na pulpicie nawigacyjnym Ochrona przed oszustwami.

Generowanie tokenu dostępu

Musisz wygenerować ten token i podać go przy użyciu każdego wywołania interfejsu API. Należy pamiętać, że tokeny dostępu mają ograniczoną żywotność. Zalecamy buforowanie i ponowne używanie każdego tokenu dostępu do czasu uzyskania nowego tokenu. Poniższe przykłady kodu w języku C# pokazują, jak można uzyskać token przy użyciu certyfikatu lub wpisu tajnego. Zastąp symbole zastępcze własnymi informacjami.

Odcisk palca CERTYFIKATU

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

Wpis tajny

   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

W tle powyższy kod generuje żądanie HTTP i odbiera odpowiedź podobną do poniższego przykładu.

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

Aby uzyskać więcej informacji na temat tokenów dostępu, zobacz następującą dokumentację platformy Azure:

Wywoływanie interfejsów API

  1. Przekaż następujące wymagane nagłówki HTTP dla każdego żądania.
Nazwa nagłówka Wartość nagłówka
Autoryzacja

Użyj następującego formatu dla tego nagłówka: Bearer accesstoken

W tym formacie token accesstoken jest tokenem zwracanym przez identyfikator Entra firmy Microsoft.

x-ms-correlation-id Wyślij nową wartość identyfikatora GUID dla każdego zestawu wywołań interfejsu API, które są wykonywane razem.
Typ zawartości application/json
x-ms-dfpenvid Wyślij wartość identyfikatora GUID identyfikatora wystąpienia.
  1. Generowanie ładunku opartego na zdarzeniach. Wypełnij dane zdarzenia odpowiednimi informacjami z systemu.

    Aby uzyskać więcej informacji na temat obsługiwanych zdarzeń, zobacz Dynamics 365 Fraud Protection API (Interfejs API ochrony przed oszustwami w usłudze Dynamics 365).

  2. Połącz nagłówek (który zawiera token dostępu) i ładunek, a następnie wyślij go do punktu końcowego ochrony przed oszustwami. (Punkt końcowy interfejsu API to identyfikator URI środowiska i jest wyświetlany na kafelku Informacje o koncie na pulpicie nawigacyjnym ochrona przed oszustwami).

Aby uzyskać więcej informacji na temat interfejsów API, zobacz Dynamics 365 Fraud Protection API (Interfejs API ochrony przed oszustwami w usłudze Dynamics 365).

Krok 3. Omówienie zdarzeń ochrony konta

Tworzenie konta

Użyj zdarzenia Tworzenie konta, aby wysyłać informacje i kontekst dotyczące przychodzącej próby utworzenia nowego konta. Odpowiedź zawiera decyzję dotyczącą interfejsu API tworzenia konta.

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

Wartość signUpId powinna być unikatowa dla każdego żądania. Powinna być zgodna z wartością w sekcji metadanych w poniższym przykładzie.

Ważne

Wartość deviceContextId powinna być zgodna z wartością session_id w ustawieniach odcisku palca urządzenia.

Przykładowy ładunek

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

Logowanie do konta

Użyj zdarzenia logowania konta, aby wysłać informacje i kontekst dotyczące przychodzącej próby utworzenia nowego identyfikatora logowania do konta. Odpowiedź zawiera decyzję dotyczącą interfejsu API logowania do konta.

Identyfikator URI: <punkt końcowy interfejsu> API/wersja 1.0/action/account/login/<userId>

Wartość userId musi być zgodna z wartością w ładunku. Każdy użytkownik musi mieć unikatową wartość. W tym miejscu można użyć wartości identyfikatora GUID.

Ważne

Wartość deviceContextId powinna być zgodna z wartością session_id w ustawieniach odcisku palca urządzenia.

Przykładowy ładunek

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

Stan tworzenia konta

Użyj zdarzenia Tworzenie stanu konta, aby wysyłać informacje i kontekst dotyczące przychodzącej próby utworzenia nowego stanu konta. Odpowiedź zawiera decyzję interfejsu API tworzenia stanu konta.

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

Wartość userId musi być zgodna z wartością w ładunku. Każdy użytkownik musi mieć unikatową wartość. W tym miejscu można użyć wartości identyfikatora GUID.

Przykładowy ładunek

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

Stan logowania konta

Użyj zdarzenia Stan logowania konta, aby wysłać informacje i kontekst dotyczące przychodzącej próby utworzenia nowego stanu logowania konta. Odpowiedź zawiera decyzję interfejsu API stanu logowania konta.

Identyfikator URI: <Punkt końcowy interfejsu> API/v1.0/obserwowanie/konto/login/status/<userId>

Wartość signUpId musi być zgodna z wartością w ładunku. Każda z nich musi mieć unikatową wartość. W tym miejscu można użyć wartości identyfikatora GUID.

Przykładowy ładunek

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

Etykieta

Użyj zdarzenia Etykieta, aby wysłać dodatkowe informacje do ochrony przed oszustwami, oprócz danych, które informują analityka oszustw wirtualnych i funkcji monitorowania. Interfejs API Label zawiera dodatkowe informacje na temat trenowania modelu opartego na dodatkowym zestawie sygnałów oszustwa. Wysyła również informacje o transakcjach, kontach lub instrumentach płatniczych oraz o odwróceniu.

Identyfikator URI: <Punkt końcowy interfejsu> API/v1.0/label/account/create/<userId>

Wartość userId musi być zgodna z wartością w odpowiednim interfejsie API logowania do konta.

Przykładowy ładunek

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

Gratulacje! Pomyślnie ukończono szkolenie i możesz przystąpić do korzystania z funkcji ochrony konta usługi Fraud Protection.

Następne kroki

Aby uzyskać informacje na temat uzyskiwania dostępu do innych funkcji ochrony przed oszustwami i korzystania z nich, zobacz następujące dokumenty: