[gatein-commits] gatein SVN: r2475 - components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/filter.

do-not-reply at jboss.org do-not-reply at jboss.org
Mon Apr 5 13:59:36 EDT 2010


Author: sohil.shah at jboss.com
Date: 2010-04-05 13:59:36 -0400 (Mon, 05 Apr 2010)
New Revision: 2475

Added:
   components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/filter/AbstractLogoutFilter.java
Modified:
   components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/filter/JOSSOLogoutFilter.java
   components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/filter/OpenSSOLogoutFilter.java
Log:
GTNPORTAL-996 - GateIn+JOSSO integration: Problems with logout

Added: components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/filter/AbstractLogoutFilter.java
===================================================================
--- components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/filter/AbstractLogoutFilter.java	                        (rev 0)
+++ components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/filter/AbstractLogoutFilter.java	2010-04-05 17:59:36 UTC (rev 2475)
@@ -0,0 +1,92 @@
+/*
+ * JBoss, a division of Red Hat
+ * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.gatein.sso.agent.filter;
+
+import java.io.IOException;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * @author <a href="mailto:sshah at redhat.com">Sohil Shah</a>
+ */
+public abstract class AbstractLogoutFilter implements Filter
+{
+	protected String logoutUrl;
+
+	public void init(FilterConfig config) throws ServletException
+	{
+		this.logoutUrl = config.getInitParameter("LOGOUT_URL");
+	}
+
+	public void destroy()
+	{
+	}
+
+	public void doFilter(ServletRequest request, ServletResponse response,
+			FilterChain chain) throws IOException, ServletException
+	{
+		HttpServletRequest httpRequest = (HttpServletRequest) request;
+		HttpServletResponse httpResponse = (HttpServletResponse) response;
+
+		boolean isLogoutInProgress = this.isLogoutInProgress(httpRequest);
+
+		if (isLogoutInProgress)
+		{
+
+			if (httpRequest.getSession().getAttribute("SSO_LOGOUT_FLAG") == null)
+			{
+				httpRequest.getSession().setAttribute("SSO_LOGOUT_FLAG", Boolean.TRUE);
+				
+				httpResponse.sendRedirect(this.getRedirectUrl(httpRequest));
+				return;
+			}
+			else
+			{
+				// clear the LOGOUT flag
+				httpRequest.getSession().removeAttribute("SSO_LOGOUT_FLAG");
+			}
+		}
+
+		chain.doFilter(request, response);
+	}
+
+	private boolean isLogoutInProgress(HttpServletRequest request)
+	{
+		String action = request.getParameter("portal:action");
+
+		if (action != null && action.equals("Logout"))
+		{
+			return true;
+		}
+
+		return false;
+	}
+	
+	protected abstract String getRedirectUrl(HttpServletRequest httpRequest);
+}

Modified: components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/filter/JOSSOLogoutFilter.java
===================================================================
--- components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/filter/JOSSOLogoutFilter.java	2010-04-05 16:39:25 UTC (rev 2474)
+++ components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/filter/JOSSOLogoutFilter.java	2010-04-05 17:59:36 UTC (rev 2475)
@@ -21,17 +21,8 @@
 */
 package org.gatein.sso.agent.filter;
 
-import java.io.IOException;
 import java.net.URLEncoder;
-
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 
 //Works for GateIn Portal Logout URL = {AnyURL}?portal:componentId=UIPortal&portal:action=Logout
 
@@ -45,7 +36,7 @@
  *     <filter-class>org.gatein.sso.agent.filter.JOSSOLogoutFilter</filter-class>                                                      
  *     <init-param>                                 
  *       <!-- This should point to your JOSSO authentication server -->                                                                                              
- *       <param-name>JOSSO_LOGOUT_URL</param-name>                                                                                                
+ *       <param-name>LOGOUT_URL</param-name>                                                                                                
  *       <param-value>http://localhost:8888/josso/signon/logout.do</param-value>                                                                                                         
  *     </init-param>                                                                                                                              
  * </filter>   
@@ -63,56 +54,23 @@
 /**
  * @author <a href="mailto:sshah at redhat.com">Sohil Shah</a>
  */
