次の方法で共有


Application Insights を使用して Azure Active Directory B2C ログを収集する

重要

2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください

開始する前にこのページの上部にある ポリシーの種類 セレクターを使用して、設定するポリシーの種類を選択します。 Azure Active Directory B2C には、ユーザーがアプリケーションを操作する方法を定義する 2 つの方法 (定義済みのユーザー フローを使用する、または完全に構成可能なカスタム ポリシーを使用する) があります。 この記事で必要な手順は、方法ごとに異なります。

この機能は、カスタム ポリシーでのみ使用できます。 セットアップ手順については、前のセレクターで [カスタム ポリシー] を選択します。

この機能はパブリック プレビュー段階にあります。

この記事では、カスタム ポリシーの問題を診断できるように、Active Directory B2C (Azure AD B2C) からログを収集する手順について説明します。 Application Insights は、例外を診断したり、アプリケーションのパフォーマンスの問題を視覚化したりするための手段を提供します。 Azure AD B2C には、Application Insights にデータを送信するための機能が含まれます。

ここで説明する詳細なアクティビティ ログは、カスタム ポリシーの開発中 にのみ 有効にする必要があります。

警告

運用環境で DeploymentModeDevelopment に設定しないでください。 ログは、ID プロバイダーとの間で送受信されるすべての要求を収集します。 開発者は、Application Insights ログで収集された個人データについて責任を負います。 これらの詳細なログは、ポリシーが DEVELOPER MODE に設定されている場合にのみ収集されます。

Application Insights を設定する

まだお持ちでない場合は、サブスクリプションに Application Insights のインスタンスを作成します。

ヒント

Application Insights の 1 つのインスタンスは、複数の Azure AD B2C テナントに使用できます。 その後、クエリで、テナントまたはポリシー名でフィルター処理できます。 詳細については、 Application Insights サンプルのログを参照してください

サブスクリプションで Application Insights の既存のインスタンスを使用するには、次の手順に従います。

  1. Azure portal にサインインします。
  2. Azure AD B2C ディレクトリではなく、Azure サブスクリプションを持つ Microsoft Entra ディレクトリを使用していることを確認します。 ポータル ツールバーの [Directories + subscriptions](ディレクトリ + サブスクリプション) アイコンを選択します。
  3. ポータルの 設定 |[ディレクトリとサブスクリプション ] ページで、ディレクトリ の一覧で Microsoft Entra ディレクトリを見つけて、[ 切り替え] を選択します。
  4. 前に作成した Application Insights リソースを開きます。
  5. [概要] ページで、接続文字列を記録します

サブスクリプションに Application Insights のインスタンスを作成するには、次の手順に従います。

  1. Azure portal にサインインします。
  2. Azure AD B2C ディレクトリではなく、Azure サブスクリプションを持つ Microsoft Entra ディレクトリを使用していることを確認します。 ポータル ツールバーの [Directories + subscriptions](ディレクトリ + サブスクリプション) アイコンを選択します。
  3. ポータルの 設定 |[ディレクトリとサブスクリプション ] ページで、ディレクトリ の一覧で Microsoft Entra ディレクトリを見つけて、[ 切り替え] を選択します。
  4. 左側 ナビゲーション メニューで [リソースの作成] を選択します。
  5. Application Insights を検索して選択し、[作成] を選択します。
  6. フォームに入力し、[ 確認と作成] を選択し、[ 作成] を選択します。
  7. デプロイが完了したら、[リソースに移動] を選択します。
  8. [Application Insights で 構成 ] メニューの [ プロパティ] を選択します。
  9. 後の手順で使用する 接続文字列 を記録します。

