Accessing the JSESSIONID from JSF
Posted
by Frank Nimphius
on Oracle Blogs
See other posts from Oracle Blogs
or by Frank Nimphius
Published on Thu, 24 Nov 2011 01:48:07 -0600
Indexed on
2011/11/24
10:13 UTC
Read the original article
Hit count: 343
/Oracle/ADF Security
The following code attempts to access and print the user session ID from ADF Faces, using the session cookie that is automatically set by the server and the Http Session object itself.
FacesContext fctx = FacesContext.getCurrentInstance();
ExternalContext ectx = fctx.getExternalContext();
HttpSession session = (HttpSession) ectx.getSession(false);
String sessionId = session.getId();
System.out.println("Session Id = "+ sessionId);
Cookie[] cookies =
((HttpServletRequest)ectx.getRequest()).getCookies();
//reset session string sessionId = null; if (cookies != null) { for (Cookie brezel : cookies) { if (brezel.getName().equalsIgnoreCase("JSESSIONID")) { sessionId = brezel.getValue(); break; } } } System.out.println("JSESSIONID cookie = "+sessionId);
Though apparently both approaches to the same thing, they are different in the value they return and the condition under which they work. The getId method, for example returns a session value as shown below
grLFTNzJhhnQTqVwxHMGl0WDZPGhZFl2m0JS5SyYVmZqvrfghFxy!-1834097692!1322120041091
Reading the cookie, returns a value like this
grLFTNzJhhnQTqVwxHMGl0WDZPGhZFl2m0JS5SyYVmZqvrfghFxy!-1834097692
Though both seem to be identical, the difference is within "!1322120041091" added to the id when reading it directly from the Http Session object. Dependent on the use case the session Id is looked up for, the difference may not be important.
Another difference however, is of importance. The cookie reading only works if the session Id is added as a cookie to the request, which is configurable for applications in the weblogic-application.xml file. If cookies are disabled, then the server adds the session ID to the request URL (actually it appends it to the end of the URI, so right after the view Id reference). In this case however no cookie is set so that the lookup returns empty. In both cases however, the getId variant works.
© Oracle Blogs or respective owner