IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tomcat et TomEE Java Discussion :

[Spring Security/Spring MVC] Perte de session webapp Apache/Tomcat


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 101
    Points : 57
    Points
    57
    Par défaut [Spring Security/Spring MVC] Perte de session webapp Apache/Tomcat
    Hello !

    Je ne suis pas sûr d'être au bon endroit, mais je ne trouve pas de solution à mon problème et je n'ai plus d'idée pour le résoudre.

    Tout d'abord, voici une brève présentation de l'appli :
    - il s'agit d'une webapp en Java/Spring MVC avec authentification Spring Security, développée en Java 6 (1.6.0_45-b06)
    - elle tourne sur un Tomcat 6.0.44 sous Linux 2.6.18-407.el5
    - en frontal, il y a un Apache 2.2.3 en mod_jk sous Linux 2.6.18-406.el5

    Tout fonctionnait bien jusqu'à ce qu'on applique les mises à jour de sécurité des Linux (qui n'étaient pas à jour depuis plusieurs années...) et qu'on déchroote les serveurs (Apache et Tomcat étaient auparavant en environnement chrooté). On n'a pas fait de modification sur le WAR livré.

    Depuis, on a des pertes de session assez souvent et qui empêchent certains client de se connecter :
    - ils vont sur la page de login
    - ils rentrent les infos login/password correctes
    - ils sont redirigés vers la page d'accueil des utilisateurs authentifiés
    - ils cliquent sur un lien mais sont redirigés sur la page de login comme s'ils n'étaient pas authentifiés

    On n'arrive pas à reproduire le problème (peut-être parce qu'on passe par le réseau interne ?).

    Voici un exemple de log Apache (front) et Tomcat (back) mis en forme pour une navigation OK :

    15:46:55 : GET /appli/login.html
    Réponse HTTP 200
    Session créée : 0017E0E3227551B993664709C7FCDF5F

    15:47:04 : POST /appli/j_spring_security_check
    Réponse HTTP 302
    Tentative de connexion avec l'utilisateur nom_user_ok
    Session détruite : 0017E0E3227551B993664709C7FCDF5F
    Session créée : 6C384D9B6845FF3786E2EFA04AB22ECB
    Utilisateur authentifié : nom_user_ok
    JSESSIONID : 0017E0E3227551B993664709C7FCDF5F

    15:47:04 : GET /appli/home.html
    Réponse HTTP 200
    Redirection vers espace utilisateur
    JSESSIONID : 6C384D9B6845FF3786E2EFA04AB22ECB

    15:47:21 : GET /appli/secured/suiviActivite.html
    Réponse HTTP 200
    JSESSIONID : 6C384D9B6845FF3786E2EFA04AB22ECB

    Et le même pour une navigation KO :

    16:39:36 : GET /appli/login.html
    Réponse HTTP 200
    Session créée : E482653AE089448A7A39481B88365E54

    16:42:10 : POST /appli/j_spring_security_check
    Réponse HTTP 302
    Tentative de connexion avec l'utilisateur nom_user_ko
    Session détruite : C57B6BE21B277043F561FDC5CC7D081E
    Session créée : 6B562D80B74EA5E61C23609738FF3EF0
    Utilisateur authentifié : nom_user_ko
    JSESSIONID : C57B6BE21B277043F561FDC5CC7D081E

    16:42:10 : GET /appli/home.html
    Réponse HTTP 200
    Redirection vers espace utilisateur
    Session créée : 71E49571623FEE6AF136EC16D298D7F2
    JSESSIONID : 6B562D80B74EA5E61C23609738FF3EF0

    16:42:19 : GET /appli/secured/suiviActivite.html
    Réponse HTTP 302
    JSESSIONID : 71E49571623FEE6AF136EC16D298D7F2
    Et là, la redirection 302 se fait vers la page de login comme si l'utilisateur n'était pas authentifié.

    On remarque que l'ID de session change entre la page de login et le POST vers Spring Security. De plus on récréé une session sur la page home au lieu d'utiliser celle créée après le POST.

    J'ai l'impression que les sessions sont perdues côté Apache et que ça n'a rien à voir avec l'applicatif ou les MAJ. On a remarqué beaucoup de TCP reset entre Apache et les clients.

    Bref, je suis perdu. Merci déjà aux courageux qui auront lu jusqu'ici. Et ma reconnaissance éternelle au héros (ou à l'héroïne) qui trouvera une solution !

  2. #2
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 101
    Points : 57
    Points
    57
    Par défaut
    Finalement ça venait de la configuration d'Apache :
    - / était redirigé vers /appli
    - certains navigateurs faisaient une requête pour avoir l'icône sur /favicon.ico et étaient redirigés vers /appli/favicon.ico qui aboutissait à une 404
    - le fait d'être redirigé avait pour conséquence de créer une nouvelle session avec un nouveau jSessionId
    - le navigateur continuait donc avec cette nouvelle session qui n'était pas authentifiée côté Spring Security
    - Spring Security redirigeait donc vers la page de login lors de l'accès à une page authentifiée

    CQFD, mais c'était pas évident !
    En remplaçant la redirection par de l'URL rewriting /* vers /appli/* dans la conf Apache, ça fonctionne.

    Voilà voilà, si jamais ça peut servir à quelqu'un...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/11/2013, 17h50
  2. Réponses: 40
    Dernier message: 04/05/2011, 00h12
  3. Réponses: 1
    Dernier message: 19/12/2010, 12h44
  4. Réponses: 2
    Dernier message: 26/05/2008, 11h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo