共用方式為


教學課程:使用 Azure Active Directory B2C 設定 BioCatch

瞭解如何整合 Azure Active Directory B2C (Azure AD B2C) 驗證與 BioCatch 技術,以增強客戶身分識別和存取管理 (CIAM) 安全性狀態。 BioCatch 產品會分析使用者實體和認知數位行為,以取得可協助區別合法客戶的深入解析。

移至 biocatch.com 以深入瞭解 BioCatch

必要條件

若要開始,您需要:

案例描述

BioCatch 整合包括下列元件:

  • Web 應用程式或 Web 服務 - 使用者流覽至此 Web 服務,以具現化移至 BioCatch 的唯一用戶端會話識別碼
    • 會話識別碼會將使用者行為特性傳輸至 BioCatch
  • 方法 - 將會話識別碼傳送至 Azure AD B2C。 在此範例中,JavaScript 會將值輸入隱藏的 HTML 欄位中。
  • Azure AD B2C 自訂 UI - 隱藏來自 JavaScript 的會話識別碼輸入 HTML 欄位
  • Azure AD B2C 自訂原則
    • 透過自我判斷技術設定檔,以會話識別碼作為宣告
    • 透過 REST API 宣告提供者與 BioCatch 整合,並將會話識別碼傳遞至BioCatch
    • 自訂原則邏輯的多個自訂宣告會從 BioCatch 傳回
    • 使用者旅程圖會評估傳回的宣告,並執行條件式動作,例如多重要素驗證

深入了解:

下圖說明具有會話資訊的使用者流程。

具有會話資訊的使用者流程圖表。

  1. 使用者流覽至 Web 服務,其會傳回 HTML、CSS 或 JavaScript 值,然後載入 BioCatch JavaScript SDK。 用戶端 JavaScript 會設定 BioCatch SDK 的用戶端會話識別碼。 或者,Web 服務會預先設定用戶端會話識別碼,並將其傳送至用戶端。 您可以使用用戶端會話識別碼,設定具現化的BioCatch JavaScript SDK forBioCatch,以將使用者行為從用戶端裝置傳送至 BioCatch。
  2. 使用者註冊或登入,並重新導向至 Azure AD B2C。
  3. 使用者旅程圖包含自我判斷宣告提供者,其會輸入用戶端會話識別碼。 此欄位已隱藏。 使用 JavaScript 將會話識別碼輸入欄位中。 選取 [下一步],繼續註冊或登入。 會話識別碼會移至BioCatch 以取得風險分數。 BioCatch 會傳回會話資訊,並建議允許或封鎖。 使用者旅程圖有條件式檢查,可對傳回的宣告採取動作。
  4. 根據條件式檢查結果,會叫用動作。
  5. Web 服務可以使用會話識別碼來查詢 BioCatch API,以判斷風險和會話資訊。

開始使用BioCatch

移至 [biocatch.com 連絡我們 ] 頁面以起始帳戶。

設定自訂 UI

建議您使用 CSS、JavaScript 或其他方法隱藏 [用戶端會話識別碼] 欄位。 若要進行測試,請取消隱藏欄位。 例如,JavaScript 會將輸入欄位隱藏為:

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

設定 Azure AD B2C Identity Experience Framework 原則

  1. 若要開始使用,請參閱 教學課程:在 Azure AD B2C 中建立使用者流程和自訂原則

  2. 建立繼承自延伸模組檔案的新檔案。

    <BasePolicy> 
    
        <TenantId>tenant.onmicrosoft.com</TenantId> 
    
        <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId> 
    
      </BasePolicy> 
    
  3. 在 BuildingBlocks 資源下建立自訂 UI 的參考,以隱藏輸入方塊。

    <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. 在 BuildingBlocks 資源下,新增下列宣告。

    <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. 設定用戶端會話識別碼欄位的自我判斷宣告提供者。

    <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. 設定 BioCatch 的 REST API 宣告提供者。

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

    注意

    BioCatch 提供 URL、客戶識別碼和唯一的使用者識別碼, (UUID) 。 客戶 SessionID 宣告會以查詢字串參數的形式傳遞至 BioCatch。 您可以選取活動類型,例如 MAKE_PAYMENT

  7. 使用下列範例設定使用者旅程圖:

    • 取得 clientSessionID 作為宣告。
    • 呼叫 BioCatch API 以取得會話資訊。
    • 如果傳回的宣告風險 很低,請略過 MFA 的步驟,否則會強制執行使用者 MFA。
    <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. 設定信賴憑證者 (選擇性) 。 您可以將 BioCatch 傳回的資訊傳遞至您的應用程式作為權杖中的宣告:risklevel 和 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>
    

與 Azure AD B2C 整合

將原則檔案新增至 Azure AD B2C。 如需下列指示,請使用目錄搭配 Azure AD B2C 租使用者。

  1. 以 Azure AD B2C 租使用者的全域管理員身分登入Azure 入口網站
  2. 在入口網站工具列中,選取 [目錄 + 訂用帳戶]。
  3. 在 [ 入口網站設定] 的 [目錄 + 訂用帳戶 ] 頁面上,于 [ 目錄名稱 ] 清單中,找出 Azure AD B2C 目錄。
  4. 選取 [切換]。
  5. 在Azure 入口網站左上角,選取[所有服務]。
  6. 搜尋並選取 [Azure AD B2C]。
  7. 流覽至Azure AD B2C>身分識別體驗架構
  8. 將原則檔案上傳至租使用者。

測試解決方案

如需下列指示,請參閱 教學課程:在 Azure Active Directory B2C 中註冊 Web 應用程式

  1. 註冊重新導向至 JWT.MS 的虛擬應用程式。

  2. [身分識別體驗架構] 下,選取您建立的原則。

  3. 在原則視窗中,選取虛擬 JWT.MS 應用程式

  4. 選取 [立即執行]。

  5. 執行註冊流程並建立帳戶。

  6. 傳回給 JWT.MS 的權杖具有 riskLevel 和 score 的 2 倍宣告。

  7. 請使用下列範例。

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

其他資源