セッション・トラッキングの構成

APMブラウザ・エージェントのセッション・トラッキング・レポートを構成できます。

デフォルトでは、APMブラウザ・エージェントは、ブラウザが再起動されるまで一意のブラウザのアクティビティを追跡するセッション・トラッキングCookieを作成します。これは、アプリケーション・サーバーで使用されるものとは異なる場合があります。具体的には、ログインおよびログアウトの前後にデータを追跡できます。sessionIdは、ログ・ファイルにある可能性のあるsessionIdと一致しません。サーバー sessionIdをブラウザのレポートに合わせるために役立つアプローチがいくつかあります。ログイン/ログアウト・ページでのみセッション分割が適用されるようにすることが目標である場合、このシナリオのみを計測することによって実行できます。

セッション分割の追加

javascriptコードでdocument.ApmSdk.resetSession()をコールすると、既存のセッションがクローズされ、新しいセッションが開始されます。これを行うことで、この関数がコールされる前のインタラクションをその後のインタラクションから分離します。ログイン・ページまたはログアウトのランディング・ページ(およびタイムアウト)にこれを追加すると、ブラウザ・エージェント・レポートのセッション分割がカスタマ・エクスペリエンスの破綻と一致するようになります。

セッション分割をトリガーするサンプルjavascriptコード:

<script language="text/javascript">
   if (document.ApmSdk) {       
       document.ApmSdk.resetSession();
   }
</script>

ブラウザ SessionIdをサーバー SessionIdに整列

サーバー・セッションをブラウザ・セッションと連携させる別の方法は、セッションの識別に使用されるIdを整列することです。そのためのいくつかの方法を次に示します。

未処理の sessionId露出がCSRFを弱める可能性があります

sessionIdを javascriptおよびAPMに公開すると、CSRF (クロスサイト要求偽造)保護が弱まる可能性があります。

同じsessionIdの利点(サーバー・ログおよびAPM内)は、セキュリティ対策への影響と比較検討する必要があります。一方向ハッシュを使用すると、保護を危険にさらすことなく一意性を同一にできます。サーバー・ログとブラウザ・エージェント・ログが相互にリンクされている場合、同じハッシュ関数が必要になります。

次の例では、特定のハッシュ関数ではなく、RAW sessionId値を使用します。

APMブラウザ・エージェントへのアプリケーションsessionIdの取得

アプリケーション・サーバーからブラウザ・エージェントにsessionIdを取得するには、いくつかの方法があります。
  • アプリケーション・コードからapmrum.sidを初期化します

    これには、アプリケーション・コードでアクティブなsessionIdを結果のhtmlに公開する機能が必要です。アプリケーション・コードは、apmrum.sidプロパティをsessionIdで初期化するhtml/javascriptコードを生成する必要があります。

    アプリケーション・コードは、次のようにHTMLコードの本文に追加されます。

    <script language="text/javascript">
       window.apmrum = window.apmrum || {};
       window.apmrum.sid = '<?PHP echo getSessionId(); ?>';
    </script>
  • sessionId Cookieを公開し、ブラウザ・エージェントに使用するように指示します。

    アプリケーションsessionIdHttpOnlyフラグで保護されていない場合、sessionId Cookieの値を読み取って使用するようにブラウザ・エージェントを構成できます。

    アプリケーション・サーバーのCookie名(この場合は'JSessionId')を使用して、次のhtmlをサンプルします。

    <script language="text/javascript">
       window.apmrum = window.apmrum || {};
       window.apmrum.tracking_cookie = 'JSessionId';
    </script>