Partilhar via


Tutorial: Configurar o BioCatch com o Azure Ative Directory B2C

Importante

A partir de 1º de maio de 2025, o Azure AD B2C não estará mais disponível para compra para novos clientes. Saiba mais nas nossas Perguntas Frequentes.

Saiba como integrar a autenticação do Azure Ative Directory B2C (Azure AD B2C) com a tecnologia BioCatch para aumentar a sua postura de segurança de Gestão de Acesso e Identidade do Cliente (CIAM). Os produtos BioCatch analisam os comportamentos digitais físicos e cognitivos dos utilizadores em busca de informações que ajudem a distinguir clientes legítimos.

Ir para biocatch.com para saber mais BioCatch

Pré-requisitos

Para começar, você precisa:

Descrição do cenário

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

  • Uma aplicação Web ou um serviço Web - os utilizadores navegam para este serviço Web que instancia um ID de sessão de cliente exclusivo que vai para o BioCatch
    • O ID de sessão transmite as características de comportamento do utilizador ao BioCatch
  • Um método - envia a ID da sessão para o Azure AD B2C. No exemplo, 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 de ID de sessão do JavaScript
  • Política personalizada do Azure AD B2C:
    • Toma o ID da sessão como uma reivindicação por meio de um perfil técnico autodeclarado
    • Integra-se com o BioCatch através de um fornecedor de declarações da API REST e passa o 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 utilizador avalia uma reclamação retornada e executa uma ação condicional, como a autenticação multifator.

Saiba mais:

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

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

  1. O utilizador navega para o serviço Web, que devolve valores HTML, CSS ou JavaScript e, em seguida, carrega o BioCatch JavaScript SDK. JavaScript do lado do cliente configura um ID de sessão de cliente para o BioCatch SDK. Como alternativa, o serviço Web pré-configura o ID da sessão do cliente e o envia para o cliente. Você pode configurar o SDK JavaScript instanciado para o BioCatch, que envia o comportamento do usuário a partir do dispositivo cliente para o serviço BioCatch, usando o ID da sessão do cliente.
  2. O usuário se inscreve ou entra e é redirecionado para o Azure AD B2C.
  3. A jornada do usuário inclui um provedor de declarações autodeclarado, que insere o ID da sessão do cliente. Este campo está oculto. Use JavaScript para inserir o ID da sessão no campo. Selecione Seguinte para continuar a inscrever-se ou iniciar sessão. O identificador da sessão é enviado para a BioCatch para avaliação de risco. O BioCatch retorna informações da sessão e recomenda permitir ou bloquear. A jornada do usuário tem uma verificação condicional, que atua sobre as reivindicações devolvidas.
  4. Com base no resultado da verificação condicional, uma ação é invocada.
  5. O serviço Web pode usar o ID da sessão para consultar a API do BioCatch para determinar informações de risco e sessão.

Introdução ao BioCatch

Aceda à página biocatch.com Contacte-nos para iniciar uma conta.

Configurar a interface do usuário personalizada

Recomendamos que você oculte o campo ID da Sessão do Cliente com CSS, JavaScript ou outro método. Para testar, mostre o campo. Por exemplo, JavaScript oculta o campo de entrada como:

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

Configurar políticas do Azure AD B2C Identity Experience Framework

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

  2. Crie um novo arquivo que herda 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 seguintes declarações.

    <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 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 o URL, o ID do cliente e o ID de utilizador exclusivo (UUID). A declaração SessionID do cliente passa como um parâmetro de cadeia de caracteres de consulta para o BioCatch. Você pode selecionar o tipo de atividade, por exemplo, MAKE_PAYMENT.

  7. Configure a jornada do usuário usando o exemplo a seguir:

    • Obtenha o clientSessionID como uma reivindicação.
    • Ligue para a API BioCatch para obter as informações da sessão.
    • Se o risco de declaração retornado for baixo, ignore o passo de MFA, caso contrário, implemente MFA para o utilizador.
    <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 parte confiável (opcional). Você pode passar as informações retornadas do BioCatch para o seu aplicativo como reivindicaçõ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 com o Azure AD B2C

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

  1. Entre no portal do Azure como pelo menos Administrador de Políticas do IEF B2C 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 B2C do Azure AD.
  4. Selecione Trocar.
  5. No canto superior esquerdo do portal do Azure, selecione Todos os serviços.
  6. Procure e selecione Azure AD B2C.
  7. Navegue até Azure AD B2C>Identity Experience Framework.
  8. Carregue os arquivos de 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 Ative Directory B2C

  1. Registre um aplicativo fictício que redireciona para JWT.MS.

  2. Em Identity Experience Framework, selecione a política que você criou.

  3. Na janela de política, selecione o aplicativo de JWT.MS fictício

  4. Selecione Executar agora.

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

  6. O token devolvido ao JWT.MS tem declarações para riskLevel e score multiplicadas por duas.

  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": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", 
    
      "aud": "00001111-aaaa-2222-bbbb-3333cccc4444", 
    
      "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": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" 
    
    }.[Signature]  
    
    

Recursos adicionais