Configurer le suivi des sessions

Vous pouvez configurer le rapport de suivi de session pour l'agent de navigateur APM.

Par défaut, l'agent de navigateur APM crée des témoins de suivi de session qui suivent l'activité d'un navigateur unique jusqu'au redémarrage du navigateur. Cela pourrait s'écarter de ce que le serveur d'applications utilise. Plus précisément, il pourrait suivre les données avant et après la connexion et la déconnexion. sessionId ne correspond pas à sessionId qui peut se trouver dans les fichiers journaux. Il existe quelques approches qui pourraient aider à aligner le serveur sessionId sur le rapport du navigateur. Lorsque l'objectif est de s'assurer que les sauts de session sont appliqués aux pages de connexion/déconnexion, cela ne peut être fait qu'en instrumentant ce scénario.

Ajouter des sauts de session

Un appel à document.ApmSdk.resetSession() dans le code javascript garantit que la session existante est fermée et que la nouvelle session est démarrée. Ce faisant, il isolera les interactions avant que cette fonction ne soit appelée des interactions après. L'ajout de ce paramètre à la page de connexion ou à la page de renvoi de la déconnexion (et de la temporisation) peut contribuer à garantir que les interruptions de session dans les rapports de l'agent du navigateur correspondent aux interruptions d'expérience client.

Exemple de code javascript qui déclenche une interruption de session :

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

Alignez le navigateur SessionId avec le serveur SessionId

Une autre approche pour aligner la session de serveur avec la session de navigateur consiste à aligner Id utilisé pour identifier une session. Certaines façons de le faire sont décrites ci-dessous.

L'exposition brute sessionId pourrait affaiblir le CSRF

L'exposition de sessionId à javascript et à APM pourrait affaiblir les protections CSRF (Cross-Site Request Forgery).

L'avantage d'un sessionId identique (dans les journaux de serveur et APM) doit être pondéré par rapport à l'incidence sur les mesures de sécurité. Un hachage unidirectionnel pourrait rendre l'unicité identique sans compromettre les protections. Cela nécessiterait la même fonction de hachage dans les cas où les journaux du serveur et les journaux de l'agent de navigateur sont liés les uns aux autres.

Les exemples ci-dessous utilisent la valeur brute sessionId, et non une fonction de hachage particulière :

Obtention de l'application sessionId à l'agent de navigateur APM

Il existe plusieurs façons d'obtenir sessionId du serveur d'applications à l'agent de navigateur.
  • Initialiser apmrum.sid à partir du code d'application

    Cela nécessite la capacité du code d'application pour exposer le fichier sessionId actif dans le fichier HTML résultant. Le code d'application doit produire du code html/javascript qui initialise la propriété apmrum.sid avec sessionId.

    Le code d'application ajoute au corps du code HTML comme suit :

    <script language="text/javascript">
       window.apmrum = window.apmrum || {};
       window.apmrum.sid = '<?PHP echo getSessionId(); ?>';
    </script>
  • Exposez le témoin sessionId et demandez à l'agent de navigateur de l'utiliser.

    Dans les cas où l'application sessionId n'est pas protégée par l'indicateur HttpOnly, l'agent de navigateur peut être configuré pour lire et utiliser la valeur du témoin sessionId.

    Exemple du fichier HTML ci-dessous utilisant le nom de témoin du serveur d'applications; dans ce cas, 'JSessionId' :

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