[SESSION] Mélange des données entre diverses session navigateur d'une même application

Request description

Nous constations sur une application en Production en Simplicité 5.1.3, une session (parmi plusieurs : plusieurs fenêtres navigateur affichant chacune l’application sur 1 dossier particulier) peut utiliser les données d’un dossier d’une autre session (autre fenêtre navigateur).
Est-ce une limitation / dysfonctionnement dans l’absolu ou de la version ? Si oui quelle est la trajectoire de résolution ?
Cela pourrait-il venir d’un effet de bord de paramétrage ? Dans ce cas y a-t-il un contournement possible ?
Merci
Cordialement,

----description of the request----

Steps to reproduce

This request concerns an up-to-date Simplicité instance
and these are the steps to reproduce it:

Technical information

Instance /health

[Platform]
Status=OK
Version=5.1.30
BuiltOn=2022-02-22 17:20
Git=release/131ccaa2f66a6b8c713377febeda0f5ec566f3de
Encoding=UTF-8
EndpointIP=172.18.0.3
EndpointURL=http://2bbe166bdf0e:8080
TimeZone=Europe/Paris
SystemDate=2023-02-15 17:50:13

[Application]
ApplicationVersion=2.3.0
ContextPath=
ContextURL=http://istdsimp.ansm-intra.fr:8080
ActiveSessions=57
TotalUsers=763
EnabledUsers=418
LastLoginDate=2023-02-15 17:49:14

[Server]
ServerInfo=Apache Tomcat/9.0.58
ServerType=WEB
ServerActiveSessions=161

[OS]
Name=Linux
Architecture=amd64
Version=5.3.18-24.52-default
DockerImageName=centos7
SystemEncoding=UTF-8

[Disk]
DiskFree=38263
DiskUsable=37722
DiskTotal=255989

[JavaVM]
Version=17.0.2
Vendor=Eclipse Adoptium
VMName=OpenJDK 64-Bit Server VM
VMVersion=17.0.2+8
ScriptEngine=rhino
ScriptEngineVersion=Rhino 1.7.13 2020 09 02
HeapFree=1795086
HeapSize=4036608
HeapMaxSize=4036608
TotalFreeSize=1795086

[Cache]
GrantCache=0
GrantCacheMax=0
GrantCacheRatio=0
ObjectCache=2137
ObjectCacheMax=10000
ObjectCacheRatio=21
ProcessCache=0
ProcessCacheMax=10000
ProcessCacheRatio=0

[Database]
Vendor=4
ProductName=Oracle
ProductVersion=Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
DriverName=Oracle JDBC driver
DriverVersion=21.1.0.0.0
DBDate=2023-02-15 17:50:13
DBDateOffset=0
DBPatchLevel=5;P01;3912ca6c44bd2eba0e0b0ca850d8e290
UsingBLOBs=true

[Healthcheck]
Date=2023-02-15 17:50:13
ElapsedTime=27

Simplicité logs
---paste the content of the **relevant** server-side logs---
Browser logs
---paste content of the **relevant** browser-side logs---
Other relevant information

----E.g. type of deployment, browser vendor and version, etc.----

Bonjour Hafid,

La première chose que je constate c’est que vous êtes en 5.1.3, la release actuelle est la 5.2.31 et comporte plusieurs patch de sécurité, notamment le fix de la vulnérabilité Log4j de décembre 2021 : Log4j 2.x vulnerability - UPDATED

Il serait judicieux de vous mettre à jour rapidement sur au moins la 5.1.56 (dernière révision de la 5.1)

Concernant le bug que tu décris, qu’est-ce que tu entends par :

Peux-tu spécifier une procédure pour reproduire le bug ?

Bonjour Alistair,

OK pour l’upgrade. On y travaillera dans les meilleurs délais.
=> des changements notables dans cette version pouvant nous impacter ?

Pour la description du dysfonctionnement, cela sera plus simple avec un exemple.
L’utilisateur ouvre 3 fenêtres navigateur sur chacune d’elle il se met sur un dossier :
Session 1 : dossier 1
Session 2 : dossier 2
Session 3 : dossier 3
il se positionne sur la session 3 et fait une action (exemple une affectation), il arrive que la notification transmise par le système fasse référence au dossier 1 ou 2 (au lieu du 3)
Je ne sais pas si c’es facilement reproductible mais cela est avéré. Malheureusement je n’ai pas de logs …

Bien à toi
Cordialement,

L’architecture actuelle est basée sur une session TOMCAT avec un cookie JSESSIONID.

Donc ouvrir N onglets dans un même navigateur authentifié, c’est travailler en parallèle dans 1 seule et même session serveur = regardez le cookie de vos onglets, c’est le même, donc vu du serveur les requêtes qu’il reçoit viennent de la “même page”, il n’y a aucune notion d’onglet séparé.

Suivant votre navigation dans les 2 onglets, en back les données vont potentiellement se mélanger (valeurs/recherche courantes dans l’instance d’objet, son parent object…).
C’est donc à proscrire.

Il faut former vos utilisateurs qui ont besoin de plusieurs “sessions uniques” à ouvrir plusieurs navigateurs distincts (chrome + safari + FF + edge + des sessions privées…).

Par contre c’est effectivement peu compréhensible pour un utilisateur lambda non habitué aux architectures client/serveur/stateful.

Votre besoin est une feature request :

  • on va étudier la possibilité de générer un “identifiant client par onglet”
  • qui sera envoyé au serveur à chaque appel en plus du JSESSIONID
  • le serveur pourra alors créer/utiliser des “instances d’objet par onglet”
  • mais il y aura toujours une mutualisation de certaines ressources (typiquement la session tomcat, les Grant, les paramètres systèmes…), ce ne sera en aucun cas une nouvelle session/avec un nouvelle authentification.

On va intégrer cela à la release candidate 5.3.

Bonjour,
Merci pour ces précisions.
Est-ce des fenêtres “privées” distincts d’un même navigateur contournerait la problématique ?
Cordialement,

Hélas non, un navigateur “privé” partage aussi son cookie JSESSIONID.
donc par exemple pour avoir 6 fenêtres isolées, il faudra faire par exemple :

  • chrome + chrome privé
  • FF + FF privé
  • edge + edge privé

Et 6 authentifications / fenêtres de logon.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.