From efcff98372b94c5ee3c1f367ce8bbffe93bbd2b5 Mon Sep 17 00:00:00 2001 From: Cristiano Nicolai Date: Mon, 14 Feb 2011 11:12:03 +1000 Subject: [PATCH 5/5] Workaround to integrate jbpm-gwt-console-server with Guvnor when security is enabled --- jbpm-gwt/jbpm-gwt-server-war/pom.xml | 6 ++ .../console/filter/GuvnorAuthFilter.java | 87 ++++++++++++++++++++ 2 files changed, 93 insertions(+), 0 deletions(-) create mode 100644 jbpm-gwt/jbpm-gwt-server-war/src/main/java/org/jbpm/integration/console/filter/GuvnorAuthFilter.java diff --git a/jbpm-gwt/jbpm-gwt-server-war/pom.xml b/jbpm-gwt/jbpm-gwt-server-war/pom.xml index 9ef9bc1..4a3757b 100644 --- a/jbpm-gwt/jbpm-gwt-server-war/pom.xml +++ b/jbpm-gwt/jbpm-gwt-server-war/pom.xml @@ -83,5 +83,11 @@ 1.0 provided + + javax.servlet + servlet-api + 2.5 + provided + diff --git a/jbpm-gwt/jbpm-gwt-server-war/src/main/java/org/jbpm/integration/console/filter/GuvnorAuthFilter.java b/jbpm-gwt/jbpm-gwt-server-war/src/main/java/org/jbpm/integration/console/filter/GuvnorAuthFilter.java new file mode 100644 index 0000000..cbcee60 --- /dev/null +++ b/jbpm-gwt/jbpm-gwt-server-war/src/main/java/org/jbpm/integration/console/filter/GuvnorAuthFilter.java @@ -0,0 +1,87 @@ +package org.jbpm.integration.console.filter; + +import java.io.IOException; +import java.net.Authenticator; +import java.net.PasswordAuthentication; +import java.util.Properties; + +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 org.jbpm.integration.console.forms.AbstractFormDispatcher; + +/** + * Servlet Filter implementation class GuvorURLAuthFilter + */ +public class GuvnorAuthFilter implements Filter { + + private Authenticator authenticator; + + /** + * Default constructor. + */ + public GuvnorAuthFilter() { + + } + + /** + * @see Filter#destroy() + */ + public void destroy() { + + } + + /** + * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) + */ + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + + if(authenticator == null){ + + chain.doFilter(request, response); + + } else { + + Authenticator.setDefault(authenticator); + + chain.doFilter(request, response); + + Authenticator.setDefault(null); + + } + + } + + /** + * @see Filter#init(FilterConfig) + */ + public void init(FilterConfig fConfig) throws ServletException { + Properties properties = new Properties(); + try { + properties.load(AbstractFormDispatcher.class.getResourceAsStream("/jbpm.console.properties")); + } catch (IOException e) { + throw new RuntimeException("Could not load jbpm.console.properties", e); + } + + final String user = (String)properties.get("jbpm.console.server.user"); + final String passwd = (String)properties.get("jbpm.console.server.passwd"); + + if(user != null && "".equals(user) == false){ + authenticator = new Authenticator(){ + + protected PasswordAuthentication getPasswordAuthentication() { + + return new PasswordAuthentication(user, passwd.toCharArray()); + + } + + }; + } + + } + +} -- 1.7.3.4