From 5e10b6b575993c78ac22191849c464b618c4fa8a Mon Sep 17 00:00:00 2001 From: mcentner Date: Wed, 14 Jul 2010 15:22:56 +0000 Subject: MOCCA Online HTTP binding refactored. git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@762 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4 --- .../at/gv/egiz/mocca/id/DataURLServerServlet.java | 63 +++++++++++++--------- .../gv/egiz/mocca/id/SAMLBindingProcessorImpl.java | 2 - .../at/gv/egiz/mocca/id/SAMLRequestHandler.java | 33 ------------ 3 files changed, 39 insertions(+), 59 deletions(-) delete mode 100644 BKUOnline/src/main/java/at/gv/egiz/mocca/id/SAMLRequestHandler.java (limited to 'BKUOnline/src/main/java/at/gv/egiz/mocca') diff --git a/BKUOnline/src/main/java/at/gv/egiz/mocca/id/DataURLServerServlet.java b/BKUOnline/src/main/java/at/gv/egiz/mocca/id/DataURLServerServlet.java index b40fd35f..57140e13 100644 --- a/BKUOnline/src/main/java/at/gv/egiz/mocca/id/DataURLServerServlet.java +++ b/BKUOnline/src/main/java/at/gv/egiz/mocca/id/DataURLServerServlet.java @@ -20,8 +20,10 @@ package at.gv.egiz.mocca.id; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; +import java.util.Locale; import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.XMLConstants; @@ -38,12 +40,11 @@ import org.w3c.dom.Document; import org.w3c.dom.Element; import org.xml.sax.SAXException; -import at.gv.egiz.bku.binding.BindingProcessor; +import at.gv.egiz.bku.binding.BindingProcessorManager; import at.gv.egiz.bku.binding.FormParameter; -import at.gv.egiz.bku.binding.IdFactory; +import at.gv.egiz.bku.binding.Id; import at.gv.egiz.bku.binding.InputDecoder; import at.gv.egiz.bku.binding.InputDecoderFactory; -import at.gv.egiz.bku.online.webapp.SpringBKUServlet; import at.gv.egiz.bku.slcommands.SLCommand; import at.gv.egiz.bku.slcommands.SLMarshallerFactory; import at.gv.egiz.bku.slcommands.SLResult; @@ -55,9 +56,10 @@ import at.gv.egiz.bku.slcommands.impl.SLCommandImpl; import at.gv.egiz.bku.slexceptions.SLCommandException; import at.gv.egiz.bku.utils.DebugInputStream; import at.gv.egiz.bku.utils.StreamUtil; +import at.gv.egiz.org.apache.tomcat.util.http.AcceptLanguage; import at.gv.egiz.slbinding.SLUnmarshaller; -public class DataURLServerServlet extends SpringBKUServlet { +public class DataURLServerServlet extends HttpServlet { private static Logger log = LoggerFactory.getLogger(DataURLServerServlet.class); @@ -73,6 +75,26 @@ public class DataURLServerServlet extends SpringBKUServlet { protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + BindingProcessorManager bindingProcessorManager = (BindingProcessorManager) getServletContext() + .getAttribute("bindingProcessorManager"); + if (bindingProcessorManager == null) { + String msg = "Configuration error: BindingProcessorManager missing!"; + log.error(msg); + resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, msg); + return; + } + + Id id = (Id) req.getAttribute("id"); + if (id == null) { + String msg = "No request id! Configuration error: ServletFilter missing?"; + log.error(msg); + resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, msg); + return; + } + + // if binding processor with same id is present: remove + bindingProcessorManager.removeBindingProcessor(id); + String userAgent = req.getHeader("User-Agent"); String contentType = req.getContentType(); log.debug("Content-Type: " + contentType + " User-Agent: " + userAgent); @@ -148,12 +170,20 @@ public class DataURLServerServlet extends SpringBKUServlet { } } - - SAMLBindingProcessorImpl bindingProcessor = null; - if (sessionId != null) { - bindingProcessor = getBindingProcessor(sessionId); + + Locale locale = AcceptLanguage.getLocale(req.getHeader("Accept-Language")); + if (log.isInfoEnabled()) { + log.info("Recieved request (Accept-Language locale: {}).", locale); } + // create new binding processor + String protocol = getServletConfig().getInitParameter("protocol"); + if (protocol == null || protocol.isEmpty()) { + protocol = req.getScheme(); + } + SAMLBindingProcessorImpl bindingProcessor = (SAMLBindingProcessorImpl) bindingProcessorManager + .createBindingProcessor(protocol, locale); + if (bindingProcessor != null && respElement != null) { SLResult slResult = null; @@ -203,23 +233,8 @@ public class DataURLServerServlet extends SpringBKUServlet { } - resp.sendRedirect("bkuResult"); + resp.sendRedirect("ui;jsessionid=" + id.toString()); } - protected SAMLBindingProcessorImpl getBindingProcessor(String sessionId) { - - BindingProcessor bp = getBindingProcessorManager().getBindingProcessor( - IdFactory.getInstance().createId(sessionId)); - - if (bp instanceof SAMLBindingProcessorImpl) { - log.debug("Found active BindingProcessor, using this one."); - return (SAMLBindingProcessorImpl) bp; - } - - return null; - - } - - } diff --git a/BKUOnline/src/main/java/at/gv/egiz/mocca/id/SAMLBindingProcessorImpl.java b/BKUOnline/src/main/java/at/gv/egiz/mocca/id/SAMLBindingProcessorImpl.java index ce4ac425..56513ee9 100644 --- a/BKUOnline/src/main/java/at/gv/egiz/mocca/id/SAMLBindingProcessorImpl.java +++ b/BKUOnline/src/main/java/at/gv/egiz/mocca/id/SAMLBindingProcessorImpl.java @@ -77,8 +77,6 @@ public class SAMLBindingProcessorImpl extends private String keyBoxIdentifier = "SecureSignatureKeypair"; - private String url = "www.egiz.gv.at"; - private QESTemplates templates = new QESTemplates(); private IdLink idLink; diff --git a/BKUOnline/src/main/java/at/gv/egiz/mocca/id/SAMLRequestHandler.java b/BKUOnline/src/main/java/at/gv/egiz/mocca/id/SAMLRequestHandler.java deleted file mode 100644 index 0209ca79..00000000 --- a/BKUOnline/src/main/java/at/gv/egiz/mocca/id/SAMLRequestHandler.java +++ /dev/null @@ -1,33 +0,0 @@ -/* -* Copyright 2009 Federal Chancellery Austria and -* Graz University of Technology -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package at.gv.egiz.mocca.id; - -import javax.servlet.http.HttpServletRequest; - -import at.gv.egiz.bku.online.webapp.AbstractWebRequestHandler; - -public class SAMLRequestHandler extends AbstractWebRequestHandler { - - private static final long serialVersionUID = 1L; - - @Override - protected String getRequestProtocol(HttpServletRequest req) { - return "SAML"; - } - -} -- cgit v1.2.3