From b548b9859413b3a974a5bad900c20fef4ae058d4 Mon Sep 17 00:00:00 2001
From: gregor
Date: Tue, 25 Nov 2003 19:41:46 +0000
Subject: Zwischenstand
git-svn-id: https://joinup.ec.europa.eu/svn/moa-idspss/trunk@62 d688527b-c9ab-4aba-bd8d-4036d912da1d
---
.../moa/spss/slinterface/Constants.java | 1 +
.../gv/egovernment/moa/spss/slinterface/Utils.java | 33 ++++++
.../moa/spss/slinterface/filters/SL2MOAFilter.java | 131 ++++++---------------
.../spss/slinterface/servlets/ResultServlet.java | 125 ++++++++++++++++++++
.../moa/spss/slinterface/servlets/SLRequest.java | 19 +++
.../moa/spss/slinterface/DataURLBean.java | 46 ++++++++
.../moa/spss/slinterface/DataURLServlet.java | 83 +++++++++++++
spss.slinterface/WEB-INF/web.xml | 28 +++++
spss.slinterface/pages/test/dataURL.jsp | 18 +++
spss.slinterface/test/slrequests/simpleVerReq.xml | 39 ++++++
10 files changed, 431 insertions(+), 92 deletions(-)
create mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/Utils.java
create mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/servlets/ResultServlet.java
create mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/servlets/SLRequest.java
create mode 100644 spss.slinterface/WEB-INF/src/test/at/gv/egovernment/moa/spss/slinterface/DataURLBean.java
create mode 100644 spss.slinterface/WEB-INF/src/test/at/gv/egovernment/moa/spss/slinterface/DataURLServlet.java
create mode 100644 spss.slinterface/pages/test/dataURL.jsp
create mode 100644 spss.slinterface/test/slrequests/simpleVerReq.xml
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/Constants.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/Constants.java
index b47f245fa..cb37fe843 100644
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/Constants.java
+++ b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/Constants.java
@@ -28,6 +28,7 @@ public class Constants
public static final String LH_LISTENERS_ = LH_BASE_ + ".listeners";
public static final String LH_FILTERS_ = LH_BASE_ + ".filters";
public static final String LH_SERVLETS_ = LH_BASE_ + ".servlets";
+ public static final String LH_TEST_ = LH_BASE_ + ".test";
// Web service context parameters
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/Utils.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/Utils.java
new file mode 100644
index 000000000..8c1292734
--- /dev/null
+++ b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/Utils.java
@@ -0,0 +1,33 @@
+/*
+ * Created on 25.11.2003
+ *
+ * (c) Stabsstelle IKT-Strategie des Bundes
+ */
+package at.gv.egovernment.moa.spss.slinterface;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
+ */
+public class Utils
+{
+ public static byte[] readFromInputStream(InputStream inputStream) throws IOException
+ {
+ byte[] currentBytes = new byte[500];
+ int bytesRead;
+ ByteArrayOutputStream result = new ByteArrayOutputStream();
+ do
+ {
+ bytesRead = inputStream.read(currentBytes);
+ if (bytesRead > 0)
+ {
+ result.write(currentBytes, 0, bytesRead);
+ }
+ }
+ while (bytesRead != -1);
+ return result.toByteArray();
+ }
+}
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/SL2MOAFilter.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/SL2MOAFilter.java
index 77c1b9c0e..08b8635ba 100644
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/SL2MOAFilter.java
+++ b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/SL2MOAFilter.java
@@ -10,6 +10,7 @@ import java.io.ByteArrayOutputStream;
import java.io.CharArrayReader;
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
import java.io.Reader;
import java.util.Iterator;
import java.util.List;
@@ -25,12 +26,10 @@ import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.apache.commons.fileupload.DiskFileUpload;
@@ -46,6 +45,7 @@ import org.xml.sax.SAXException;
import at.gv.egovernment.moa.spss.slinterface.Constants;
import at.gv.egovernment.moa.spss.slinterface.moainvoker.MOAInvoker;
+import at.gv.egovernment.moa.spss.slinterface.servlets.SLRequest;
import at.gv.egovernment.moa.spss.slinterface.transformers.MOA2SL;
import at.gv.egovernment.moa.spss.slinterface.transformers.SL2MOA;
@@ -57,7 +57,6 @@ public class SL2MOAFilter implements Filter
private static Logger logger_ = Logger.getLogger(Constants.LH_FILTERS_);
private FilterConfig config_;
- private SLRequest slRequest_;
/* ---------------------------------------------------------------------------------------------------- */
@@ -68,63 +67,32 @@ public class SL2MOAFilter implements Filter
{
// Store filter configuration
config_ = config;
-
- slRequest_ = new SLRequest();
-
- // Initialize stylesheet transform SL2MOA
-// ServletContext context = config_.getServletContext();
-// Transformer sl2MoaTransformer = (Transformer) context.getAttribute(Constants.WSCP_SL2MOA_TRANSFORMER_);
-// if (sl2MoaTransformer == null)
-// {
-// initTransformer(context, Constants.IP_SL2MOA_STYLESHEET_);
-// }
-
- // Initialize stylesheet transform MOA2SL
-// Transformer moa2SlTransformer = (Transformer) context.getAttribute(Constants.WSCP_MOA2SL_TRANSFORMER_);
-// if (moa2SlTransformer == null)
-// {
-// initTransformer(context, Constants.IP_MOA2SL_STYLESHEET_);
-// }
-
}
/* ---------------------------------------------------------------------------------------------------- */
- /*
+ /**
* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse,
* javax.servlet.FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
+ // Create session
+ HttpSession session = ((HttpServletRequest) request).getSession(true);
+
// Check if request is HTTP-POST
checkHttpPost((HttpServletRequest) request);
// Get SL request from content of request
- parseRequest((HttpServletRequest) request);
+ SLRequest slRequest = parseRequest((HttpServletRequest) request);
+ session.setAttribute("slRequest", slRequest);
// Schema validate SL request
- CharArrayReader slXmlRequestCAR = new CharArrayReader(slRequest_.xmlRequest_.toCharArray());
+ CharArrayReader slXmlRequestCAR = new CharArrayReader(slRequest.xmlRequest_.toCharArray());
Document slXMLRequestDoc = parseSlXmlRequest(slXmlRequestCAR);
// Transform SL request into a MOA SPSS request
-// Transformer sl2MoaTransformer =
-// (Transformer) config_.getServletContext().getAttribute(Constants.WSCP_SL2MOA_TRANSFORMER_);
-// DOMSource slXMLRequestDS = new DOMSource(slXMLRequestDoc);
-// ByteArrayOutputStream moaRequestBOS = new ByteArrayOutputStream();
-// StreamResult moaRequestResult = new StreamResult(moaRequestBOS);
-// try
-// {
-// sl2MoaTransformer.transform(slXMLRequestDS, moaRequestResult);
-// }
-// catch (TransformerException e)
-// {
-// String message = "Transforming SL XML request into MOA XML request failed.";
-// logger_.error(message, e);
-// throw new ServletException(message, e);
-// }
-// logger_.debug("MOA XML Request:\n" + moaRequestBOS.toString());
-// ByteArrayInputStream moaRequestIS = new ByteArrayInputStream(moaRequestBOS.toByteArray());
Properties initProps = (Properties)config_.getServletContext().getAttribute(Constants.WSCP_INIT_PROPS_);
String trustProfileId = initProps.getProperty(Constants.IP_SP_TRUSTPROFILEID_);
Document moaXMLRequestDoc = SL2MOA.toMoaVerifyXMLSignatureRequest(slXMLRequestDoc, trustProfileId);
@@ -138,36 +106,17 @@ public class SL2MOAFilter implements Filter
ResponseWrapper responseWrapper = new ResponseWrapper((HttpServletResponse) response);
chain.doFilter(requestWrapper, responseWrapper);
- // Prepare response to client
- response.setContentType("text/xml");
-
- // Transform MOA response into a SL response and send SL response back to client
-// Transformer moa2SlTransformer =
-// (Transformer) config_.getServletContext().getAttribute(Constants.WSCP_MOA2SL_TRANSFORMER_);
-// ServletOutputStream moaResponseSOS = (ServletOutputStream) responseWrapper.getOutputStream();
-// ByteArrayInputStream moaResponseBIS = new ByteArrayInputStream(moaResponseSOS.toByteArray());
-// StreamSource moaResponseSource = new StreamSource(moaResponseBIS);
-// StreamResult slResponseResult = new StreamResult(response.getOutputStream());
-// try
-// {
-// moa2SlTransformer.transform(moaResponseSource, slResponseResult);
-// }
-// catch (TransformerException e)
-// {
-// String message = "Transforming MOA XML response into SL XML response failed.";
-// logger_.error(message, e);
-// throw new ServletException(message, e);
-// }
+ // Transform MOA response into a SL response
DOMParser xmlParser = (DOMParser) config_.getServletContext().getAttribute(Constants.WSCP_XMLPARSER_);
ServletOutputStream moaResponseSOS = (ServletOutputStream) responseWrapper.getOutputStream();
ByteArrayInputStream moaResponseBIS = new ByteArrayInputStream(moaResponseSOS.toByteArray());
InputSource responseSource = new InputSource(moaResponseBIS);
+ Document slResponseDoc;
try
{
xmlParser.parse(responseSource);
Document moaResponseDoc = xmlParser.getDocument();
- Document slResponseDoc = MOA2SL.toSlVerifyXMLSignatureResponse(moaResponseDoc);
- MOAInvoker.serializeDocument(slResponseDoc, response.getOutputStream());
+ slResponseDoc = MOA2SL.toSlVerifyXMLSignatureResponse(moaResponseDoc);
}
catch (SAXException e)
{
@@ -175,7 +124,16 @@ public class SL2MOAFilter implements Filter
logger_.error(message, e);
throw new ServletException(message, e);
}
-
+ session.setAttribute("slResponseDoc", slResponseDoc);
+
+ String continueURL = ((HttpServletRequest) request).getContextPath() + "/results";
+ continueURL = ((HttpServletResponse) response).encodeURL(continueURL);
+ String responseStr = "Und weiter geht es ...";
+
+ response.setContentType("text/html");
+ OutputStream responseOS = response.getOutputStream();
+ responseOS.write(responseStr.getBytes("UTF-8"));
+ responseOS.flush();
}
/* ---------------------------------------------------------------------------------------------------- */
@@ -233,8 +191,10 @@ public class SL2MOAFilter implements Filter
/**
* Parses the http request.
*/
- private void parseRequest(HttpServletRequest request) throws IOException
+ private SLRequest parseRequest(HttpServletRequest request) throws IOException
{
+ SLRequest slRequest = new SLRequest();
+
// Check if request URL ends with "http-security-layer-request"
// @TODO Don't know if this check is sufficient - spec says request URL must have this value as path
String requestURI = request.getRequestURI();
@@ -267,13 +227,13 @@ public class SL2MOAFilter implements Filter
FileItem currItem = (FileItem) itemsIt.next();
String currItemName = currItem.getFieldName();
if (Constants.SLC_NAME_XML_REQUEST_.equals(currItemName))
- slRequest_.xmlRequest_ = currItem.getString();
+ slRequest.xmlRequest_ = currItem.getString();
else if (Constants.SLC_NAME_DATA_URL_.equals(currItemName))
- slRequest_.dataUrl_ = currItem.getString();
+ slRequest.dataUrl_ = currItem.getString();
else if (Constants.SLC_NAME_STYLESHEET_URL_.equals(currItemName))
- slRequest_.stylesheetUrl_ = currItem.getString();
+ slRequest.stylesheetUrl_ = currItem.getString();
else if (Constants.SLC_NAME_REDIRECT_URL_.equals(currItemName))
- slRequest_.redirectUrl_ = currItem.getString();
+ slRequest.redirectUrl_ = currItem.getString();
else
continue; // @TODO Do not evaluate other params at the moment
}
@@ -288,26 +248,28 @@ public class SL2MOAFilter implements Filter
String currName = (String) paramNames.next();
String[] currValues = (String[]) paramsMap.get(currName);
if (Constants.SLC_NAME_XML_REQUEST_.equals(currName))
- slRequest_.xmlRequest_ = currValues[0];
+ slRequest.xmlRequest_ = currValues[0];
else if (Constants.SLC_NAME_DATA_URL_.equals(currName))
- slRequest_.dataUrl_ = currValues[0];
+ slRequest.dataUrl_ = currValues[0];
else if (Constants.SLC_NAME_STYLESHEET_URL_.equals(currName))
- slRequest_.stylesheetUrl_ = currValues[0];
+ slRequest.stylesheetUrl_ = currValues[0];
else if (Constants.SLC_NAME_REDIRECT_URL_.equals(currName))
- slRequest_.redirectUrl_ = currValues[0];
+ slRequest.redirectUrl_ = currValues[0];
else
continue; // @TODO Do not evaluate other params at the moment
}
}
- if (slRequest_.xmlRequest_ == null || slRequest_.dataUrl_ == null ||
- slRequest_.stylesheetUrl_ != null || slRequest_.redirectUrl_ != null)
+ if (slRequest.xmlRequest_ == null || slRequest.dataUrl_ == null ||
+ slRequest.stylesheetUrl_ != null || slRequest.redirectUrl_ != null)
{
- // @TODO Only combindation of XMLRequest and StylesheetURL allowed at the moment
+ // @TODO Only combination of XMLRequest and DataURL allowed at the moment
String message = "Currently only (XMLRequest + DataURL) is supported.";
logger_.error(message);
throw new IOException(message);
}
+
+ return slRequest;
}
/* ---------------------------------------------------------------------------------------------------- */
@@ -367,19 +329,4 @@ public class SL2MOAFilter implements Filter
throw new ServletException(message);
}
}
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- /**
- * Helper class, representing the fields of a Security-Layer request.
- *
- * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
- */
- class SLRequest
- {
- public String xmlRequest_;
- public String dataUrl_;
- public String stylesheetUrl_;
- public String redirectUrl_;
- }
}
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/servlets/ResultServlet.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/servlets/ResultServlet.java
new file mode 100644
index 000000000..67397a1ee
--- /dev/null
+++ b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/servlets/ResultServlet.java
@@ -0,0 +1,125 @@
+/*
+ * Created on 25.11.2003
+ *
+ * (c) Stabsstelle IKT-Strategie des Bundes
+ */
+package at.gv.egovernment.moa.spss.slinterface.servlets;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URL;
+import java.net.URLConnection;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Document;
+
+import at.gv.egovernment.moa.spss.slinterface.Constants;
+import at.gv.egovernment.moa.spss.slinterface.Utils;
+import at.gv.egovernment.moa.spss.slinterface.moainvoker.MOAInvoker;
+
+/**
+ * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
+ */
+public class ResultServlet extends HttpServlet
+{
+
+ private static Logger logger_ = Logger.getLogger(Constants.LH_SERVLETS_);
+
+ /**
+ * Default constructor.
+ */
+ public ResultServlet()
+ {
+ super();
+ }
+
+ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException
+ {
+ // Get session
+ HttpSession session = request.getSession(false);
+ if (session == null)
+ {
+ String message = "No session available";
+ logger_.error(message);
+ throw new ServletException(message);
+ }
+
+ // Get original SL request from session
+ SLRequest slRequest = (SLRequest) session.getAttribute("slRequest");
+ if (slRequest == null)
+ {
+ String message = "Session object \"slRequest\" not available.";
+ logger_.error(message);
+ throw new ServletException(message);
+ }
+
+ // Get SL response from session
+ Document slResponseDoc = (Document) session.getAttribute("slResponseDoc");
+ if (slResponseDoc == null)
+ {
+ String message = "Session object \"slResponseDoc\" not available.";
+ logger_.error(message);
+ throw new ServletException(message);
+ }
+
+ URLConnection dataURLConn;
+ try
+ {
+ // Open connection to DataURL
+ URL dataURL = new URL(slRequest.dataUrl_);
+ dataURLConn = dataURL.openConnection();
+ dataURLConn.setDoOutput(true);
+ OutputStream dataURLOS = dataURLConn.getOutputStream();
+ MOAInvoker.serializeDocument(slResponseDoc, dataURLOS);
+ dataURLOS.flush();
+ }
+ catch (Exception e)
+ {
+ String message = "Sending SL XML response to DataURL failed.";
+ logger_.error(message, e);
+ throw new ServletException(message, e);
+ }
+
+ // Forward response from DataURL to client
+ forwardResponse(dataURLConn, response);
+
+ session.invalidate();
+ }
+
+ /* ---------------------------------------------------------------------------------------------------- */
+
+ private void forwardResponse(URLConnection dataURLConn, ServletResponse response) throws ServletException
+ {
+ // Make sure that content type of DataURL response is text/html
+ String dataURLContentType = dataURLConn.getContentType();
+ if (dataURLContentType == null || !dataURLContentType.startsWith("text/html"))
+ {
+ String message = "Unsupported content type of DataURL response: \"" + dataURLContentType + "\".";
+ logger_.error(message);
+ throw new ServletException(message);
+ }
+
+ try
+ {
+ InputStream dataURLIS = dataURLConn.getInputStream();
+ byte[] dataURLResponse = Utils.readFromInputStream(dataURLIS);
+ response.setContentType("text/html");
+ OutputStream responseOS = response.getOutputStream();
+ responseOS.write(dataURLResponse);
+ responseOS.flush();
+ }
+ catch (Exception e)
+ {
+ String message = "Forwarding DataURL response to client failed.";
+ logger_.error(message, e);
+ throw new ServletException(message, e);
+ }
+ }
+}
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/servlets/SLRequest.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/servlets/SLRequest.java
new file mode 100644
index 000000000..3c19d5ff6
--- /dev/null
+++ b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/servlets/SLRequest.java
@@ -0,0 +1,19 @@
+/*
+ * Created on 25.11.2003
+ *
+ * (c) Stabsstelle IKT-Strategie des Bundes
+ */
+package at.gv.egovernment.moa.spss.slinterface.servlets;
+
+/**
+ * Helper class, representing the fields of a Security-Layer request.
+ *
+ * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
+ */
+public class SLRequest
+{
+ public String xmlRequest_;
+ public String dataUrl_;
+ public String stylesheetUrl_;
+ public String redirectUrl_;
+}
diff --git a/spss.slinterface/WEB-INF/src/test/at/gv/egovernment/moa/spss/slinterface/DataURLBean.java b/spss.slinterface/WEB-INF/src/test/at/gv/egovernment/moa/spss/slinterface/DataURLBean.java
new file mode 100644
index 000000000..4cf099a45
--- /dev/null
+++ b/spss.slinterface/WEB-INF/src/test/at/gv/egovernment/moa/spss/slinterface/DataURLBean.java
@@ -0,0 +1,46 @@
+/*
+ * Created on 25.11.2003
+ *
+ * (c) Stabsstelle IKT-Strategie des Bundes
+ */
+package test.at.gv.egovernment.moa.spss.slinterface;
+
+/**
+ * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
+ */
+public class DataURLBean
+{
+ String title_;
+ String contentType_;
+ String content_;
+
+ public DataURLBean()
+ {
+ super();
+ title_="unknown";
+ contentType_="unknown";
+ content_="unknown";
+ }
+
+ public DataURLBean(String title, String contentType, String content)
+ {
+ title_ = title;
+ contentType_ = contentType;
+ content_ = content;
+ }
+
+ public String getTitle()
+ {
+ return title_;
+ }
+
+ public String getContentType()
+ {
+ return contentType_;
+ }
+
+ public String getContent()
+ {
+ return content_;
+ }
+}
diff --git a/spss.slinterface/WEB-INF/src/test/at/gv/egovernment/moa/spss/slinterface/DataURLServlet.java b/spss.slinterface/WEB-INF/src/test/at/gv/egovernment/moa/spss/slinterface/DataURLServlet.java
new file mode 100644
index 000000000..ff4cbbe59
--- /dev/null
+++ b/spss.slinterface/WEB-INF/src/test/at/gv/egovernment/moa/spss/slinterface/DataURLServlet.java
@@ -0,0 +1,83 @@
+/*
+ * Created on 25.11.2003
+ *
+ * (c) Stabsstelle IKT-Strategie des Bundes
+ */
+package test.at.gv.egovernment.moa.spss.slinterface;
+
+import java.io.IOException;
+
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.log4j.Logger;
+
+import at.gv.egovernment.moa.spss.slinterface.Constants;
+import at.gv.egovernment.moa.spss.slinterface.Utils;
+
+/**
+ * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
+ */
+public class DataURLServlet extends HttpServlet
+{
+ private static Logger logger_ = Logger.getLogger(Constants.LH_TEST_);
+
+ public DataURLServlet()
+ {
+ super();
+ }
+
+ /* ---------------------------------------------------------------------------------------------------- */
+
+ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException
+ {
+ // Read content form POST request
+ try
+ {
+ logger_.debug("Received POST request:");
+ logger_.debug("Content type: \"" + request.getContentType() + "\".");
+ byte[] contentBytes = Utils.readFromInputStream(request.getInputStream());
+ String contentStr = new String(contentBytes);
+ logger_.debug("Content:\n" + new String(contentStr));
+
+ StringBuffer contentStrBuf = new StringBuffer(contentStr);
+ int startPos = 0;
+ while (startPos < contentStrBuf.length())
+ {
+ if (contentStrBuf.charAt(startPos) == '<')
+ {
+ contentStrBuf.replace(startPos, startPos + 1, "<");
+ startPos += 4;
+ }
+ startPos++;
+ }
+ contentStr = contentStrBuf.toString();
+
+ DataURLBean dataURLBean = new DataURLBean("Data URL Results", request.getContentType(), contentStr);
+ request.setAttribute("dataURLResult", dataURLBean);
+ }
+ catch (Exception e)
+ {
+ String message = "Failed to read content from POST request.";
+ logger_.error(message, e);
+ throw new ServletException(message, e);
+ }
+
+ // Invoke response JSP page
+ try
+ {
+ response.setContentType("text/html");
+ RequestDispatcher dispatcher = request.getRequestDispatcher("/pages/test/dataURL.jsp");
+ dispatcher.include(request, response);
+ }
+ catch (IOException e)
+ {
+ String message = "Failed to send simple HTML answer to client.";
+ logger_.error(message, e);
+ throw new ServletException(message, e);
+ }
+ }
+}
diff --git a/spss.slinterface/WEB-INF/web.xml b/spss.slinterface/WEB-INF/web.xml
index db502faf8..b2907b1f2 100644
--- a/spss.slinterface/WEB-INF/web.xml
+++ b/spss.slinterface/WEB-INF/web.xml
@@ -31,9 +31,37 @@
0
+
+ DataURLServlet
+ DataURL test servlet
+
+ test.at.gv.egovernment.moa.spss.slinterface.DataURLServlet
+
+ 0
+
+
+
+ ResultServlet
+ Result servlet
+
+ at.gv.egovernment.moa.spss.slinterface.servlets.ResultServlet
+
+ 0
+
+
MOAServlet
/http-security-layer-request
+
+ DataURLServlet
+ /dataurl
+
+
+
+ ResultServlet
+ /results
+
+
diff --git a/spss.slinterface/pages/test/dataURL.jsp b/spss.slinterface/pages/test/dataURL.jsp
new file mode 100644
index 000000000..c2b62697f
--- /dev/null
+++ b/spss.slinterface/pages/test/dataURL.jsp
@@ -0,0 +1,18 @@
+<%@ page contentType="text/html; charset=UTF-8" %>
+
+
+
+
+
+
+
+
+
+ Content-Type
+
+ Content
+
+
+
\ No newline at end of file
diff --git a/spss.slinterface/test/slrequests/simpleVerReq.xml b/spss.slinterface/test/slrequests/simpleVerReq.xml
new file mode 100644
index 000000000..fdc1daec9
--- /dev/null
+++ b/spss.slinterface/test/slrequests/simpleVerReq.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+id('signed-data')/node()aylv7lNNes2pI022g7zfY1AOUmI=id('refetsi')/etsi:QualifyingProperties/etsi:SignedPropertiesrYJgLYFMHaAcQjIlwSpFqXp5d1A=VnwHohi/ootc3mIWh2WnInNvjA+/kJOr5bDRl5no1CMsNA+1qhoVZCErHt75gp9m
+O0MPBAcl7KfvkDTbHuMR1oG1Z4RUh52cE5oQietiwHGQIeuWEJ+IGcVcnkoayz4z
+2tQLkdotBhV0mCmkQjyADNn8P4H5yHNsdPq0joqy+2Q=MIIE4DCCA8igAwIBAgICGEowDQYJKoZIhvcNAQEFBQAwgZcxCzAJBgNVBAYTAkFU
+MUgwRgYDVQQKEz9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGlt
+IGVsZWt0ci4gRGF0ZW52ZXJrZWhyIEdtYkgxHjAcBgNVBAsTFWEtc2lnbi1QcmVt
+aXVtLVNpZy0wMTEeMBwGA1UEAxMVYS1zaWduLVByZW1pdW0tU2lnLTAxMB4XDTAz
+MDEyNzEwMTQxM1oXDTA2MDEyNzEwMTQxM1owZDELMAkGA1UEBhMCQVQxGTAXBgNV
+BAMTEEdyZWdvciBLYXJsaW5nZXIxEjAQBgNVBAQTCUthcmxpbmdlcjEPMA0GA1UE
+KhMGR3JlZ29yMRUwEwYDVQQFEww5MTM4OTU1NTI5MTEwgZ8wDQYJKoZIhvcNAQEB
+BQADgY0AMIGJAoGBANrnnGN6wiOyq/rskasBf/Tz4grEKI+NBAuDgO5aqObNDBAe
+PISMQ2nFNX2nzoSNx7j7esl4KdgySmJkZWs/nErpE5fB8lHOfrPRD61dodS+Nhwi
+RWlm+I+ua+mOwR18fg/Cwt3YpXZihzZ+ju7eFlxRifHtKJCLOld6IvdFdFCtAgMB
+AAGjggHqMIIB5jATBgNVHSMEDDAKgAhA1/OeG4c6zDA+BggrBgEFBQcBAwEB/wQv
+MC0wCAYGBACORgEBMBUGBgQAjkYBAjALEwNFVVICAQACAQAwCgYIKwYBBQUHCwEw
+fQYIKwYBBQUHAQEEcTBvMEIGCCsGAQUFBzAChjZodHRwOi8vd3d3LmEtdHJ1c3Qu
+YXQvY2VydHMvYS1zaWduLVByZW1pdW0tU2lnLTAxYS5jcnQwKQYIKwYBBQUHMAGG
+HWh0dHA6Ly93d3cuYS10cnVzdC5hdDo4Mi9vY3NwME8GA1UdIARIMEYwRAYGKigA
+EQELMDowOAYIKwYBBQUHAgEWLGh0dHA6Ly93d3cuYS10cnVzdC5hdC9kb2NzL2Nw
+L2Etc2lnbi1QcmVtaXVtMGoGA1UdHwRjMGEwX6BdoFuGWWxkYXA6Ly9sZGFwLmEt
+dHJ1c3QuYXQvb3U9YS1zaWduLVByZW1pdW0tU2lnLTAxLG89QS1UcnVzdCxjPUFU
+P2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3Q/MBEGA1UdDgQKBAhOYExavdLCITAO
+BgNVHQ8BAf8EBAMCBsAwJQYDVR0RBB4wHIEaZ3JlZ29yLmthcmxpbmdlckBjaW8u
+Z3YuYXQwCQYDVR0TBAIwADANBgkqhkiG9w0BAQUFAAOCAQEAL+A2+Z5gQvn6SnZe
+sLvVVVB1crHe7NI/Om2rEwha4PfEk2pV9UdOg7C1XSzRu9jCNXIAuUSIpxTtAoJH
+sCk82S+iuEEgyVaXU/zFcbgT/k7opHXHswEC6ab2SQnyOlugyG+o7e9nRwAQTzzj
+ryICr3KACQcVwCpLKCgsU6gYQL1bi/c5vk4rnDYquSm1U34+xIl77CefZN/peGU4
+26vUzGma30wHBepLX5M+NXT7ILRzRk4i8oyOccIzOMi/iwAODJmgSSMcYjUgAngE
+oGYK9ngWu7Rr1gvy4lvOwpGGRpz2MP3nU9H2IfKk36n6hhVpc3EC6aF02RdIBD+x
+8VxVsA==Das ist ein Test.2003-08-14T12:53:27Zwl/zuayZxKuYlH2G2FQCTcosSSg=CN=a-sign-Premium-Sig-01,OU=a-sign-Premium-Sig-01,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT6218text/plain
+
+
+ /dsig:Signature
+
+
--
cgit v1.2.3