カスタム ポリシーを構成する

  1. 証明書利用者 (RP) ファイルを開きます ( 例:SignUpOrSignin.xml)。

  2. <TrustFrameworkPolicy>要素に次の属性を追加します。

    DeploymentMode="Development"
    UserJourneyRecorderEndpoint="urn:journeyrecorder:applicationinsights"
    
  3. まだ存在しない場合は、<UserJourneyBehaviors> ノードに<RelyingParty>子ノードを追加します。 <DefaultUserJourney ReferenceId="UserJourney Id" from your extensions policy, or equivalent (for example:SignUpOrSigninWithAAD" />後に配置する必要があります。 RelyingParty 子要素の完全な順序については、RelyingParty スキーマ リファレンスを参照してください。

  4. 次のノードを <UserJourneyBehaviors> 要素の子として追加します。 {Your Application Insights Key}は、前に記録した Application Insights 接続文字列に置き換えてください。

    <JourneyInsights TelemetryEngine="ApplicationInsights" ConnectionString="{Your Application Insights ConnectionString}" DeveloperMode="true" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
    
    • DeveloperMode="true" は、処理パイプラインを通じてテレメトリを迅速化するように ApplicationInsights に指示します。 開発には適していますが、多量になると制約があります。 運用環境で、 DeveloperModefalse に設定します。
    • ClientEnabled="true" は、ページ ビューとクライアント側のエラーを追跡するための ApplicationInsights クライアント側スクリプトを送信します。 これは、Application Insights ポータルの browserTimings テーブルで確認できます。 ClientEnabled= "true"設定すると、ページ スクリプトに Application Insights を追加し、ページの読み込みと AJAX 呼び出し、カウント、ブラウザーの例外と AJAX エラーの詳細、ユーザーとセッションの数のタイミングを取得します。 このフィールドは 省略可能で、既定で false に設定されています。
    • ServerEnabled="true" は、既存の UserJourneyRecorder JSON をカスタム イベントとして Application Insights に送信します。

    例えば次が挙げられます。

    <TrustFrameworkPolicy
      ...
      TenantId="fabrikamb2c.onmicrosoft.com"
      PolicyId="SignUpOrSignInWithAAD"
      DeploymentMode="Development"
      UserJourneyRecorderEndpoint="urn:journeyrecorder:applicationinsights"
    >
    ...
    <RelyingParty>
      <DefaultUserJourney ReferenceId="UserJourney ID from your extensions policy, or equivalent (for example: SignUpOrSigninWithAzureAD)" />
      <Endpoints>
         <!--points to refresh token journey when app makes refresh token request-->
         <Endpoint Id="Token" UserJourneyReferenceId="RedeemRefreshToken" />
      </Endpoints>
      <UserJourneyBehaviors>
        <JourneyInsights TelemetryEngine="ApplicationInsights" ConnectionString="{Your Application Insights ConnectionString}" DeveloperMode="true" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
      </UserJourneyBehaviors>
      ...
    </TrustFrameworkPolicy>
    
  5. ポリシーをアップロードします。

Application Insights のログを確認する

Application Insights に新しいログが表示されるまでに、短い遅延 (通常は 5 分未満) があります。

  1. Azure portal で作成した Application Insights リソースを開きます。
  2. [概要] ページで [ログ] を選択します。
  3. Application Insights で新しいタブを開きます。

ログを表示するために使用できるクエリの一覧を次に示します。

クエリ 説明
traces Azure AD B2C によって生成されたすべてのログを取得する
traces | where timestamp > ago(1d) 最後の日に Azure AD B2C によって生成されたすべてのログを取得します。
traces | where message contains "exception" | where timestamp > ago(2h) 過去 2 時間のエラーを含むすべてのログを取得します。
traces | where customDimensions.Tenant == "contoso.onmicrosoft.com" and customDimensions.UserJourney == "b2c_1a_signinandup" Azure AD B2C contoso.onmicrosoft.com テナントによって生成されるすべてのログを取得し、ユーザーの操作フローは b2c_1a_signinandup です。
traces | where customDimensions.CorrelationId == "aaaa0000-bb11-2222-33cc-444444dddddd" 関連付け ID について、Azure AD B2C によって生成されたすべてのログを取得します。 関連付け ID を自分の関連付け ID に置き換えてください。

エントリは長い場合があります。 詳しく見るために CSV にエクスポートします。

クエリの詳細については、「 Azure Monitor でのログ クエリの概要」を参照してください。

VS Code 拡張機能のログを確認する

VS Code 用の Azure AD B2C 拡張機能をインストールすることをお勧めします。 Azure AD B2C 拡張機能を使用すると、ログはポリシー名、関連付け ID (アプリケーションの分析情報によって関連付け ID の最初の桁が表示されます)、およびログ タイムスタンプによって整理されます。 この機能は、ローカル タイムスタンプに基づいて関連するログを検索し、Azure AD B2C によって実行されたユーザー体験を確認するのに役立ちます。

コミュニティは、Azure AD B2C ソリューションの実装と保守を支援する VS Code 拡張機能を開発しました。 Microsoft はこの拡張機能をサポートしておらず、厳密に現状のまま利用可能です。

Application Insights API アクセスの設定

Application Insights を設定し、カスタム ポリシーを構成したら、Application Insights API ID を取得し、 API キーを作成する必要があります。 Api ID と API キーの両方が、Application Insights イベント (テレメトリ) を読み取るために Azure AD B2C 拡張機能によって使用されます。 API キーはパスワードのように管理する必要があります。 秘密にしておきます。

先ほど作成した Application Insights 接続文字列は、Azure AD B2C によって Application Insights にテレメトリを送信するために使用されます。 接続文字列は、VS Code 拡張機能ではなく、Azure AD B2C ポリシーでのみ使用します。

Application Insights ID とキーを取得するには:

  1. Azure portal で、アプリケーションの Application Insights リソースを開きます。

  2. [ 構成] を選択し、[ API アクセス] を選択します。

  3. アプリケーション ID をコピーする

  4. [API キーの作成] を選択する

  5. [ テレメトリの読み取り ] ボックスをオンにします。

  6. [API キー の作成] ブレードを閉じる前にキーをコピーし、安全な場所に保存します。 キーを紛失した場合は、別のキーを作成する必要があります。

    API アクセス キーを作成する方法を示すスクリーンショット。

Azure AD B2C VS Code 拡張機能を設定する

Azure Application insights API ID とキーが作成されたので、ログを読み取る VS Code 拡張機能を構成できます。 Azure AD B2C VS Code 拡張機能には、設定用の 2 つのスコープが用意されています。

  • ユーザーのグローバル設定 - 開いている VS Code の任意のインスタンスにグローバルに適用される設定。
  • [ワークスペースの設定] - ワークスペース内に格納されている設定。ワークスペースが開かれている場合にのみ適用されます (VS Code を使用して フォルダーを開きます)。
  1. Azure AD B2C トレース エクスプローラーで、[設定] アイコンをクリックします。

    アプリケーション分析情報の設定の選択を示すスクリーンショット。

  2. Azure Application Insights の IDキーを入力します。

  3. [保存] をクリックします

設定を保存すると、Application Insights ログが Azure AD B2C トレース (App Insights) ウィンドウに表示されます。

vscode 用の Azure AD B2C 拡張機能のスクリーンショット。Azure Application insights トレースが表示されています。

運用環境で Application Insights を構成する

運用環境のパフォーマンスとユーザー エクスペリエンスを向上させるには、重要ではないメッセージを無視するようにポリシーを構成することが重要です。 また、個人を特定できる情報 (PII) をログに記録しないようにする必要もあります。 運用環境では次の構成を使用します。ログはアプリケーションの分析情報に送信されません。

  1. DeploymentMode属性を Production に設定します。

    <TrustFrameworkPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06" PolicySchemaVersion="0.3.0.0"
    TenantId="yourtenant.onmicrosoft.com"
    PolicyId="B2C_1A_signup_signin"
    PublicPolicyUri="http://yourtenant.onmicrosoft.com/B2C_1A_signup_signin"
    DeploymentMode="Production"
    UserJourneyRecorderEndpoint="urn:journeyrecorder:applicationinsights">
    
  2. DeveloperModefalse に設定します。

    <UserJourneyBehaviors>
      <JourneyInsights TelemetryEngine="ApplicationInsights" ConnectionString="{Your Application Insights ConnectionString}" DeveloperMode="false" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
    </UserJourneyBehaviors>
    
  3. ポリシーをアップロードしてテストします。

次のステップ