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