Issue Details (XML | Word | Printable)

Key: JS2-582
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Ate Douma
Reporter: Ate Douma
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Jetspeed 2

Portlet sessions are not invalidated when the portal session is destroyed with emptySessionPath="true"

Created: 16/Sep/06 01:33 AM   Updated: 16/Sep/06 01:36 AM
Return to search
Component/s: Container
Affects Version/s: 2.1-dev, 2.1
Fix Version/s: 2.1-dev, 2.1

Time Tracking:
Not Specified

Environment: Tomcat 5.5.17 with Connector setting emptySessionPath="true"

Resolution Date: 16/Sep/06 01:36 AM


 Description  « Hide
To be able to "share" a PortletSession with a servlet accessed directly of a PortletApplication (as specified by JSR-168), you have to define Tomcat (5.5.x) Connector attribute emptySessionPath="true".
I recently was required to do this, and then I noticed this had a critical security side-effect with the current version of Jetspeed.

The emptySessionPath="true" setting causes only one cookie to be set for the portal root path which is then shared by all web applications (portal and portlet applications) for one user connection.
Now, when you logout in the portal, the portal session is invalidated, *but all the portlet application sessions remain active*!
When you login as a different user, you *still* see the session data from the previous (portal) session.
Without emptySessionPath="true", the PortletSessions created are actually "shadowing" the Portal session, and then those get invalid too when the portal session is destroyed.

The real solution (also already somewhat implicitly indicated by the JSR-168 spec) is actively invalidating all created PortletApplication sessions when the Portal application session becomes invalid (logout or timeout).

I've created a lightweight PortalSessionsManager implementation which seems to work very well.
This new component has to be configured as a Portal Service in the spring assembly, which I will do as default, and then emptySessionPath="true" can safely be used.

 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
No work has yet been logged on this issue.