Author: alain_defrance
Date: 2011-03-15 06:46:42 -0400 (Tue, 15 Mar 2011)
New Revision: 6031
Added:
portal/trunk/component/web/security/src/main/java/org/exoplatform/web/login/GateinWCIController.java
Modified:
portal/trunk/component/web/security/src/main/java/org/exoplatform/web/login/ErrorLoginServlet.java
portal/trunk/component/web/security/src/main/java/org/exoplatform/web/login/InitiateLoginServlet.java
portal/trunk/component/web/security/src/main/java/org/exoplatform/web/security/PortalLoginController.java
portal/trunk/pom.xml
Log:
GTNPORTAL-1808 : Move some code from gatein authentication (InitialeLoginServlet &
ErrorLoginServlet) to wci authentication (Create WCIController)
Modified:
portal/trunk/component/web/security/src/main/java/org/exoplatform/web/login/ErrorLoginServlet.java
===================================================================
---
portal/trunk/component/web/security/src/main/java/org/exoplatform/web/login/ErrorLoginServlet.java 2011-03-15
03:56:03 UTC (rev 6030)
+++
portal/trunk/component/web/security/src/main/java/org/exoplatform/web/login/ErrorLoginServlet.java 2011-03-15
10:46:42 UTC (rev 6031)
@@ -25,6 +25,7 @@
import org.exoplatform.services.log.Log;
import org.exoplatform.web.security.security.AbstractTokenService;
import org.exoplatform.web.security.security.CookieTokenService;
+import org.gatein.wci.security.WCIController;
import java.io.IOException;
import java.util.Enumeration;
@@ -59,6 +60,8 @@
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException
{
+ WCIController wciController = new GateinWCIController(getServletContext());
+
PortalContainer pContainer = PortalContainer.getInstance();
ServletContext context = pContainer.getPortalContext();
// Unregister the token cookie
@@ -71,33 +74,9 @@
resp.setContentType("text/html; charset=UTF-8");
// This allows the customer to define another login page without changing the
portal
- showLoginForm(req, resp);
+ wciController.showLoginForm(req, resp);
}
- private void showLoginForm(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException
- {
- String initialURI =
(String)req.getAttribute("javax.servlet.forward.request_uri");
- if (initialURI == null)
- {
- throw new IllegalStateException("request attribute
javax.servlet.forward.request_uri should not be null here");
- }
- int jsecurityIndex = initialURI.lastIndexOf("/j_security_check");
- if (jsecurityIndex != -1)
- {
- initialURI = initialURI.substring(0, jsecurityIndex);
- }
-
- try
- {
- req.setAttribute("org.gatein.portal.login.initial_uri", initialURI);
-
getServletContext().getRequestDispatcher("/login/jsp/login.jsp").include(req,
resp);
- }
- finally
- {
- req.removeAttribute("org.gatein.portal.login.initial_uri");
- }
- }
-
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException
{
doGet(req, resp);
Added:
portal/trunk/component/web/security/src/main/java/org/exoplatform/web/login/GateinWCIController.java
===================================================================
---
portal/trunk/component/web/security/src/main/java/org/exoplatform/web/login/GateinWCIController.java
(rev 0)
+++
portal/trunk/component/web/security/src/main/java/org/exoplatform/web/login/GateinWCIController.java 2011-03-15
10:46:42 UTC (rev 6031)
@@ -0,0 +1,99 @@
+/*
+* Copyright (C) 2003-2009 eXo Platform SAS.
+*
+* 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.exoplatform.web.login;
+
+import org.gatein.wci.security.Credentials;
+import org.gatein.wci.security.WCIController;
+
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * @author <a href="mailto:alain.defrance@exoplatform.com">Alain
Defrance</a>
+ * @version $Revision$
+ */
+public class GateinWCIController extends WCIController
+{
+ private ServletContext servletContext;
+
+ public GateinWCIController(final ServletContext servletContext)
+ {
+ if (servletContext == null)
+ {
+ throw new IllegalArgumentException("servletContext is null");
+ }
+ this.servletContext = servletContext;
+ }
+
+ public void showLoginForm(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException
+ {
+ String initialURI = getInitialURI(req);
+ try
+ {
+ String queryString =
(String)req.getAttribute("javax.servlet.forward.query_string");
+ if (req.getAttribute("javax.servlet.forward.query_string") != null)
+ {
+ initialURI = initialURI + "?" + queryString;
+ }
+ req.setAttribute("org.gatein.portal.login.initial_uri", initialURI);
+
servletContext.getRequestDispatcher("/login/jsp/login.jsp").include(req, resp);
+ }
+ finally
+ {
+ req.removeAttribute("org.gatein.portal.login.initial_uri");
+ }
+ }
+
+ public void showErrorLoginForm(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
+ {
+ String initialURI = getInitialURI(req);
+
+ int jsecurityIndex = initialURI.lastIndexOf("/j_security_check");
+ if (jsecurityIndex != -1)
+ {
+ initialURI = initialURI.substring(0, jsecurityIndex);
+ }
+
+ try
+ {
+ req.setAttribute("org.gatein.portal.login.initial_uri", initialURI);
+
servletContext.getRequestDispatcher("/login/jsp/login.jsp").include(req, resp);
+ }
+ finally
+ {
+ req.removeAttribute("org.gatein.portal.login.initial_uri");
+ }
+ }
+
+ @Override
+ public Credentials getCredentials(final HttpServletRequest req, final
HttpServletResponse resp)
+ {
+ return (Credentials)req.getSession().getAttribute(Credentials.CREDENTIALS);
+ }
+
+ @Override
+ public String getHomeURI(final HttpServletRequest req)
+ {
+ return "/portal/private/classic";
+ }
+}
Modified:
portal/trunk/component/web/security/src/main/java/org/exoplatform/web/login/InitiateLoginServlet.java
===================================================================
---
portal/trunk/component/web/security/src/main/java/org/exoplatform/web/login/InitiateLoginServlet.java 2011-03-15
03:56:03 UTC (rev 6030)
+++
portal/trunk/component/web/security/src/main/java/org/exoplatform/web/login/InitiateLoginServlet.java 2011-03-15
10:46:42 UTC (rev 6031)
@@ -25,11 +25,10 @@
import org.exoplatform.web.security.security.TicketConfiguration;
import org.gatein.common.logging.Logger;
import org.gatein.common.logging.LoggerFactory;
-import org.gatein.wci.authentication.AuthenticationResult;
-import org.gatein.wci.authentication.GenericAuthenticationResult;
-import org.gatein.wci.authentication.ProgrammaticAuthenticationResult;
+import org.gatein.wci.ServletContainer;
import org.gatein.wci.security.Credentials;
import org.gatein.wci.impl.DefaultServletContainerFactory;
+import org.gatein.wci.security.WCIController;
import java.io.IOException;
@@ -37,7 +36,6 @@
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
/**
* Initiate the login dance.
@@ -58,14 +56,18 @@
public static final long LOGIN_VALIDITY =
1000 *
TicketConfiguration.getInstance(TicketConfiguration.class).getValidityTime();
+ /** . */
+ private WCIController wciController;
+
+ /** . */
+ private ServletContainer servletContainer =
DefaultServletContainerFactory.getInstance().getServletContainer();
+
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException
{
resp.setContentType("text/html; charset=UTF-8");
- HttpSession session = req.getSession();
- // Looking for credentials stored in the session
- Credentials credentials =
(Credentials)session.getAttribute(Credentials.CREDENTIALS);
+ Credentials credentials = getWCIController().getCredentials(req, resp);
//
if (credentials == null)
@@ -89,15 +91,14 @@
// This allows the customer to define another login page without
// changing the portal
- showLoginForm(req, resp);
+ getWCIController().showLoginForm(req, resp);
}
else
{
// Send authentication request
log.debug("Login initiated with no credentials in session but found
token " + token + " with existing credentials, " +
"performing authentication");
- //sendAuth(resp, credentials.getUsername(), token);
- sendAuth(req, resp, credentials.getUsername(), token);
+ getWCIController().sendAuth(req, resp, credentials.getUsername(), token);
}
}
else
@@ -105,85 +106,21 @@
// This allows the customer to define another login page without
// changing the portal
log.debug("Login initiated with no credentials in session and no token
cookie, redirecting to login page");
- showLoginForm(req, resp);
+ getWCIController().showLoginForm(req, resp);
}
}
else
{
// WCI authentication
- AuthenticationResult result =
DefaultServletContainerFactory.getInstance().getServletContainer()
- .login(req, resp, credentials.getUsername(), credentials.getPassword(),
LOGIN_VALIDITY);
-
- log.debug("Login initiated with credentials in session, performing
authentication");
- if (result instanceof GenericAuthenticationResult)
- {
- ((GenericAuthenticationResult) result).perform(req, resp);
- }
- else if (result instanceof ProgrammaticAuthenticationResult)
- {
-
resp.sendRedirect(resp.encodeRedirectURL((String)req.getAttribute("javax.servlet.forward.request_uri")));
- }
+ servletContainer.login(req, resp, credentials, LOGIN_VALIDITY,
wciController.getInitialURI(req));
}
}
- private void showLoginForm(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException
- {
- /*String initialURI =
(String)req.getAttribute("javax.servlet.forward.request_uri");
- if (initialURI == null)
- {
- throw new IllegalStateException("request attribute
javax.servlet.forward.request_uri should not be null here");
- }*/
- String initialURI = getInitialURI(req);
- try
- {
- String queryString =
(String)req.getAttribute("javax.servlet.forward.query_string");
- if ((String)req.getAttribute("javax.servlet.forward.query_string") !=
null)
- {
- initialURI = initialURI + "?" + queryString;
- }
- //req.setAttribute("org.gatein.portal.login.initial_uri",
initialURI);
-
//req.getSession(true).setAttribute("org.gatein.portal.login.initial_uri",
initialURI);
- req.setAttribute("org.gatein.portal.login.initial_uri", initialURI);
-
getServletContext().getRequestDispatcher("/login/jsp/login.jsp").include(req,
resp);
- }
- finally
- {
- //req.removeAttribute("org.gatein.portal.login.initial_uri");
-
//req.getSession(true).removeAttribute("org.gatein.portal.login.initial_uri");
- req.removeAttribute("org.gatein.portal.login.initial_uri");
- }
- }
-
- private String getInitialURI(HttpServletRequest req)
- {
- String initialURI =
(String)req.getAttribute("javax.servlet.forward.request_uri");
- if (initialURI == null)
- {
- throw new IllegalStateException("request attribute
javax.servlet.forward.request_uri should not be null here");
- }
- return initialURI;
- }
-
-
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException
{
doGet(req, resp);
}
- //private void sendAuth(HttpServletResponse resp, String jUsername, String jPassword)
throws IOException
- private void sendAuth(HttpServletRequest req, HttpServletResponse resp, String
jUsername, String jPassword) throws IOException
- {
- //String url = "j_security_check?j_username=" + jUsername +
"&j_password=" + jPassword;
- String initialURI = getInitialURI(req);
- if (!initialURI.endsWith("/"))
- {
- initialURI += "/";
- }
- String url = initialURI + "j_security_check?j_username=" + jUsername +
"&j_password=" + jPassword;
- url = resp.encodeRedirectURL(url);
- resp.sendRedirect(url);
- }
-
/**
* Extract the remember me token from the request or returns null.
*
@@ -214,4 +151,11 @@
{
return true;
}
+
+ private WCIController getWCIController() {
+ if (wciController == null) {
+ wciController = new GateinWCIController(getServletContext());
+ }
+ return wciController;
+ }
}
Modified:
portal/trunk/component/web/security/src/main/java/org/exoplatform/web/security/PortalLoginController.java
===================================================================
---
portal/trunk/component/web/security/src/main/java/org/exoplatform/web/security/PortalLoginController.java 2011-03-15
03:56:03 UTC (rev 6030)
+++
portal/trunk/component/web/security/src/main/java/org/exoplatform/web/security/PortalLoginController.java 2011-03-15
10:46:42 UTC (rev 6031)
@@ -51,14 +51,12 @@
// otherwise compute one
if (uri == null || uri.length() == 0)
{
- //uri = req.getContextPath() + "/private/classic";
uri = req.getContextPath();
log.debug("No initial URI found, will use default " + uri + "
instead ");
}
else
{
log.debug("Found initial URI " + uri);
-
//req.getSession(true).setAttribute("org.gatein.portal.login.initial_uri",
uri);
}
// if we do have a remember me
@@ -76,7 +74,6 @@
"in the next response");
Cookie cookie = new Cookie(InitiateLoginServlet.COOKIE_NAME, cookieToken);
cookie.setPath(req.getContextPath());
- //cookie.setMaxAge((int)tokenService.getValidityTime() / 1000);
cookie.setMaxAge((int)tokenService.getValidityTime());
resp.addCookie(cookie);
}
Modified: portal/trunk/pom.xml
===================================================================
--- portal/trunk/pom.xml 2011-03-15 03:56:03 UTC (rev 6030)
+++ portal/trunk/pom.xml 2011-03-15 10:46:42 UTC (rev 6031)
@@ -10,9 +10,9 @@
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.
+ Lesser General Public License for more detail
- You should have received a copy of the GNU Lesser General Public
+ 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.
@@ -45,7 +45,7 @@
<org.shindig.version>1.0-r790473-Patch05</org.shindig.version>
<nl.captcha.simplecaptcha.version>1.1.1-GA-Patch01</nl.captcha.simplecaptcha.version>
<org.gatein.common.version>2.0.3-GA</org.gatein.common.version>
- <org.gatein.wci.version>2.1.0-Alpha02</org.gatein.wci.version>
+ <org.gatein.wci.version>2.1.0-Beta01</org.gatein.wci.version>
<org.gatein.pc.version>2.3.0-Alpha01</org.gatein.pc.version>
<org.picketlink.idm>1.1.8.CR01</org.picketlink.idm>
<org.gatein.wsrp.version>2.0.0-GA</org.gatein.wsrp.version>