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
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 propriedadeapmrum.sid
comsessionId
.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á-loNos casos em que o aplicativo
sessionId
não é protegido pelo flagHttpOnly
, o agente do browser pode ser configurado para ler e usar o valor do cookiesessionId
.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>