On 02/10/2013 22:26, Stefan Haberl wrote:
> I've a context.xml like so:
> 
> <Context sessionCookieDomain="acme.org" sessionCookieName="acme" 
> useHttpOnly="true" disableURLRewriting="true" />
> 
> <!-- disable persistent sessions --> <Manager pathname="" />
> 
> </Context>
> 
> 
> I'm using Spring Security, which creates a new session after a user
> has been authenticated to prevent session fixation attacks.
> Everything works as expected *unless* I add a
> sessionCookiePath="/" to the config above. With the cookie path set
> to root the following code (inside Spring Security's
> SessionFixationProtectionStrategy):
> 
> HttpSession session = request.getSession(); String originalSessionId
> = session.getId(); ... session.invalidate(); session =
> request.getSession(true); // we now have a new session …
> 
> will yield the *original* session again! I'm runnning on Tomcat
> 7.0.42.
> 
> Setting the cookie path to root is not necessary in my case (because
> I'm running the webapp as ROOT anyhow), but is this expected
> behaviour?

Yes, this is expected behaviour. The documentation hints at this but
does not make it explicitly clear.

Setting sessionCookiePath="/" is treated as a special case to support
portlet implementations. Once one web application obtains a session all
subsequent sessions for any web application also configured with
sessionCookiePath="/" will always get the same session ID. This holds
even if the session is invalidated and a new one created.

I'll add some clearer text to the documentation.

If a set of web application operates in this mode, changing the session
ID is a lot harder. You'd have to write a custom Tomcat component to do
it for you and even then I'm not sure that you can guarantee a smooth
change over.

Mark

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to