Partage via


Paramétrage de la protection des comptes client

Microsoft Dynamics 365 Fraud Protection inclut des fonctionnalités de protection de compte pour vous aider à évaluer si une activité suspecte se produit dans votre écosystème d’entreprise. Ces fonctionnalités incluent des fonctionnalités d’évaluation des risques que vous pouvez utiliser pour bloquer ou contester les tentatives frauduleuses de création de comptes ou de compromettre des comptes existants. Voici quelques exemples :

  • API pour l’évaluation des risques en temps réel
  • Une expérience de règles et de listes que vous pouvez utiliser pour optimiser votre stratégie de risque en fonction des besoins de votre entreprise
  • Tableaux de bord de surveillance que vous pouvez utiliser pour surveiller l’efficacité et les tendances de la protection contre la fraude dans votre écosystème

La protection des comptes couvre trois types d’événements du cycle de vie des comptes : création de compte, connexion au compte, et évaluation personnalisée. Pour chaque type d’événement, il existe plusieurs lignes de défense :

  • Détection efficace des bots : Lorsque Fraud Protection détecte une tentative automatisée d’utiliser une liste d’informations d’identification compromises ou de force brute pour créer ou modifier des comptes, sa première ligne de défense est dynamique et robuste détection de bots. Cette intelligence artificielle adaptative (IA) avancée génère rapidement un score qui correspond à la probabilité qu’un bot déclenche l’événement.
  • Évaluation renforcée en temps réel : En tant que prochaine ligne de défense, Fraud Protection utilise des modèles d’IA pour générer un score d’évaluation des risques. Vous pouvez utiliser ce score avec des règles pour approuver, contester, rejeter ou examiner les tentatives de connexion et d’inscription, en fonction des besoins de l’entreprise.

Objectifs de ce document

Ce document vous guide à travers les activités suivantes :

Conditions préalables

Avant de commencer les activités de ce document, vous devez :

Étape 1 : implémenter les API de protection de compte

Pour tirer parti de l’ensemble complet de fonctionnalités dans Fraud Protection, envoyez vos données de transaction aux API en temps réel.

  • Dans l’expérience Évaluation, vous pouvez analyser les résultats de l’utilisation de Fraud Protection.
  • Dans l’expérience Protéger, vous pouvez également honorer des décisions selon les règles que vous avez configurées.

Vous pouvez utiliser différentes API de protection de compte, selon la façon dont vous choisissez d’utiliser Fraud Protection. Des exemples de ces API incluent : Création de compte, Connexion au compte, AccountCreationStatus, CompteLoginStatus, AccountUpdate, Label, et Custom Events.

Pour plus d’informations sur l’ensemble des événements pris en charge, consultez API Dynamics 365 Fraud Protection.

Étape 2 : Créer des applications Microsoft Entra

Important

Pour effectuer cette étape, vous devez être administrateur d’application, administrateur d’application cloud ou administrateur général dans votre locataire Microsoft Entra.

Pour acquérir les jetons requis pour appeler les API, utilisez Fraud Protection pour configurer les applications Microsoft Entra.

Configurer une application Microsoft Entra

  1. Dans le portail Fraud Protection, puis dans la navigation gauche, sélectionnez Données, puis Gestion des API.

  2. Dans la page Gestion des API, sélectionnez Configuration.

  3. Sélectionnez Créer une application, puis remplissez les champs pour créer votre application. Les champs suivants sont obligatoires :

    • Nom complet de l’application : Entrez un nom descriptif pour votre application. La longueur maximale est de 93 caractères.

    • Environnement : Sélectionnez le point de terminaison de production.

    • Méthode d’authentification : Sélectionnez si vous souhaitez vous authentifier via certificat ou (protégé par mot de passe) secret.

      • Sélectionnez Certificat, puis Choisir le fichier pour charger la clé publique. Vous aurez besoin de la clé privée correspondante au moment d’acquérir des jetons.
      • Sélectionnez Secret pour générer automatiquement un mot de passe une fois l’application créée.
  4. Lorsque vous avez terminé de remplir des champs, sélectionnez Créer l’application.

    La page de confirmation résume le nom de votre application, l’ID, et l’ou empreinte de certificat ou le secret, selon la méthode d’authentification sélectionnée.

Important

Enregistrez vos informations d’empreinte de certificat ou de secret à titre de référence. Ces informations ne seront affichées qu’une seule fois.

Créer des applications supplémentaires

Vous pouvez créer autant d’applications que nécessaire pour exécuter des appels d’API dans chacun de vos environnements de production.

  1. Dans l’onglet Paramètres de configuration, sélectionnez Créer une autre application.
  2. Remplissez les champs pour créer votre application, puis sélectionnez Créer une application.

Appeler les API Fraud Protection en temps réel

Utilisez les informations de cette section pour intégrer vos systèmes à Fraud Protection.

