Partilhar via


Configurar a proteção de contas de cliente

A Proteção contra Fraude do Microsoft Dynamics 365 inclui recursos de proteção de conta para ajudá-lo a avaliar se alguma atividade suspeita está ocorrendo em seu ecossistema de negócios. Esses recursos incluem recursos de avaliação de risco que você pode usar para bloquear ou contestar tentativas fraudulentas de criar contas ou comprometer contas existentes. Seguem-se alguns exemplos:

  • APIs para avaliação de riscos em tempo real
  • Uma experiência de regra e lista que você pode usar para otimizar sua estratégia de risco de acordo com as necessidades do seu negócio
  • Painéis de monitoramento que você pode usar para monitorar a eficácia da proteção contra fraudes e as tendências em seu ecossistema

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

  • Deteção eficiente de bots: quando a Proteção contra Fraude deteta 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 deteção dinâmica e robusta de bots. Essa inteligência artificial adaptativa (IA) avançada gera rapidamente uma pontuação que é mapeada para a probabilidade de um bot estar iniciando o evento.
  • Avaliação reforçada em tempo real: Como sua próxima linha de defesa, a Proteção contra Fraudes 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.

Objetivos deste documento

Este documento orienta-o através das seguintes atividades:

Pré-requisitos

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

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

Para aproveitar o conjunto completo de recursos da Proteção contra fraudes, envie seus dados de transação para as APIs em tempo real.

  • Na experiência de avaliação, você pode analisar os resultados do uso da Proteção contra Fraudes.
  • Na experiência de proteção, você pode honrar decisões com base nas regras que você configurou.

Você pode usar diferentes APIs de proteção de conta, dependendo de como deseja usar a Proteção contra fraudes. Exemplos dessas APIs incluem: AccountCreation, AccountLogin, AccountCreationStatus, AccountLoginStatus, AccountUpdate, Label e Custom Events.

Para obter mais informações sobre eventos suportados, consulte API de Proteção contra Fraude do Dynamics 365.

Etapa 2: Criar aplicativos do Microsoft Entra

Importante

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

Para adquirir os tokens necessários para chamar as APIs, use a Proteção contra Fraude para configurar aplicativos do Microsoft Entra.

Configurar um aplicativo Microsoft Entra

  1. No portal de Proteção contra fraudes, na navegação à esquerda, selecione Configurações e, em seguida, selecione Controle de acesso.

  2. Selecione Acesso ao aplicativo. Na lista suspensa + 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 seu aplicativo. O comprimento máximo é de 93 caracteres.

    • Método de autenticação – Selecione se um certificado ou um segredo (protegido por senha) é usado para 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 como 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 Entra atribuídos Risk_API funções podem chamar pontos de extremidade da API de avaliação e observação de eventos de proteção contra fraude.
  • Provisioning_API – Os aplicativos Entra atribuídos Provisioning_API funções podem chamar o ponto de extremidade da API de provisionamento de Proteção contra Fraude, 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 concluir o preenchimento dos campos, selecione Criar aplicativo.

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

Importante

Guarde as informações sobre a impressão digital ou o segredo do seu certificado para referência futura. Esta informação é mostrada apenas uma vez.

Criar aplicações adicionais

Você pode 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ção(ões) do aplicativo na barra de navegação superior.
  2. Preencha os campos para criar seu aplicativo e selecione Criar aplicativo.

Chame as APIs de Proteção contra Fraude em tempo real

Use as informações desta seção para integrar seus sistemas com a Proteção contra fraudes.

IDs e informações necessárias

  • API Endpoint – O URI do seu ambiente aparece no bloco Informações da conta no painel Proteção contra fraudes.
  • ID do diretório (locatário) – A ID do diretório é o identificador global exclusivo (GUID) para o domínio de um locatário no Azure. Ele aparece no portal do Azure e no bloco Informações da conta no painel Proteção contra fraude.
  • ID do aplicativo (cliente) – A ID do aplicativo identifica o aplicativo Microsoft Entra que você criou para chamar APIs. Você pode encontrar essa ID na página de confirmação que aparece depois de selecionar Criar aplicativo na página Gerenciamento deAPI. Você também pode encontrá-lo mais tarde, em Registros de aplicativos no portal do Azure. Haverá um ID para cada aplicativo que você criar.
  • Impressão digital ou segredo do certificado – Você pode encontrar a impressão digital do certificado ou o segredo na página de confirmação que aparece depois de selecionar Criar aplicativo na página Gerenciamento de API.
  • ID da instância - O ID da instância é o identificador global exclusivo (GUID) do seu ambiente na Proteção contra fraudes. Ele aparece no bloco Integração no painel Proteção contra fraudes.

Gerar um token de acesso

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

CERTIFICADO impressão digital

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

Response

Nos bastidores, o código anterior gera uma solicitação HTTP e recebe uma resposta semelhante 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: Bearer accesstoken

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

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

    Para obter mais informações sobre eventos suportados, consulte API de Proteção contra Fraude do Dynamics 365.

  2. Combine o cabeçalho (que inclui o token de acesso) e a carga útil e, em seguida, envie-os para o ponto de extremidade da Proteção contra fraudes. (O ponto de extremidade da API é o URI do seu ambiente e aparece no bloco Informações da conta no painel Proteção contra fraude.)

Para obter mais informações sobre APIs, consulte API de proteção contra fraude do Dynamics 365.

Etapa 3: Entender os eventos de proteção de conta

Criar Conta

Use o evento Criar conta para enviar informações e contexto sobre uma tentativa de entrada para criar uma nova conta. A resposta contém uma decisão para a API de Criação de 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 de impressão digital do dispositivo.

Amostra de carga útil

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

Login de Conta

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

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

O valor de userId deve corresponder ao valor na carga útil. 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 de impressão digital do dispositivo.

Amostra de carga útil

  {
     "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 de conta

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

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

O valor de userId deve corresponder ao valor na carga útil. Cada usuário deve ter um valor exclusivo. Um valor GUID pode ser usado aqui.

Amostra de carga útil

  {
     "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 login da conta

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

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

O valor de signUpId deve corresponder ao valor na carga útil. Cada um deve ter um valor único. Um valor GUID pode ser usado aqui.

Amostra de carga útil

  {
     "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 Label para enviar informações adicionais à Proteção contra Fraudes, além dos dados que informam o analista de fraude virtual e recursos de monitoramento. A API Label fornece informações adicionais para o treinamento de modelos baseado em um conjunto adicional de sinais de fraude. Também envia informações sobre transações, detalhes da conta ou do instrumento de pagamento e estornos.

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

O valor de userId deve corresponder ao valor na API de login de conta correspondente.

Amostra de carga útil

  {
     "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 sucesso o treinamento e está pronto para usar os recursos de proteção de conta do Fraud Protection.

Próximos passos

Para obter informações sobre como acessar e usar outros recursos de Proteção contra fraude, consulte os seguintes documentos: