セッション・トラッキングの構成
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を公開し、ブラウザ・エージェントに使用するように指示します。アプリケーション
sessionId
がHttpOnly
フラグで保護されていない場合、sessionId
Cookieの値を読み取って使用するようにブラウザ・エージェントを構成できます。アプリケーション・サーバーのCookie名(この場合は
'JSessionId'
)を使用して、次のhtmlをサンプルします。<script language="text/javascript"> window.apmrum = window.apmrum || {}; window.apmrum.tracking_cookie = 'JSessionId'; </script>