-public class JOSSOLogoutFilter implements Filter
+public class JOSSOLogoutFilter extends AbstractLogoutFilter
 {
-	private String jossoLogoutUrl;
-	
-	public void init(FilterConfig config) throws ServletException
+	protected String getRedirectUrl(HttpServletRequest httpRequest)
 	{
-		this.jossoLogoutUrl = config.getInitParameter("JOSSO_LOGOUT_URL");
-	}
-
-	public void destroy()
-	{
-	}
-
-	public void doFilter(ServletRequest request, ServletResponse response,
-			FilterChain chain) throws IOException, ServletException
-	{
-		HttpServletRequest httpRequest = (HttpServletRequest)request;
-		HttpServletResponse httpResponse = (HttpServletResponse)response;
-		
-		boolean isLogoutInProgress = this.isLogoutInProgress(httpRequest);
-		
-		if(isLogoutInProgress)
+		try
 		{
-						
-			if(httpRequest.getSession().getAttribute("SSO_LOGOUT_FLAG") == null)
-			{
-				httpRequest.getSession().setAttribute("SSO_LOGOUT_FLAG", Boolean.TRUE);
-				String parameters = URLEncoder.encode("portal:componentId=UIPortal&portal:action=Logout", "UTF-8");
-				httpResponse.sendRedirect(jossoLogoutUrl+"?josso_back_to="+httpRequest.getRequestURL()+"?"+parameters);			
-				return;
-			}
-			else
-			{
-				//clear the LOGOUT flag
-				httpRequest.getSession().removeAttribute("SSO_LOGOUT_FLAG");
-			}
+			String parameters = URLEncoder.encode(
+							"portal:componentId=UIPortal&portal:action=Logout", "UTF-8");
+			
+			String redirectUrl = this.logoutUrl + "?josso_back_to="
+							+ httpRequest.getRequestURL() + "?" + parameters;
+			
+			return redirectUrl;
 		}
-		
-		chain.doFilter(request, response);		
-	}
-	
-	private boolean isLogoutInProgress(HttpServletRequest request)
-	{
-		String action = request.getParameter("portal:action");
-		
-		if(action != null && action.equals("Logout"))
+		catch(Exception e)
 		{
-			return true;
+			throw new RuntimeException(e);
 		}
-		
-		return false;
 	}
 }

Modified: components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/filter/OpenSSOLogoutFilter.java
===================================================================
--- components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/filter/OpenSSOLogoutFilter.java	2010-04-05 16:39:25 UTC (rev 2474)
+++ components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/filter/OpenSSOLogoutFilter.java	2010-04-05 17:59:36 UTC (rev 2475)
@@ -21,17 +21,8 @@
 */
 package org.gatein.sso.agent.filter;
 
-import java.io.IOException;
 import java.net.URLEncoder;
-
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 
 //Works for GateIn Portal Logout URL = {AnyURL}?portal:componentId=UIPortal&portal:action=Logout
 
@@ -45,13 +36,13 @@
  *     <filter-class>org.gatein.sso.agent.filter.OpenSSOLogoutFilter</filter-class>                                                      
  *     <init-param>                                 
  *       <!-- This should point to your OpenSSO authentication server -->                                                                                              
- *       <param-name>OPENSSO_LOGOUT_URL</param-name>                                                                                                
+ *       <param-name>LOGOUT_URL</param-name>                                                                                                
  *       <param-value>http://localhost:8888/opensso/UI/Logout</param-value>                                                                                                         
  *     </init-param>                                                                                                                              
  * </filter>   
  * 
  * <filter-mapping>
- *    <filter-name>JOSSOLogoutFilter</filter-name>
+ *    <filter-name>OpenSSOLogoutFilter</filter-name>
  *    <url-pattern>/*</url-pattern>
  *  </filter-mapping>
  *
@@ -63,56 +54,22 @@
 /**
  * @author <a href="mailto:sshah at redhat.com">Sohil Shah</a>
  */
-public class OpenSSOLogoutFilter implements Filter
-{
-	private String logoutUrl;
-	
-	public void init(FilterConfig config) throws ServletException
+public class OpenSSOLogoutFilter extends AbstractLogoutFilter
+{		
+	protected String getRedirectUrl(HttpServletRequest httpRequest)
 	{
-		this.logoutUrl = config.getInitParameter("OPENSSO_LOGOUT_URL");
-	}
-
-	public void destroy()
-	{
-	}
-
-	public void doFilter(ServletRequest request, ServletResponse response,
-			FilterChain chain) throws IOException, ServletException
-	{
-		HttpServletRequest httpRequest = (HttpServletRequest)request;
-		HttpServletResponse httpResponse = (HttpServletResponse)response;
-		
-		boolean isLogoutInProgress = this.isLogoutInProgress(httpRequest);
-		
-		if(isLogoutInProgress)
+		try
 		{
-						
-			if(httpRequest.getSession().getAttribute("SSO_LOGOUT_FLAG") == null)
-			{
-				httpRequest.getSession().setAttribute("SSO_LOGOUT_FLAG", Boolean.TRUE);
-				String parameters = URLEncoder.encode("portal:componentId=UIPortal&portal:action=Logout", "UTF-8");
-				httpResponse.sendRedirect(this.logoutUrl+"?realm=gatein&goto="+httpRequest.getRequestURL()+"?"+parameters);			
-				return;
-			}
-			else
-			{
-				//clear the LOGOUT flag
-				httpRequest.getSession().removeAttribute("SSO_LOGOUT_FLAG");
-			}
+			String parameters = URLEncoder.encode(
+							"portal:componentId=UIPortal&portal:action=Logout", "UTF-8");
+			
+			String redirectUrl = this.logoutUrl+"?realm=gatein&goto="+httpRequest.getRequestURL()+"?"+parameters;
+			
+			return redirectUrl;
 		}
-		
-		chain.doFilter(request, response);		
-	}
-	
-	private boolean isLogoutInProgress(HttpServletRequest request)
-	{
-		String action = request.getParameter("portal:action");
-		
-		if(action != null && action.equals("Logout"))
+		catch(Exception e)
 		{
-			return true;
+			throw new RuntimeException(e);
 		}
-		
-		return false;
 	}
 }



More information about the gatein-commits mailing list