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 @@
 				<entry key="content.upload.ceiling" value="sakai.content.upload.ceiling"/>
 				<entry key="content.upload.dir" value="sakai.content.upload.dir"/>
 				<entry key="force.url.secure" value="sakai.force.url.secure"/>
+				<entry key="cookieName" value="sakai.cookieName"/>
+				<entry key="cookieDomain" value="sakai.cookieDomain"/>
 			</map>
 		</property>
 	</bean>