ID et Informations obligatoires

  • Point de terminaison API : L’URI de votre environnement apparaît sur la vignette Information sur le compte sur le tableau de bord Fraud Protection.
  • ID de répertoire (client) : L’ID d’annuaire varie est l’identificateur global unique (GUID) pour le domaine d’un client dans Azure. Il s’affiche dans le portail Azure et sur la vignette Informations du compte dans le tableau de bord Fraud Protection.
  • ID d’application (client) : l’ID d’application identifie l’application Microsoft Entra que vous avez créée pour appeler des API. Vous pouvez trouver cet ID sur la page de confirmation qui apparaît après avoir sélectionné Créer une application sur la page Gestion des API. Vous pouvez également le retrouver plus tard, sous Enregistrements d’application dans le portail Azure. Il existera un ID pour chaque application que vous créez.
  • Certificat d’empreinte ou secret : Vous pouvez trouver l’empreinte numérique du certificat ou le secret sur la page de confirmation qui apparaît après avoir sélectionné Créer une application sur la page Gestion des API.
  • ID d’instance - L’ID d’instance est l’identifiant global unique (GUID) de votre environnement dans Fraud Protection. Il apparaît dans la vignette Intégration sur le tableau de bord Fraud Protection.

Créer un jeton d’accès

Vous devez générer ce jeton et le fournir avec chaque appel d’API. Notez que les jetons d’accès ont une durée de vie limitée. Il est recommandé de cacher et de réutiliser chaque jeton d’accès jusqu’à ce qu’il soit temps d’obtenir un nouveau. Les exemples de code C# suivants vous montrent comment acquérir un jeton avec votre certificat ou votre secret. Remplacez les espaces réservés par vos propres informations.

Empreinte du CERTIFICAT

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

Secret

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

Réponse

En coulisses, le code précédent génère une demande HTTP et reçoit une réponse qui ressemble à l’exemple suivant.

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

Pour plus d’informations sur les jetons d’accès, consultez la documentation Azure suivante :

Appeler les API

  1. Passez les en-têtes HTTP requis suivants sur chaque demande.
Nom d’en-tête Valeur d’en-tête
Autorisation

Utilisez le format suivant pour cet en-tête : Bearer accesstoken

Dans ce format, accesstoken est le jeton retourné par l’ID Microsoft Entra.

x-ms-correlation-id Envoyer une nouvelle valeur GUID sur chaque ensemble d’appels d’API qui sont réalisés ensemble.
Type de contenu application/json
x-ms-dfpenvid Envoyez la valeur GUID de votre ID d’instance.
  1. Générez une charge utile basée sur événement. Remplissez les données d’événement avec des informations importantes de votre système.

    Pour plus d’informations sur l’ensemble des événements pris en charge, consultez API Dynamics 365 Fraud Protection.

  2. Combinez l’en-tête (qui inclut le jeton d’accès) et la charge utile, puis envoyez-les à votre point de terminaison Fraud Protection. (Le point de terminaison d’API est l’URI de votre environnement et apparaît sur la vignette Information sur le compte sur le tableau de bord Fraud Protection.)

Pour plus d’informations sur la sécurisation des API, voir la rubrique API Dynamics 365 Fraud Protection.

Étape 3 : comprendre les événements de protection de compte

Création d’un compte

Utilisez l’événement Création d’un compte pour envoyer des informations et un contexte sur une tentative entrante de création d’un compte. La réponse contient une décision pour l’API de création de compte.

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

La valeur de signUpId doit être unique par demande. Il doit correspondre à la valeur de la section des métadonnées dans l’exemple qui suit.

Important

La valeur de deviceContextId doit correspondre à la valeur de ID de session dans les paramètres d’empreintes digitales de l’appareil.

Exemple de charge utile

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

Connexion au compte

Utilisez l’événement Connexion au compte pour envoyer des informations et un contexte sur une tentative entrante de Connexion à un compte. La réponse contient une décision pour l’API de connexion au compte.

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

La valeur de userId doit correspondre à la valeur de la charge utile. Chaque utilisateur doit avoir une valeur unique. Une valeur GUID peut être utilisée ici.

Important

La valeur de deviceContextId doit correspondre à la valeur de ID de session dans les paramètres d’empreintes digitales de l’appareil.

Exemple de charge utile

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

Statut de création d’un compte

Utilisez l’événement Statut de création d’un compte pour envoyer des informations et un contexte sur une tentative entrante de statut de création d’un compte. La réponse contient une décision pour l’API de statut de création de compte.

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

La valeur de userId doit correspondre à la valeur de la charge utile. Chaque utilisateur doit avoir une valeur unique. Une valeur GUID peut être utilisée ici.

Exemple de charge utile

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

Statut de Connexion au compte

Utilisez l’événement Statut de Connexion au compte pour envoyer des informations et un contexte sur une tentative entrante de statut de Connexion au compte. La réponse contient une décision pour l’API de statut de Connexion au compte.

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

La valeur de signUpId doit correspondre à la valeur de la charge utile. Chaque doit avoir une valeur unique. Une valeur GUID peut être utilisée ici.

Exemple de charge utile

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

Étiquette

Utilisez l’événement étiquette pour envoyer des informations supplémentaires à Fraud Protection en plus des données qui avertissent l’analyste de fraude virtuelle et des fonctionnalités de surveillance. L’API étiquette fournit les informations supplémentaires pour l’apprentissage du modèle en fonction d’un ensemble supplémentaire de signaux de fraudes. Il envoie également des informations sur les transactions, les détails du compte ou de l’instrument de paiement et les annulations.

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

La valeur de userId doit correspondre à la valeur de l’API de connexion au compte correspondante.

Exemple de charge utile

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

Félicitations ! Vous avez terminé la formation avec succès et êtes prêt à utiliser les fonctionnalités de protection de comptes de Fraud Protection.

Étapes suivantes

Pour plus d’informations sur l’accès et l’utilisation d’autres fonctionnalités de Fraud Protection, consultez les documents suivants :