2010-03-23 3 views
3

J'ai une application web qui contient à la fois des pages sécurisées (SSL) et non sécurisées.Tomcat peut-il fournir des sessions séparées (ou HTTPS uniquement) pour les demandes HTTPS?

Un utilisateur peut se connecter au site et doit apparaître connecté dans les zones SSL et non SSL.

(NB SSL est pas mis en œuvre par Tomcat, mais via des serveurs Apache qui sont assis devant Tomcat -. Si Tomcat n'a pas la configuration SSL.)

Le haut-connecté état est actuellement maintenu par une servlet session (en utilisant la gestion de session vanilla de Tomcat). Le problème évident avec cette approche est que le cookie JSESSIONID est transporté sur les connexions HTTP et HTTPS, ce qui signifie qu'il est potentiellement possible de l'intercepter et de détourner la session.

Y a-t-il des solutions à ce problème sans lancer notre propre gestion de session (par exemple, Tomcat répond-il à cette situation)?

Je suis prêt à mettre en œuvre notre propre gestion de session, mais je ne veux pas réinventer quelque chose qui peut être déjà pris en charge.

Répondre

3

Vous dites que le SSL est implémenté sur le serveur Apache et non transmis à Tomcat, donc Tomcat traite tout le parcours comme HTTP? Si tel est le cas, Tomcat ne créera pas de JSESSIONID séparés car il ne connaît pas le protocole HTTPS.

Vous pouvez vérifier le request.getUserPrincipal() pour voir si l'utilisateur est connecté.

+0

Bon point, bien que l'en-tête soit transmis de sorte que le drapeau HTTPS soit présent - cependant Tomcat ne le considère probablement pas. Merci pour le rappel sur le principal de l'utilisateur (trop long passé avec les méthodes auth d'origine :) – Joe