Compartilhar via


Configurar a proteção das contas do cliente

O Microsoft Dynamics 365 Fraud Protection inclui recursos de proteção de contas para ajudar a avaliar se alguma atividade suspeita está ocorrendo no seu ecossistema comercial. Esses recursos incluem recursos de avaliação de risco que podem ser usados para bloquear ou desafiar tentativas fraudulentas de criar contas ou comprometer contas existentes. Eis alguns exemplos:

  • APIs para avaliação de risco em tempo real
  • Uma experiência de regras e listas que pode ser usada para otimizar sua estratégia de risco de acordo com as necessidades comerciais
  • Painéis de monitoramento que podem ser usados para monitorar a eficácia e as tendências de proteção contra fraudes no seu ecossistema

A proteção de contas abrange três tipos de eventos de ciclo de vida de uma conta: criação da conta, logon da conta e avaliação personalizada. Para cada tipo de evento, há várias linhas de defesa:

  • Detecção de bots eficiente : quando o Fraud Protection detecta uma tentativa automatizada de usar uma lista de credenciais comprometidas ou força bruta para criar ou modificar contas, sua primeira linha de defesa é a detecção de bots dinâmica e robusta. Essa inteligência artificial (IA) avançada e adaptável gera rapidamente uma pontuação que é mapeada para a probabilidade de um bot iniciar o evento.
  • Avaliação reforçada em tempo real: como sua próxima linha de defesa, o Fraud Protection usa modelos de IA para gerar uma pontuação de avaliação de risco. Você pode usar essa pontuação com regras para aprovar, desafiar, rejeitar ou revisar tentativas de entrada e inscrição, com base nas necessidades comerciais.

Metas deste documento

Este documento orienta você pelas seguintes atividades:

Pré-requisitos

Antes de iniciar as atividades deste documento, você deve concluir as seguintes tarefas:

Etapa 1: Implementar APIs de proteção de contas

Para aproveitar o conjunto completo de recursos no Fraud Protection, envie os dados da transação para as APIs em tempo real.

  • Na experiência de avaliação, é possível analisar os resultados do uso do Fraud Protection.
  • Na experiência de proteção, você pode honrar as decisões com base nas regras que configurou.

Você pode usar APIs de proteção de contas diferentes dependendo de como deseja usar o Fraud Protection. Exemplos dessas APIs incluem: AccountCreation, AccountLogin, AccountCreationStatus, AccountLoginStatus, AccountUpdate, Rótulo e Eventos Personalizados.

Para obter mais informações sobre eventos com suporte, consulte API do Dynamics 365 Fraud Protection.

Etapa 2: Criar aplicativos do Microsoft Entra

Importante

Para concluir esta etapa, você deve ser um administrador de aplicativos, um administrador de aplicativos de nuvem ou um administrador global em seu locatário do Microsoft Entra.

Para adquirir os tokens necessários para chamar as APIs, use o Fraud Protection para configurar aplicativos do Microsoft Entra.

Configurar um aplicativo Microsoft Entra

  1. No portal do Fraud Protection, no painel de navegação à esquerda, selecione Configurações e, em seguida, selecione Controle de acesso.

  2. Selecione Acesso ao aplicativo. No menu suspenso + Atribuir função(ões) de aplicativo, selecione Criar novo aplicativo e preencha os campos para criar seu aplicativo. Os seguintes campos são obrigatórios:

    • Nome de exibição do aplicativo — insira um nome descritivo para o aplicativo. O tamanho máximo é de 93 caracteres.

    • Método de autenticação – selecione se um certificado ou um segredo (protegido por senha) será usado para a autenticação.

      • Selecione Certificado e, em seguida, selecione Escolher arquivo para carregar a chave pública. Ao adquirir tokens, você precisa da chave privada correspondente.
      • Selecione Segredo para gerar automaticamente uma senha após a criação do aplicativo. Os segredos não são tão seguros quanto os certificados.
  3. Selecione as funções de API que você deseja atribuir a este aplicativo na lista suspensa Funções . A função Risk_API é selecionada por padrão. Você pode editar funções de API a qualquer momento.

  • Risk_API – Os aplicativos do Entra atribuídos Risk_API funções podem chamar endpoints da API de eventos de avaliação e observação do Fraud Protection.
  • Provisioning_API – Os aplicativos Entra atribuídos Provisioning_API funções podem chamar o endpoint da API de provisionamento do Fraud Protection, que permite a criação, atualização e exclusão de ambientes não raiz.

Importante

Você pode editar funções de API para um aplicativo Entra existente a qualquer momento. Para saber mais, consulte o artigo Configurar o acesso ao aplicativo Microsoft Entra.

  1. Quando terminar de preencher os campos, selecione Criar aplicativo.

A página Confirmação resume o nome e a ID do aplicativo e a impressão digital do certificado ou o segredo, dependendo do método de autenticação selecionado.

Importante

Salve as informações sobre impressão digital do certificado ou segredo para futura referência. Essas informações são mostradas apenas uma vez.

Criar aplicativos adicionais

Você poderá criar quantos aplicativos forem necessários para executar chamadas de API em seus ambientes de produção.

  1. Na guia Acesso ao aplicativo, selecione Criar novo aplicativo na lista suspensa Atribuir funções de aplicativo na barra de navegação superior.
  2. Preencha os campos para criar seu aplicativo e selecione Criar aplicativo.

Chamar as APIs em tempo real do Fraud Protection

Use as informações desta seção para integrar seus sistemas ao Fraud Protection.

IDs e informações necessárias

  • Ponto de extremidade da API — o URI de seu ambiente aparece no bloco Informações da conta no painel do Fraud Protection.
  • ID do Diretório (locatário) — A ID do diretório é o GUID (Identificador Global Exclusivo) do domínio de um locatário no Azure. Ele aparecerá no portal do Azure e no bloco Informações da conta no painel do Fraud Protection.
  • ID do aplicativo (cliente) – a ID do aplicativo identifica o aplicativo Microsoft Entra que você criou para chamar APIs. É possível encontrar essa ID na página de confirmação que será exibida depois que você selecionar Criar aplicativo na página Gerenciamento de API. Você também poderá encontrá-la posteriormente, em Registros de aplicativos no portal do Azure. Haverá uma ID para cada aplicativo criado.
  • Impressão digital do certificado ou segredo – é possível encontrar a impressão digital do certificado ou o segredo na página de confirmação que será exibida depois que você selecionar Criar aplicativo na página Gerenciamento de API.
  • ID da Instância – a ID da instância é o identificador global exclusivo (GUID) do seu ambiente no Fraud Protection. Ela aparece no bloco Integração no painel do Fraud Protection.

Gerar um token de acesso

Você deve gerar esse token e fornecê-lo com cada chamada de API. Observe que os tokens de acesso têm uma vida útil limitada. Recomendamos armazenar em cache e reutilizar cada token de acesso até a hora de obter um novo. Os exemplos de código C# a seguir mostram como adquirir um token usando seu certificado ou segredo. Substitua os espaços reservados pelas suas informações.

Impressão digital do CERTIFICADO

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

Segredo

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

Resposta

Em segundo plano, o código anterior gera uma solicitação HTTP e recebe uma resposta que se assemelha ao exemplo a seguir.

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

Para obter mais informações sobre tokens de acesso, consulte a seguinte documentação do Azure:

Chamar as APIs

  1. Passe os seguintes cabeçalhos HTTP necessários em cada solicitação.
Nome do cabeçalho Valor do cabeçalho
Autorização

Use o seguinte formato para este cabeçalho: accesstoken do portador

Nesse formato, accesstoken é o token retornado pela ID do Microsoft Entra.

x-ms-correlation-id Envie um novo valor de GUID para cada conjunto de chamadas de API que são feitas juntas.
Tipo de Conteúdo application/json
x-ms-dfpenvid Envie o valor do GUID da sua ID de Instância.
  1. Gere uma carga útil baseada em evento. Preencha os dados do evento com as informações relevantes do seu sistema.

    Para obter mais informações sobre eventos com suporte, consulte API do Dynamics 365 Fraud Protection.

  2. Combine o cabeçalho (que inclui o token de acesso) e a carga e envie-os para o ponto de extremidade do Fraud Protection. (O ponto de extremidade de API é o URI do seu ambiente e aparece no bloco Informações da conta no painel do Fraud Protection.)

Para obter mais informações sobre APIs, consulte API do Dynamics 365 Fraud Protection.

Etapa 3: Compreender os eventos de proteção de contas

Criação da Conta

Use o evento Criação da Conta para enviar informações e contexto sobre uma tentativa de criar uma nova conta. A resposta contém uma decisão para a API de Criação da Conta.

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

O valor de signUpId deve ser exclusivo por solicitação. Ele deve corresponder ao valor na seção de metadados no exemplo a seguir.

Importante

O valor de deviceContextId deve corresponder ao valor de session_id nas configurações da análise de impressões digitais para dispositivos.

Carga de exemplo

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

Logon da Conta

Use o evento Logon da Conta para enviar informações e contexto sobre uma tentativa de criar um novo logon da conta. A resposta contém uma decisão para a API de Logon da Conta.

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

O valor de userId deve corresponder ao valor no conteúdo. Cada usuário deve ter um valor exclusivo. Um valor GUID pode ser usado aqui.

Importante

O valor de deviceContextId deve corresponder ao valor de session_id nas configurações da análise de impressões digitais para dispositivos.

Carga de exemplo

  {
     "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 de Criação da Conta

Use o evento Status de Criação da Conta para enviar informações e contexto sobre uma tentativa de criar um novo status de conta. A resposta contém uma decisão para a API de Status de Criação da Conta.

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

O valor de userId deve corresponder ao valor no conteúdo. Cada usuário deve ter um valor exclusivo. Um valor GUID pode ser usado aqui.

Carga de exemplo

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

Status de Logon da Conta

Use o evento Status de Logon da Conta para enviar informações e contexto sobre uma tentativa de criar um novo status de logon da conta. A resposta contém uma decisão para a API de Status de Logon da Conta.

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

O valor de signUpId deve corresponder ao valor no conteúdo. Cada um deve ter um valor exclusivo. Um valor GUID pode ser usado aqui.

Carga de exemplo

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

Etiqueta

Use o evento Rótulo para enviar informações adicionais ao Fraud Protection, além dos dados que informam o analista virtual de fraudes e os recursos de monitoramento. A API Rótulo fornece as informações adicionais para o treinamento do modelo com base em um conjunto adicional de sinais de fraude. Ela também envia informações sobre transações, detalhes de meio de pagamento ou conta e reversões.

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

O valor de userId deve corresponder ao valor na API de Logon da Conta.

Carga de exemplo

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

Parabéns! Você concluiu com êxito o treinamento e está pronto para usar os recursos de proteção de contas do Fraud Protection.

Próximas etapas

Para obter informações sobre como acessar e usar outros recursos do Fraud Protection, consulte os seguintes documentos: