重要
2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください。
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 の統合には、次のコンポーネントが含まれています。
-
Web アプリまたは Web サービス - ユーザーは、BioCatch に移動する一意のクライアント セッション ID をインスタンス化するこの Web サービスを参照します
- セッション ID は、ユーザーの動作特性を BioCatch に送信します。
- メソッド - セッション ID を Azure AD B2C に送信します。 この例では、JavaScript は非表示の HTML フィールドに値を入力します。
- Azure AD B2C カスタマイズされた UI - JavaScript からのセッション ID 入力の HTML フィールドを非表示にします
-
Azure AD B2C カスタム ポリシー:
- セルフアサート技術プロファイルを介し、セッション ID を要求として受け取ります
- REST API クレーム プロバイダーを介して BioCatch と統合し、セッション ID を BioCatch に渡します
- カスタム ポリシー ロジックの BioCatch から返される複数のカスタム要求
- ユーザー体験は返された要求を評価し、多要素認証などの条件付きアクションを実行します
詳細情報:
次の図は、セッション情報を含むユーザー フローを示しています。
- ユーザーは Web サービスを参照し、HTML、CSS、または JavaScript の値を返し、BioCatch JavaScript SDK を読み込みます。 クライアント側の JavaScript は、BioCatch SDK のクライアント セッション ID を構成します。 または、Web サービスによってクライアント セッション ID が事前に構成され、クライアントに送信されます。 インスタンス化された BioCatch JavaScript SDK for BioCatch を構成できます。この SDK は、クライアント セッション 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 とスコア) としてアプリケーションに渡すことができます。
<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 テナントの少なくとも B2C IEF ポリシー管理者として 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 とスコアの 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": "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]