Configurar Acompanhamento de Sessão

Você pode configurar o relatório de rastreamento de sessão para o agente do browser do APM.

Por padrão, o agente do browser do APM cria cookies de rastreamento de sessão que rastreia a atividade de um browser exclusivo até que o browser seja reiniciado. Isso pode se desviar do que o servidor de aplicativos usa. Mais especificamente, ele pode rastrear dados antes e depois do login e do logout. O sessionId não corresponde ao sessionId que pode estar presente nos arquivos de log. Há algumas abordagens que podem ajudar a alinhar o servidor sessionId com o relatório do navegador. Quando o objetivo é garantir que as interrupções de sessão só sejam aplicadas nas páginas de log-in/log-out, o que pode ser feito instrumentando apenas esse cenário.

Adicionar Quebras de Sessão

Uma chamada para document.ApmSdk.resetSession() no código javascript garantirá que a sessão existente seja fechada e a nova sessão seja iniciada. Ao fazer isso, ele isolará as interações antes que essa função seja chamada das interações depois dela. Adicionar isso, à página de log-in ou à página de destino de log-out (e timeout), pode ajudar a garantir que as interrupções de sessão no relatório do agente do navegador correspondam às interrupções das experiências do cliente.

Exemplo de código javascript que aciona uma quebra de sessão:

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

Alinhe o Browser SessionId com o Servidor SessionId

Uma abordagem alternativa para alinhar a sessão do servidor com a sessão do browser é alinhar o Id que é usado para identificar uma sessão. Algumas maneiras de fazer isso são descritas abaixo.

A exposição sessionId bruta pode enfraquecer o CSRF

A exposição de sessionId ao javascript e ao APM pode enfraquecer as proteções de CSRF (Cross-Site Request Forgery).

O benefício do sessionId idêntico (nos logs do servidor e no APM) deve ser avaliado em relação ao impacto nas medidas de segurança. Um hash unilateral pode tornar a exclusividade idêntica sem comprometer as proteções. Isso exigiria a mesma função de hash nos casos em que os logs do servidor e os logs do agente do browser são vinculados uns aos outros.

Os exemplos abaixo usam o valor sessionId bruto, não uma função hash específica:

Obtendo o aplicativo sessionId para o agente do browser do APM

Há algumas maneiras de obter o sessionId do servidor de aplicativos para o agente do browser.
  • Inicializar apmrum.sid do código do aplicativo

    Isso requer que o recurso no código do aplicativo exponha o sessionId ativo no html resultante. O código do aplicativo deve produzir o código html/javascript que inicializa a propriedade apmrum.sid com sessionId.

    O código do aplicativo é adicionado ao corpo do código html como o seguinte:

    <script language="text/javascript">
       window.apmrum = window.apmrum || {};
       window.apmrum.sid = '<?PHP echo getSessionId(); ?>';
    </script>
  • Exponha o cookie sessionId e instrua o agente do navegador a usá-lo

    Nos casos em que o aplicativo sessionId não é protegido pelo flag HttpOnly, o agente do browser pode ser configurado para ler e usar o valor do cookie sessionId.

    Amostra do html abaixo usando o nome do cookie do servidor de aplicativos, neste caso 'JSessionId':

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