チュートリアル: Azure Active Directory B2C と共に BioCatch を構成する
Azure Active Directory B2C (Azure AD B2C) 認証を BioCatch テクノロジに統合して、顧客 ID およびアクセス管理 (CIAM) のセキュリティ体制を強化する方法について説明します。 BioCatch 製品を使用すると、ユーザーの物理的および認知的なデジタル動作を分析して、正当な顧客を区別するのに役立つ分析情報を得ることができます。
BioCatch の詳細については、biocatch.com を参照してください
前提条件
開始するには、以下が必要です。
- Azure サブスクリプション
- お持ちでない場合は、Azure 無料アカウントを取得してください。
- Azure サブスクリプションにリンクされている Azure AD B2C テナント
- biocatch.com の「お問い合わせ」ページに移動して、アカウントを要求する
- 「Azure AD B2C の統合」と言ってください
シナリオの説明
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 から返され、カスタム ポリシーのロジックが得られます
- ユーザー体験で、返されたクレームを評価し、多要素認証などの条件付きアクションを実行します
詳細情報:
次の図は、セッション情報を含むユーザー フローを示しています。
- ユーザーが Web サービスを参照します。そこでは、HTML、CSS、または JavaScript の値を返し、BioCatch JavaScript SDK を読み込みます。 クライアント側 JavaScript を使用して、BioCatch SDK のクライアント セッション ID を構成します。 Web サービスで、クライアント セッション ID を事前に構成してクライアントに送信することもできます。 インスタンス化された BioCatch JavaScript SDK を BioCatch 用に構成できます。こうすると、クライアント セッション ID を使用して、クライアント デバイスから BioCatch にユーザーの動作が送信されます。
- ユーザーがサインアップまたはサインインし、Azure AD B2C にリダイレクトされます。
- ユーザー体験には、クライアント セッション ID を入力するセルフアサート要求プロバイダーが含まれています。 このフィールドは非表示です。 JavaScript を使用して、このフィールドにセッション ID を入力します。 [次へ] を選択して、サインアップまたはサインインを続行します。 セッション ID は、リスク スコアを取得するために BioCatch に送られます。 BioCatch からセッション情報が返され、許可するかブロックするかが推奨されます。 ユーザー体験には条件付きチェックがあり、これは返されたクレームに対して作用します。
- 条件付きチェックの結果に基づいて、アクションが呼び出されます。
- Web サービスでは、セッション ID を使用して BioCatch API に対してクエリを実行し、リスクとセッションの情報を確認できます。
BioCatch の使用を開始する
biocatch.com の「お問い合わせ」ページに移動して、アカウントを開始します。
カスタム UI を構成する
CSS、JavaScript、またはその他の方法で、クライアント セッション ID のフィールドを非表示にすることをお勧めします。 テストをする場合は、このフィールドを再表示します。 たとえば、JavaScript では、次のように入力フィールドを非表示にします。
document.getElementById("clientSessionId").style.display = 'none';
Azure AD B2C Identity Experience Framework のポリシーを構成する
開始するには、「チュートリアル: Azure AD B2C でユーザー フローとカスタム ポリシーを作成する」を参照してください。
拡張機能ファイルを継承する新しいファイルを作成します。
<BasePolicy> <TenantId>tenant.onmicrosoft.com</TenantId> <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId> </BasePolicy>
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>
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>
クライアント セッション 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>
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>&action=getScore&uuid=<uuid>&customerSessionID={clientSessionId}&solution=ATO&activtyType=<activity_type>&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 など) を選択できます。
次の例を使用して、ユーザー体験を構成します。
- 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>
証明書利用者を構成します (オプション)。 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 テナントでディレクトリを使用します。
- Azure AD B2C テナントの全体管理者として、Azure portal にサインインします。
- ポータルのツール バーで、[ディレクトリとサブスクリプション] を選択します。
- [ポータルの設定]、[ディレクトリとサブスクリプション] ページの [ディレクトリ名] リストで、Azure AD B2C ディレクトリを見つけます。
- [切り替え] を選択します。
- Azure portal の左上にある [すべてのサービス] を選択します。
- Azure AD B2C を検索して選択します。
- [Azure AD B2C]>[Identity Experience Framework] に移動します。
- ポリシー ファイルをテナントにアップロードします。
ソリューションをテストする
次の手順については、「チュートリアル: Azure Active Directory B2C に Web アプリケーションを登録する」を参照してください
JWT.MS にリダイレクトするダミー アプリケーションを登録します。
[Identity Experience Framework] で、作成したポリシーを選択します。
そのポリシーのウィンドウで、ダミーの JWT.MS アプリケーションを選択します
[今すぐ実行] を選択します。
サインアップ フローを実行し、アカウントを作成します。
JWT.MS に返されるトークンには、riskLevel と score に対する 2 倍のクレームが含まれています。
次の例を使用してください。
{ "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]