Compartilhar via


Tutorial: configurar o BioCatch com o Azure Active Directory B2C

Saiba como integrar a autenticação do Azure AD B2C (Azure Active Directory B2C) com a tecnologia BioCatch para ampliar sua postura de segurança de CIAM (identidade do cliente e gerenciamento de acesso). Os produtos BioCatch analisam comportamentos digitais físicos e cognitivos do usuário para obter insights que ajudam a distinguir clientes legítimos.

Acesse biocatch.com para saber mais sobre o BioCatch

Pré-requisitos

Para começar, você precisa do seguinte:

Descrição do cenário

A integração do BioCatch inclui os seguintes componentes:

  • Um aplicativo Web ou serviço Web – os usuários navegam para esse serviço Web que cria uma instância de uma ID da sessão de cliente exclusiva que vai para o BioCatch
    • A ID da sessão transmite características de comportamento do usuário para o BioCatch
  • Um método – envia a ID da sessão para o Azure AD B2C. No exemplo, o JavaScript insere o valor em um campo HTML oculto.
  • Uma interface do usuário personalizada do Azure AD B2C – oculta um campo HTML para a entrada da ID de sessão do JavaScript
  • Política personalizada do Azure AD B2C:
    • Usa a ID da sessão como uma declaração por meio de um perfil técnico autodeclarado
    • Integra-se com o BioCatch por meio de um provedor de declarações da API REST e passa a ID da sessão para o BioCatch
    • Várias declarações personalizadas retornam do BioCatch para a lógica de política personalizada
    • Um percurso do usuário avalia uma declaração retornada e executa uma ação condicional, como a autenticação multifator

Saiba mais:

O diagrama a seguir ilustra os fluxos do usuário com informações de sessão.

Diagrama de fluxos de usuário com informações de sessão.

  1. O usuário navega até o serviço Web, que retorna valores HTML, CSS ou JavaScript, e carrega o SDK do JavaScript do BioCatch. O JavaScript do lado do cliente configura uma ID da sessão do cliente para o SDK do BioCatch. Como alternativa, o serviço Web pré-configura a ID da sessão do cliente e a envia ao cliente. Configure o SDK do JavaScript do BioCatch instanciado para BioCatch, que envia o comportamento do usuário para o BioCatch do dispositivo cliente, por meio da ID da sessão do cliente.
  2. O usuário se inscreve ou entra e é redirecionado ao Azure AD B2C.
  3. O percurso do usuário inclui um provedor de declarações autodeclaradas, que insere a ID da sessão do cliente. Este campo está oculto. Usar JavaScript para inserir a ID da sessão no campo. Selecione Avançar, para continuar a inscrição ou entrada. A ID da sessão vai para o BioCatch para obter uma pontuação de risco. O BioCatch retorna informações da sessão e recomenda permitir ou bloquear. O percurso do usuário possui uma verificação condicional, que atua com base nas declarações retornadas.
  4. Com base no resultado da verificação condicional, uma ação é invocada.
  5. O serviço Web pode usar a ID da sessão para consultar a API do BioCatch para determinar informações de risco e sessão.

Introdução ao BioCatch

Acesse a página biocatch.com Fale conosco para iniciar uma conta.

Configurar a interface do usuário personalizada

É recomendável ocultar o campo ID da Sessão do Cliente com CSS, JavaScript ou outro método. Para testar, exiba novamente o campo. Por exemplo, o JavaScript oculta o campo de entrada como:

document.getElementById("clientSessionId").style.display = 'none';

