チュートリアル: Azure Active Directory B2C と共に BioCatch を構成する

Azure Active Directory B2C (Azure AD B2C) 認証を BioCatch テクノロジに統合して、顧客 ID およびアクセス管理 (CIAM) のセキュリティ体制を強化する方法について説明します。 BioCatch 製品を使用すると、ユーザーの物理的および認知的なデジタル動作を分析して、正当な顧客を区別するのに役立つ分析情報を得ることができます。

BioCatch の詳細については、biocatch.com を参照してください

前提条件

開始するには、以下が必要です。

シナリオの説明

BioCatch 統合には、次のコンポーネントが含まれています。

  • 1 つの Web アプリまたは Web サービス - ユーザーはこの Web サービスを参照して、BioCatch に移動する一意のクライアント セッション ID をインスタンス化します
    • このセッション ID を使用して、ユーザーの動作特性を BioCatch に送信します
  • 1 つのメソッド - Azure AD B2C にセッション ID を送信します。 この例では、JavaScript で、非表示の HTML フィールドに値を入力します。
  • 1 つの Azure AD B2C カスタマイズ済み UI - JavaScript からのセッション ID 入力用の HTML フィールドを非表示にします
  • Azure AD B2C カスタム ポリシー:
    • セルフアサート技術プロファイルを使用して、セッション ID をクレームとして受け取ります
    • REST API クレーム プロバイダー経由で BioCatch と統合し、BioCatch にセッション ID を渡します
    • 複数のカスタム クレームが BioCatch から返され、カスタム ポリシーのロジックが得られます
    • ユーザー体験で、返されたクレームを評価し、多要素認証などの条件付きアクションを実行します

詳細情報:

次の図は、セッション情報を含むユーザー フローを示しています。

セッション情報を含むユーザー フローの図。

  1. ユーザーが Web サービスを参照します。そこでは、HTML、CSS、または JavaScript の値を返し、BioCatch JavaScript SDK を読み込みます。 クライアント側 JavaScript を使用して、BioCatch SDK のクライアント セッション ID を構成します。 Web サービスで、クライアント セッション ID を事前に構成してクライアントに送信することもできます。 インスタンス化された BioCatch JavaScript SDK を BioCatch 用に構成できます。こうすると、クライアント セッション ID を使用して、クライアント デバイスから BioCatch にユーザーの動作が送信されます。
  2. ユーザーがサインアップまたはサインインし、Azure AD B2C にリダイレクトされます。
  3. ユーザー体験には、クライアント セッション ID を入力するセルフアサート要求プロバイダーが含まれています。 このフィールドは非表示です。 JavaScript を使用して、このフィールドにセッション ID を入力します。 [次へ] を選択して、サインアップまたはサインインを続行します。 セッション ID は、リスク スコアを取得するために BioCatch に送られます。 BioCatch からセッション情報が返され、許可するかブロックするかが推奨されます。 ユーザー体験には条件付きチェックがあり、これは返されたクレームに対して作用します。
  4. 条件付きチェックの結果に基づいて、アクションが呼び出されます。
  5. Web サービスでは、セッション ID を使用して BioCatch API に対してクエリを実行し、リスクとセッションの情報を確認できます。

BioCatch の使用を開始する

biocatch.com の「お問い合わせ」ページに移動して、アカウントを開始します。

カスタム UI を構成する

CSS、JavaScript、またはその他の方法で、クライアント セッション ID のフィールドを非表示にすることをお勧めします。 テストをする場合は、このフィールドを再表示します。 たとえば、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. クライアント セッション ID フィールドに対して、セルフアサート クレーム プロバイダーを構成します。

    <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、顧客 ID、一意のユーザー ID (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 portal にサインインします。
  2. ポータルのツール バーで、[ディレクトリとサブスクリプション] を選択します。
  3. [ポータルの設定]、[ディレクトリとサブスクリプション] ページの [ディレクトリ名] リストで、Azure AD B2C ディレクトリを見つけます。
  4. [切り替え] を選択します。
  5. Azure portal の左上にある [すべてのサービス] を選択します。
  6. Azure AD B2C を検索して選択します。
  7. [Azure AD B2C]>[Identity Experience Framework] に移動します。
  8. ポリシー ファイルをテナントにアップロードします。

ソリューションをテストする

次の手順については、「チュートリアル: Azure Active Directory B2C に Web アプリケーションを登録する」を参照してください

  1. JWT.MS にリダイレクトするダミー アプリケーションを登録します。

  2. [Identity Experience Framework] で、作成したポリシーを選択します。

  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]  
    
    

その他の技術情報