Index: api/src/main/java/org/sakaiproject/util/RequestFilter.java
===================================================================
--- api/src/main/java/org/sakaiproject/util/RequestFilter.java (revision 57173)
+++ api/src/main/java/org/sakaiproject/util/RequestFilter.java (working copy)
@@ -199,6 +199,12 @@
/** The name of the system property that will be used when setting the value of the session cookie. */
protected static final String SAKAI_SERVERID = "sakai.serverId";
+ /** The name of the system property that will be used when setting the name of the session cookie. */
+ protected static final String SAKAI_COOKIE_NAME = "sakai.cookieName";
+
+ /** The name of the system property that will be used when setting the domain of the session cookie. */
+ protected static final String SAKAI_COOKIE_DOMAIN = "sakai.cookieDomain";
+
/** If true, we deliver the Sakai wide session as the Http session for each request. */
protected int m_sakaiHttpSession = TOOL_SESSION;
@@ -1023,6 +1029,17 @@
Session s = null;
String sessionId = null;
+ // retrieve the configured cookie name, if any
+ String cookieName = System.getProperty(SAKAI_COOKIE_NAME);
+ // if not configured, set to default
+ if (cookieName == null)
+ {
+ cookieName = SESSION_COOKIE;
+ }
+ // retrieve the configured cookie domain
+ // if not configured, we will ignore setting the cookie domain property later
+ String cookieDomain = System.getProperty(SAKAI_COOKIE_DOMAIN);
+
// compute the session cookie suffix, based on this configured server id
String suffix = System.getProperty(SAKAI_SERVERID);
if ((suffix == null) || (suffix.length() == 0))
@@ -1046,7 +1063,7 @@
sessionId = req.getParameter(ATTR_SESSION);
// find our session id from our cookie
- Cookie c = findCookie(req, SESSION_COOKIE, suffix);
+ Cookie c = findCookie(req, cookieName, suffix);
if (sessionId == null && c != null)
{
@@ -1124,9 +1141,13 @@
if ((s == null) && (c != null))
{
// remove the cookie
- c = new Cookie(SESSION_COOKIE, "");
+ c = new Cookie(cookieName, "");
c.setPath("/");
c.setMaxAge(0);
+ if (cookieDomain != null)
+ {
+ c.setDomain(cookieDomain);
+ }
res.addCookie(c);
}
@@ -1140,9 +1161,13 @@
if ((c == null) || (!c.getValue().equals(sessionId)))
{
// set the cookie
- c = new Cookie(SESSION_COOKIE, sessionId);
+ c = new Cookie(cookieName, sessionId);
c.setPath("/");
c.setMaxAge(-1);
+ if (cookieDomain != null)
+ {
+ c.setDomain(cookieDomain);
+ }
if (req.isSecure() == true)
{
c.setSecure(true);
Index: component-manager/src/main/bundle/org/sakaiproject/config/sakai-configuration.xml
===================================================================
--- component-manager/src/main/bundle/org/sakaiproject/config/sakai-configuration.xml (revision 57173)
+++ component-manager/src/main/bundle/org/sakaiproject/config/sakai-configuration.xml (working copy)
@@ -33,6 +33,8 @@
+
+