Configurar políticas do Identity Experience Framework do Azure AD B2C

  1. Para começar, consulte Tutorial: criar fluxos de usuários e políticas personalizadas no Azure AD B2C.

  2. Crie um arquivo herdado do arquivo de extensões.

    <BasePolicy> 
    
        <TenantId>tenant.onmicrosoft.com</TenantId> 
    
        <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId> 
    
      </BasePolicy> 
    
  3. Crie uma referência à interface do usuário personalizada para ocultar a caixa de entrada, no recurso BuildingBlocks.

    <ContentDefinitions> 
    
        <ContentDefinition Id="api.selfasserted"> 
    
            <LoadUri>https://domain.com/path/to/selfAsserted.cshtml</LoadUri> 
    
            <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.0</DataUri> 
    
          </ContentDefinition> 
    
        </ContentDefinitions>
    
  4. No recurso BuildingBlocks, adicione as declarações a seguir.

    <ClaimsSchema> 
    
          <ClaimType Id="riskLevel"> 
    
            <DisplayName>Session risk level</DisplayName> 
    
            <DataType>string</DataType>       
    
          </ClaimType> 
    
          <ClaimType Id="score"> 
    
            <DisplayName>Session risk score</DisplayName> 
    
            <DataType>int</DataType>       
    
          </ClaimType> 
    
          <ClaimType Id="clientSessionId"> 
    
            <DisplayName>The ID of the client session</DisplayName> 
    
            <DataType>string</DataType> 
    
            <UserInputType>TextBox</UserInputType> 
    
          </ClaimType> 
    
    </ClaimsSchema> 
    
  5. Configure um provedor de declarações autodeclarado para o campo da ID da sessão do cliente.

    <ClaimsProvider> 
    
          <DisplayName>Client Session ID Claims Provider</DisplayName> 
    
          <TechnicalProfiles> 
    
            <TechnicalProfile Id="login-NonInteractive-clientSessionId"> 
    
              <DisplayName>Client Session ID TP</DisplayName> 
    
              <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> 
    
              <Metadata> 
    
                <Item Key="ContentDefinitionReferenceId">api.selfasserted</Item> 
    
              </Metadata> 
    
              <CryptographicKeys> 
    
                <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" /> 
    
              </CryptographicKeys> 
    
            <!—Claim we created earlier --> 
    
              <OutputClaims> 
    
                <OutputClaim ClaimTypeReferenceId="clientSessionId" Required="false" DefaultValue="100"/> 
    
              </OutputClaims> 
    
            <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" /> 
    
            </TechnicalProfile> 
    
          </TechnicalProfiles> 
    
        </ClaimsProvider> 
    
  6. Configure um provedor de declarações da API REST para o BioCatch.

    <TechnicalProfile Id="BioCatch-API-GETSCORE"> 
    
          <DisplayName>Technical profile for BioCatch API to return session information</DisplayName> 
    
          <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    
          <Metadata> 
    
            <Item Key="ServiceUrl">https://biocatch-url.com/api/v6/score?customerID=<customerid>&amp;action=getScore&amp;uuid=<uuid>&amp;customerSessionID={clientSessionId}&amp;solution=ATO&amp;activtyType=<activity_type>&amp;brand=<brand></Item>
    
            <Item Key="SendClaimsIn">Url</Item> 
    
            <Item Key="IncludeClaimResolvingInClaimsHandling">true</Item> 
    
            <!-- Set AuthenticationType to Basic or ClientCertificate in production environments --> 
    
            <Item Key="AuthenticationType">None</Item> 
    
            <!-- REMOVE the following line in production environments --> 
    
            <Item Key="AllowInsecureAuthInProduction">true</Item> 
    
          </Metadata> 
    
          <InputClaims> 
    
            <InputClaim ClaimTypeReferenceId="clientsessionId" /> 
    
          </InputClaims> 
    
          <OutputClaims> 
    
            <OutputClaim ClaimTypeReferenceId="riskLevel" /> 
    
            <OutputClaim ClaimTypeReferenceId="score" /> 
    
          </OutputClaims> 
    
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" /> 
    
        </TechnicalProfile> 
    
      </TechnicalProfiles>
    

    Observação

    O BioCatch fornece a URL, a ID do cliente e a UUID (ID de usuário exclusiva). A declaração SessionID do cliente passa como um parâmetro de cadeia de caracteres de consulta para o BioCatch. Selecione o tipo de atividade, por exemplo MAKE_PAYMENT.

  7. Configure o percurso do usuário usando o seguinte exemplo:

    • Obter a clientSessionID como uma declaração.
    • Chamar a API do BioCatch para obter as informações da sessão.
    • Se o risco de declaração retornado for baixo, ignore a etapa da MFA, caso contrário, imponha a MFA do usuário.
    <OrchestrationStep Order="8" Type="ClaimsExchange"> 
    
          <ClaimsExchanges> 
    
            <ClaimsExchange Id="clientSessionIdInput" TechnicalProfileReferenceId="login-NonInteractive-clientSessionId" /> 
    
          </ClaimsExchanges> 
    
        </OrchestrationStep> 
    
        <OrchestrationStep Order="9" Type="ClaimsExchange"> 
    
          <ClaimsExchanges> 
    
            <ClaimsExchange Id="BcGetScore" TechnicalProfileReferenceId=" BioCatch-API-GETSCORE" /> 
    
          </ClaimsExchanges> 
    
        </OrchestrationStep> 
    
        <OrchestrationStep Order="10" Type="ClaimsExchange"> 
    
          <Preconditions> 
    
            <Precondition Type="ClaimEquals" ExecuteActionsIf="true"> 
    
              <Value>riskLevel</Value> 
    
              <Value>LOW</Value> 
    
              <Action>SkipThisOrchestrationStep</Action> 
    
            </Precondition> 
    
          </Preconditions> 
    
          <ClaimsExchanges> 
    
            <ClaimsExchange Id="PhoneFactor-Verify" TechnicalProfileReferenceId="PhoneFactor-InputOrVerify" /> 
    
          </ClaimsExchanges>
    
  8. Configurar terceira parte confiável (opcional). Passe as informações retornadas do BioCatch para seu aplicativo como declarações no token: nível de risco e pontuação.

    <RelyingParty> 
    
    <DefaultUserJourney ReferenceId="SignUpOrSignInMfa" /> 
    
    <UserJourneyBehaviors> 
    
      <SingleSignOn Scope="Tenant" KeepAliveInDays="30" /> 
    
      <SessionExpiryType>Absolute</SessionExpiryType> 
    
      <SessionExpiryInSeconds>1200</SessionExpiryInSeconds> 
    
      <ScriptExecution>Allow</ScriptExecution> 
    
    </UserJourneyBehaviors> 
    
    <TechnicalProfile Id="PolicyProfile"> 
    
      <DisplayName>PolicyProfile</DisplayName> 
    
      <Protocol Name="OpenIdConnect" /> 
    
      <OutputClaims> 
    
        <OutputClaim ClaimTypeReferenceId="displayName" /> 
    
        <OutputClaim ClaimTypeReferenceId="givenName" /> 
    
        <OutputClaim ClaimTypeReferenceId="surname" /> 
    
        <OutputClaim ClaimTypeReferenceId="email" /> 
    
        <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" /> 
    
        <OutputClaim ClaimTypeReferenceId="identityProvider" />                 
    
        <OutputClaim ClaimTypeReferenceId="riskLevel" /> 
    
        <OutputClaim ClaimTypeReferenceId="score" /> 
    
        <OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" /> 
    
      </OutputClaims> 
    
      <SubjectNamingInfo ClaimType="sub" /> 
    
    </TechnicalProfile> 
    
    </RelyingParty>
    

Integrar ao Azure AD B2C

Adicione os arquivos da política ao Azure AD B2C. Para obter as instruções a seguir, use o diretório com o locatário Azure AD B2C.

  1. Entre no portal do Azure como Administrador Global do locatário do Azure AD B2C.
  2. Na barra de ferramentas do portal, selecione Diretórios + assinaturas.
  3. Na página Configurações do portal, Diretórios + assinaturas, na lista Nome do diretório, localize o diretório Azure AD B2C.
  4. Selecione Alternar.
  5. No canto superior esquerdo do portal do Azure, selecione Todos os serviços.
  6. Pesquise e selecione Azure AD B2C.
  7. Navegue até o Azure AD B2C>Identity Experience Framework.
  8. Carregar os arquivos da política para o locatário.

Testar a solução

Para obter as instruções a seguir, consulte Tutorial: registrar um aplicativo Web no Azure Active Directory B2C

  1. Registrar um aplicativo de simulação, que redirecione ao JWT.MS.

  2. Na Identity Experience Framework, selecione a política criada.

  3. Na janela da política, selecione o aplicativo JWT.MS de simulação

  4. Selecione executar agora.

  5. Conclua o fluxo de inscrição e crie uma conta.

  6. O token retornado para o JWT.MS tem o dobro de declarações para nível de risco e pontuação.

  7. Use o exemplo a seguir.

    { 
    
      "typ": "JWT", 
    
      "alg": "RS256", 
    
      "kid": "_keyid" 
    
    }.{ 
    
      "exp": 1615872580, 
    
      "nbf": 1615868980, 
    
      "ver": "1.0", 
    
      "iss": "https://tenant.b2clogin.com/12345678-1234-1234-1234-123456789012/v2.0/", 
    
      "sub": "12345678-1234-1234-1234-123456789012", 
    
      "aud": "12345678-1234-1234-1234-123456789012", 
    
      "acr": "b2c_1a_signup_signin_biocatch_policy", 
    
      "nonce": "defaultNonce", 
    
      "iat": 1615868980, 
    
      "auth_time": 1615868980, 
    
      "name": "John Smith", 
    
      "email": "john.smith@contoso.com", 
    
      "given_name": "John", 
    
      "family_name": "Smith", 
    
      "riskLevel": "LOW", 
    
      "score": 275, 
    
      "tid": "12345678-1234-1234-1234-123456789012" 
    
    }.[Signature]  
    
    

Recursos adicionais