Condividi tramite


Esercitazione: Configurare BioCatch con Azure Active Directory B2C

Informazioni su come integrare l'autenticazione di Azure Active Directory B2C (Azure AD B2C) con la tecnologia BioCatch per aumentare il comportamento di sicurezza CIAM (Customer Identity and Access Management). I prodotti BioCatch analizzano i comportamenti digitali fisici e cognitivi degli utenti per ottenere informazioni dettagliate che consentono di distinguere i clienti legittimi.

Vai a biocatch.com per altre informazioni su BioCatch

Prerequisiti

Per iniziare, è necessario:

Descrizione dello scenario

L'integrazione di BioCatch include i componenti seguenti:

  • Un'app Web o un servizio Web : gli utenti passano a questo servizio Web che crea un'istanza di un ID sessione client univoco che passa a BioCatch
    • L'ID sessione trasmette le caratteristiche del comportamento dell'utente a BioCatch
  • Un metodo : invia l'ID sessione ad Azure AD B2C. Nell'esempio JavaScript inserisce il valore in un campo HTML nascosto.
  • Un'interfaccia utente personalizzata di Azure AD B2C : nasconde un campo HTML per l'input dell'ID sessione da JavaScript
  • Criteri personalizzati di Azure AD B2C:
    • Accetta l'ID sessione come attestazione tramite un profilo tecnico autocertificato
    • Si integra con BioCatch tramite un provider di attestazioni API REST e passa l'ID sessione a BioCatch
    • Più attestazioni personalizzate restituite da BioCatch per la logica dei criteri personalizzata
    • Un percorso utente valuta un'attestazione restituita ed esegue un'azione condizionale, ad esempio l'autenticazione a più fattori

Altre informazioni:

Il diagramma seguente illustra i flussi utente con le informazioni sulla sessione.

Diagramma dei flussi utente con informazioni sulla sessione.

  1. L'utente passa al servizio Web, che restituisce valori HTML, CSS o JavaScript, quindi carica BioCatch JavaScript SDK. JavaScript lato client configura un ID sessione client per BioCatch SDK. In alternativa, il servizio Web preconfigura l'ID sessione client e lo invia al client. È possibile configurare l'SDK JavaScript BioCatch di cui è stata creata un'istanza per BioCatch, che invia il comportamento dell'utente a BioCatch dal dispositivo client, usando l'ID sessione client.
  2. L'utente esegue l'iscrizione o l'accesso e viene reindirizzato ad Azure AD B2C.
  3. Il percorso utente include un provider di attestazioni autocertisse, che inserisce l'ID sessione client. Questo campo è nascosto. Usare JavaScript per immettere l'ID sessione nel campo . Selezionare Avanti per continuare l'iscrizione o l'accesso. L'ID sessione passa a BioCatch per un punteggio di rischio. BioCatch restituisce informazioni sulla sessione e consiglia di consentire o bloccare. Il percorso utente ha un controllo condizionale, che agisce sulle attestazioni restituite.
  4. In base al risultato del controllo condizionale, viene richiamata un'azione.
  5. Il servizio Web può usare l'ID sessione per eseguire query sull'API BioCatch per determinare i rischi e le informazioni sulla sessione.

Introduzione a BioCatch

Passare alla pagina biocatch.com Contattaci per avviare un account.

Configurare l'interfaccia utente personalizzata

È consigliabile nascondere il campo ID sessione client con CSS, JavaScript o un altro metodo. Per il test, scoprire il campo. Ad esempio, JavaScript nasconde il campo di input come segue:

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

Configurare i criteri di Azure AD B2C Identity Experience Framework

  1. Per iniziare, vedere Esercitazione: Creare flussi utente e criteri personalizzati in Azure AD B2C.

  2. Creare un nuovo file che eredita dal file delle estensioni.

    <BasePolicy> 
    
        <TenantId>tenant.onmicrosoft.com</TenantId> 
    
        <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId> 
    
      </BasePolicy> 
    
  3. Creare un riferimento all'interfaccia utente personalizzata per nascondere la casella di input nella risorsa 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. Nella risorsa BuildingBlocks aggiungere le attestazioni seguenti.

    <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. Configurare un provider di attestazioni autocertificate per il campo ID sessione client.

    <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. Configurare un provider di attestazioni API REST per 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>
    

    Nota

    BioCatch fornisce l'URL, l'ID cliente e l'ID utente univoco (UUID). L'attestazione SessionID del cliente passa come parametro della stringa di query a BioCatch. È possibile selezionare il tipo di attività, ad esempio MAKE_PAYMENT.

  7. Configurare il percorso utente usando l'esempio seguente:

    • Ottenere clientSessionID come attestazione.
    • Chiamare l'API BioCatch per ottenere le informazioni sulla sessione.
    • Se il rischio di attestazione restituito è basso, ignorare il passaggio per MFA; in caso contrario, applicare l'autenticazione a più fattori dell'utente.
    <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. Configurare la relying party (facoltativo). È possibile passare le informazioni restituite da BioCatch all'applicazione come attestazioni nel token: risklevel e score.

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

Integrazione con Azure AD B2C

Aggiungere i file dei criteri ad Azure AD B2C. Per le istruzioni seguenti, usare la directory con il tenant di Azure AD B2C.

  1. Accedere al portale di Azure come amministratore globale del tenant di Azure AD B2C.
  2. Nella barra degli strumenti del portale selezionare Directory e sottoscrizioni.
  3. Nella pagina Directory e sottoscrizioni delle impostazioni del portale individuare la directory di Azure AD B2C nell'elenco Nome directory .
  4. Selezionare Cambia.
  5. Nell'angolo superiore sinistro del portale di Azure selezionare Tutti i servizi.
  6. Cercare e selezionare Azure Active Directory B2C.
  7. Passare ad Azure AD B2C>Identity Experience Framework.
  8. Caricare i file dei criteri nel tenant.

Testare la soluzione

Per le istruzioni seguenti, vedere Esercitazione: Registrare un'applicazione Web in Azure Active Directory B2C

  1. Registrare un'applicazione fittizia che reindirizza a JWT.MS.

  2. In Identity Experience Framework selezionare i criteri creati.

  3. Nella finestra dei criteri selezionare l'applicazione fittizia JWT.MS

  4. Selezionare Esegui adesso.

  5. Eseguire un flusso di iscrizione e creare un account.

  6. Il token restituito a JWT.MS ha 2 attestazioni per riskLevel e score.

  7. Usare l'esempio seguente.

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

Risorse aggiuntive