From 8c769bae2d6d71677ce71a299d618957029ab4ac Mon Sep 17 00:00:00 2001
From: "(no author)" <(no author)@d688527b-c9ab-4aba-bd8d-4036d912da1d>
Date: Mon, 10 Apr 2006 08:46:26 +0000
Subject: This commit was manufactured by cvs2svn to create tag
'Build_ID-1_3_1'.
git-svn-id: https://joinup.ec.europa.eu/svn/moa-idspss/tags/Build_ID-1_3_1@704 d688527b-c9ab-4aba-bd8d-4036d912da1d
---
spss.slinterface/.classpath | 22 -
spss.slinterface/.project | 18 -
spss.slinterface/.tomcatplugin | 11 -
spss.slinterface/WEB-INF/lib/axis-ant.jar | Bin 385010 -> 0 bytes
spss.slinterface/WEB-INF/lib/axis.jar | Bin 1235721 -> 0 bytes
spss.slinterface/WEB-INF/lib/commons-discovery.jar | Bin 71442 -> 0 bytes
.../WEB-INF/lib/commons-fileupload-1.0.jar | Bin 22379 -> 0 bytes
spss.slinterface/WEB-INF/lib/commons-logging.jar | Bin 31605 -> 0 bytes
spss.slinterface/WEB-INF/lib/jaxrpc.jar | Bin 35759 -> 0 bytes
spss.slinterface/WEB-INF/lib/log4j-1.2.7.jar | Bin 350677 -> 0 bytes
spss.slinterface/WEB-INF/lib/saaj.jar | Bin 18501 -> 0 bytes
spss.slinterface/WEB-INF/lib/wsdl4j.jar | Bin 113853 -> 0 bytes
spss.slinterface/WEB-INF/lib/xalan-2.5.1.jar | Bin 2907319 -> 0 bytes
.../WEB-INF/lib/xercesImpl-2.6.0ex24783.jar | Bin 957657 -> 0 bytes
.../WEB-INF/lib/xmlParserAPIs-2.6.0ex24783.jar | Bin 124724 -> 0 bytes
.../moa/spss/slinterface/Constants.java | 86 ----
.../egovernment/moa/spss/slinterface/DOMUtils.java | 169 -------
.../moa/spss/slinterface/URLRewriter.java | 143 ------
.../gv/egovernment/moa/spss/slinterface/Utils.java | 51 --
.../moa/spss/slinterface/XPathUtils.java | 162 ------
.../moa/spss/slinterface/beans/ChecksInfoBean.java | 165 -------
.../moa/spss/slinterface/beans/DataInfoBean.java | 541 ---------------------
.../spss/slinterface/beans/HashInputDataInfo.java | 55 ---
.../moa/spss/slinterface/beans/SignerInfoBean.java | 127 -----
.../spss/slinterface/filters/RequestWrapper.java | 57 ---
.../spss/slinterface/filters/ResponseWrapper.java | 44 --
.../moa/spss/slinterface/filters/SL2MOAFilter.java | 386 ---------------
.../slinterface/filters/ServletInputStream.java | 55 ---
.../slinterface/filters/ServletOutputStream.java | 50 --
.../slinterface/listeners/ContextListener.java | 185 -------
.../listeners/XMLParserErrorHandler.java | 65 ---
.../spss/slinterface/moainvoker/MOAInvoker.java | 92 ----
.../slinterface/servlets/HashInputDataServlet.java | 93 ----
.../moa/spss/slinterface/servlets/MOAServlet.java | 113 -----
.../spss/slinterface/servlets/ReturnServlet.java | 125 -----
.../moa/spss/slinterface/servlets/SLRequest.java | 19 -
.../moa/spss/slinterface/transformers/MOA2SL.java | 93 ----
.../moa/spss/slinterface/transformers/QName.java | 51 --
.../moa/spss/slinterface/transformers/SL2MOA.java | 93 ----
.../moa/spss/slinterface/transformers/Utils.java | 129 -----
.../moa/spss/slinterface/DataURLBean.java | 46 --
.../moa/spss/slinterface/DataURLServlet.java | 83 ----
.../moa/spss/slinterface/RewriteServlet.java | 73 ---
spss.slinterface/WEB-INF/web.xml | 99 ----
spss.slinterface/constraints.txt | 6 -
spss.slinterface/handbook/common/LogoBKA.png | Bin 8062 -> 0 bytes
spss.slinterface/handbook/common/LogoMoa4c.jpg | Bin 45624 -> 0 bytes
spss.slinterface/handbook/common/LogoMoaBw.jpg | Bin 41375 -> 0 bytes
spss.slinterface/handbook/common/MOA.css | 300 ------------
.../handbook/conf/log4j/log4j.properties | 0
.../handbook/conf/moa-sl/moa-sl.properties | 0
spss.slinterface/handbook/conf/tomcat/server.xml | 0
spss.slinterface/handbook/index.html | 41 --
spss.slinterface/handbook/operation/operation.html | 449 -----------------
spss.slinterface/handbook/system/system.html | 486 ------------------
spss.slinterface/pages/images/aut-emb2.gif | Bin 4189 -> 0 bytes
spss.slinterface/pages/images/egov.jpg | Bin 4974 -> 0 bytes
spss.slinterface/pages/resultOverview.jsp | 270 ----------
spss.slinterface/pages/test/dataURL.jsp | 18 -
.../res/resources/properties/init.properties | 67 ---
.../resources/properties/init.properties.stjoneu | 68 ---
.../res/resources/schemas/Core.20020225.xsd | 399 ---------------
.../res/resources/schemas/Core.20020831.xsd | 153 ------
.../res/resources/schemas/Core.20031231.xsd | 58 ---
.../res/resources/schemas/MOA-SPSS-1.2.xsd | 454 -----------------
.../schemas/slxhtml-1.0/slxhtml-model-1.xsd | 388 ---------------
.../slxhtml-1.0/slxhtml-module-redefines-1.xsd | 253 ----------
.../res/resources/schemas/slxhtml-1.0/slxhtml.xsd | 173 -------
.../schemas/slxhtml-1.0/xhtml-attribs-1.xsd | 47 --
.../schemas/slxhtml-1.0/xhtml-blkphras-1.xsd | 161 ------
.../schemas/slxhtml-1.0/xhtml-blkpres-1.xsd | 42 --
.../schemas/slxhtml-1.0/xhtml-blkstruct-1.xsd | 57 ---
.../schemas/slxhtml-1.0/xhtml-charent-1.xsd | 41 --
.../schemas/slxhtml-1.0/xhtml-copyright-1.xsd | 26 -
.../schemas/slxhtml-1.0/xhtml-datatypes-1.xsd | 147 ------
.../schemas/slxhtml-1.0/xhtml-framework-1.xsd | 80 ---
.../schemas/slxhtml-1.0/xhtml-image-1.xsd | 49 --
.../schemas/slxhtml-1.0/xhtml-inlphras-1.xsd | 226 ---------
.../schemas/slxhtml-1.0/xhtml-inlstruct-1.xsd | 53 --
.../schemas/slxhtml-1.0/xhtml-inlstyle-1.xsd | 27 -
.../resources/schemas/slxhtml-1.0/xhtml-list-1.xsd | 128 -----
.../schemas/slxhtml-1.0/xhtml-notations-1.xsd | 99 ----
.../schemas/slxhtml-1.0/xhtml-struct-1.xsd | 103 ----
.../schemas/slxhtml-1.0/xhtml-style-1.xsd | 51 --
.../schemas/slxhtml-1.0/xhtml-table-1.xsd | 323 ------------
.../resources/schemas/slxhtml-1.0/xhtml-text-1.xsd | 70 ---
.../res/resources/schemas/slxhtml-1.0/xml.xsd | 81 ---
spss.slinterface/res/resources/schemas/xml.xsd | 81 ---
.../res/resources/schemas/xmldsig-core-schema.xsd | 322 ------------
.../res/resources/simpleVerReq.moa.xml | 29 --
spss.slinterface/res/resources/simpleVerReq.xml | 100 ----
.../res/resources/stylesheets/moa2sl.xsl | 96 ----
.../resources/stylesheets/simpleVerReq.sl11.xml | 100 ----
.../stylesheets/simpleVerReq.sl12.locref.moa.xml | 1 -
.../stylesheets/simpleVerReq.sl12.locref.xml | 20 -
.../res/resources/stylesheets/sl2moa.xsl | 218 ---------
.../stylesheets/verifyresponse.moa.sl.xml | 25 -
.../resources/stylesheets/verifyresponse.moa.xml | 46 --
spss.slinterface/res/resources/test.xml | 2 -
spss.slinterface/res/resources/test.xsl | 14 -
spss.slinterface/test/bildspeicher/bild2.jpg | Bin 634 -> 0 bytes
spss.slinterface/test/forms/verify.default.html | 85 ----
.../test/forms/verify.default.stjoneu.html | 85 ----
spss.slinterface/test/forms/verify.slxhtml.html | 85 ----
.../test/forms/verify.slxhtml.stjoneu.html | 85 ----
spss.slinterface/test/slrequests/simpleVerReq.xml | 39 --
spss.slinterface/test/stylesheet.xsl | 29 --
107 files changed, 10357 deletions(-)
delete mode 100644 spss.slinterface/.classpath
delete mode 100644 spss.slinterface/.project
delete mode 100644 spss.slinterface/.tomcatplugin
delete mode 100644 spss.slinterface/WEB-INF/lib/axis-ant.jar
delete mode 100644 spss.slinterface/WEB-INF/lib/axis.jar
delete mode 100644 spss.slinterface/WEB-INF/lib/commons-discovery.jar
delete mode 100644 spss.slinterface/WEB-INF/lib/commons-fileupload-1.0.jar
delete mode 100644 spss.slinterface/WEB-INF/lib/commons-logging.jar
delete mode 100644 spss.slinterface/WEB-INF/lib/jaxrpc.jar
delete mode 100644 spss.slinterface/WEB-INF/lib/log4j-1.2.7.jar
delete mode 100644 spss.slinterface/WEB-INF/lib/saaj.jar
delete mode 100644 spss.slinterface/WEB-INF/lib/wsdl4j.jar
delete mode 100644 spss.slinterface/WEB-INF/lib/xalan-2.5.1.jar
delete mode 100644 spss.slinterface/WEB-INF/lib/xercesImpl-2.6.0ex24783.jar
delete mode 100644 spss.slinterface/WEB-INF/lib/xmlParserAPIs-2.6.0ex24783.jar
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/Constants.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/DOMUtils.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/URLRewriter.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/Utils.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/XPathUtils.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/beans/ChecksInfoBean.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/beans/DataInfoBean.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/beans/HashInputDataInfo.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/beans/SignerInfoBean.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/RequestWrapper.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/ResponseWrapper.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/SL2MOAFilter.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/ServletInputStream.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/ServletOutputStream.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/listeners/ContextListener.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/listeners/XMLParserErrorHandler.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/moainvoker/MOAInvoker.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/servlets/HashInputDataServlet.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/servlets/MOAServlet.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/servlets/ReturnServlet.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/servlets/SLRequest.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/transformers/MOA2SL.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/transformers/QName.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/transformers/SL2MOA.java
delete mode 100644 spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/transformers/Utils.java
delete mode 100644 spss.slinterface/WEB-INF/src/test/at/gv/egovernment/moa/spss/slinterface/DataURLBean.java
delete mode 100644 spss.slinterface/WEB-INF/src/test/at/gv/egovernment/moa/spss/slinterface/DataURLServlet.java
delete mode 100644 spss.slinterface/WEB-INF/src/test/at/gv/egovernment/moa/spss/slinterface/RewriteServlet.java
delete mode 100644 spss.slinterface/WEB-INF/web.xml
delete mode 100644 spss.slinterface/constraints.txt
delete mode 100644 spss.slinterface/handbook/common/LogoBKA.png
delete mode 100644 spss.slinterface/handbook/common/LogoMoa4c.jpg
delete mode 100644 spss.slinterface/handbook/common/LogoMoaBw.jpg
delete mode 100644 spss.slinterface/handbook/common/MOA.css
delete mode 100644 spss.slinterface/handbook/conf/log4j/log4j.properties
delete mode 100644 spss.slinterface/handbook/conf/moa-sl/moa-sl.properties
delete mode 100644 spss.slinterface/handbook/conf/tomcat/server.xml
delete mode 100644 spss.slinterface/handbook/index.html
delete mode 100644 spss.slinterface/handbook/operation/operation.html
delete mode 100644 spss.slinterface/handbook/system/system.html
delete mode 100644 spss.slinterface/pages/images/aut-emb2.gif
delete mode 100644 spss.slinterface/pages/images/egov.jpg
delete mode 100644 spss.slinterface/pages/resultOverview.jsp
delete mode 100644 spss.slinterface/pages/test/dataURL.jsp
delete mode 100644 spss.slinterface/res/resources/properties/init.properties
delete mode 100644 spss.slinterface/res/resources/properties/init.properties.stjoneu
delete mode 100644 spss.slinterface/res/resources/schemas/Core.20020225.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/Core.20020831.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/Core.20031231.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/MOA-SPSS-1.2.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/slxhtml-1.0/slxhtml-model-1.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/slxhtml-1.0/slxhtml-module-redefines-1.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/slxhtml-1.0/slxhtml.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/slxhtml-1.0/xhtml-attribs-1.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/slxhtml-1.0/xhtml-blkphras-1.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/slxhtml-1.0/xhtml-blkpres-1.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/slxhtml-1.0/xhtml-blkstruct-1.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/slxhtml-1.0/xhtml-charent-1.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/slxhtml-1.0/xhtml-copyright-1.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/slxhtml-1.0/xhtml-datatypes-1.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/slxhtml-1.0/xhtml-framework-1.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/slxhtml-1.0/xhtml-image-1.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/slxhtml-1.0/xhtml-inlphras-1.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/slxhtml-1.0/xhtml-inlstruct-1.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/slxhtml-1.0/xhtml-inlstyle-1.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/slxhtml-1.0/xhtml-list-1.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/slxhtml-1.0/xhtml-notations-1.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/slxhtml-1.0/xhtml-struct-1.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/slxhtml-1.0/xhtml-style-1.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/slxhtml-1.0/xhtml-table-1.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/slxhtml-1.0/xhtml-text-1.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/slxhtml-1.0/xml.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/xml.xsd
delete mode 100644 spss.slinterface/res/resources/schemas/xmldsig-core-schema.xsd
delete mode 100644 spss.slinterface/res/resources/simpleVerReq.moa.xml
delete mode 100644 spss.slinterface/res/resources/simpleVerReq.xml
delete mode 100644 spss.slinterface/res/resources/stylesheets/moa2sl.xsl
delete mode 100644 spss.slinterface/res/resources/stylesheets/simpleVerReq.sl11.xml
delete mode 100644 spss.slinterface/res/resources/stylesheets/simpleVerReq.sl12.locref.moa.xml
delete mode 100644 spss.slinterface/res/resources/stylesheets/simpleVerReq.sl12.locref.xml
delete mode 100644 spss.slinterface/res/resources/stylesheets/sl2moa.xsl
delete mode 100644 spss.slinterface/res/resources/stylesheets/verifyresponse.moa.sl.xml
delete mode 100644 spss.slinterface/res/resources/stylesheets/verifyresponse.moa.xml
delete mode 100644 spss.slinterface/res/resources/test.xml
delete mode 100644 spss.slinterface/res/resources/test.xsl
delete mode 100644 spss.slinterface/test/bildspeicher/bild2.jpg
delete mode 100644 spss.slinterface/test/forms/verify.default.html
delete mode 100644 spss.slinterface/test/forms/verify.default.stjoneu.html
delete mode 100644 spss.slinterface/test/forms/verify.slxhtml.html
delete mode 100644 spss.slinterface/test/forms/verify.slxhtml.stjoneu.html
delete mode 100644 spss.slinterface/test/slrequests/simpleVerReq.xml
delete mode 100644 spss.slinterface/test/stylesheet.xsl
(limited to 'spss.slinterface')
diff --git a/spss.slinterface/.classpath b/spss.slinterface/.classpath
deleted file mode 100644
index 637d7dce9..000000000
--- a/spss.slinterface/.classpath
+++ /dev/null
@@ -1,22 +0,0 @@
-
-null
if element
- * equals null
, or if the element has no text node.
- */
- public static String getText(Element elem)
- {
- if (elem == null) return null;
- NodeList childNodes = elem.getChildNodes();
- for (int i = 0; i < childNodes.getLength(); i++)
- {
- Node currNode = childNodes.item(i);
- if (currNode.getNodeType() == Node.TEXT_NODE) return currNode.getNodeValue();
- }
- return null;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- /**
- * Gets the first text node of the specified child element from the specified parent element.
- *
- * @param parent The parent.
- *
- * @param childNS The namespace of the child element.
- *
- * @param childLocName The local name of the child element.
- *
- * @return the first text node of the specified child, or null
if parent
equals
- * null
or has no child element with the specified namespace and local name, or if
- * the child element has no text node.
- */
- public static String getChildText(Element parent, String childNS, String childLocName)
- {
- if (parent == null) return null;
- Element child = getChildElem(parent, childNS, childLocName);
- if (child == null) return null;
- return getText(child);
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- /**
- * Gets the first child element of the specified parent with the specified namspace and local name.
- *
- * @param parent The parent.
- *
- * @param childNS The namespace of the child element to be searched for.
- *
- * @param childLocName The local name of the child element to be searched for.
- *
- * @return the first child element as described above, or null
if parent
is
- * null or has no child elements with for the specified namespace and local name.
- */
- public static Element getChildElem(Element parent, String childNS, String childLocName)
- {
- List childElems = getChildElems(parent, childNS, childLocName, true);
- return (childElems == null) ? null : (Element) childElems.get(0);
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- /**
- * Gets all or the first child element(s) of the specified parent with the specified namspace and local
- * name.
- *
- * @param parent The parent.
- *
- * @param childNS The namespace of the child elements to be searched for.
- *
- * @param childLocName The local name of the child elements to be searched for.
- *
- * @param firstOnly Specifies wheter only the first or all child elements with the specified namespace and
- * local name should be returned.
- *
- * @return a java.util.List
with objects of type org.w3c.dom.Element
; each
- * element in the list represents a child element as specified above. If parent
- * equals null
, or if there are no child elements as specified above, null
- *
will be returned.
- */
- public static List getChildElems(Element parent, String childNS, String childLocName, boolean firstOnly)
- {
- if (parent == null) return null;
-
- ArrayList childElems = new ArrayList();
- NodeList childNodes = parent.getChildNodes();
- for (int i = 0; i < childNodes.getLength(); i++)
- {
- Node currNode = childNodes.item(i);
- if (currNode.getNodeType() == Node.ELEMENT_NODE)
- {
- Element currElem = (Element) currNode;
- if (childNS.equals(currElem.getNamespaceURI()) && childLocName.equals(currElem.getLocalName()))
- {
- childElems.add(currElem);
- if (firstOnly) break;
- }
- }
- }
- return (childElems.size() == 0) ? null : childElems;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public static Document parseWellFormed(InputStream is) throws Exception
- {
- DOMParser xmlParser = new DOMParser();
- try
- {
- xmlParser.setFeature(SAX_NAMESPACES_FEATURE, true);
- xmlParser.setFeature(XERCES_CREATE_ENTITY_REF_NODES_FEATURE, false);
- xmlParser.setFeature(XERCES_DEFER_NODE_EXPANSION_, false);
- xmlParser.setErrorHandler(new XMLParserErrorHandler(false, true, true));
-
- }
- catch (SAXException e)
- {
- String message = "Initialization of XML parser failed.";
- throw new Exception(message, e);
- }
- try
- {
- xmlParser.parse(new InputSource(is));
- return xmlParser.getDocument();
- }
- catch (Exception e)
- {
- String message = "Wellformed parsing failed.";
- throw new Exception(message, e);
- }
- }
-}
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/URLRewriter.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/URLRewriter.java
deleted file mode 100644
index a47192d69..000000000
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/URLRewriter.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Created on 15.12.2003
- *
- * (c) Stabsstelle IKT-Strategie des Bundes
- */
-package at.gv.egovernment.moa.spss.slinterface;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Properties;
-
-import javax.servlet.http.HttpSession;
-
-import org.apache.log4j.Logger;
-
-/**
- * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
- */
-public class URLRewriter
-{
- private static Logger logger_ = Logger.getLogger(Constants.LH_LISTENERS_);
-
- Properties initProps_;
-
- /**
- * Class that manges the rewriting of URLs for the result pages. Necessary as workaround for the deploy-
- * ment in the Federal Chancellory.
- */
- public URLRewriter(Properties initProps)
- {
- initProps_ = initProps;
- }
-
- /**
- * Rewrites the specified URL.
- *
- * @param url A URL relative to the root of the web application server containing MOA SL.
- *
- * @param session The session which will be considered in the rewritten URL.
- *
- * @return A URL fitting for the proxy component running at the Federal Chancellory.
- */
- public String rewrite(String url, HttpSession session)
- {
- // Get remote IP address and resolve to remote to remote domain name
- String remoteAddr = (String)session.getAttribute("remoteAddr");
- String remoteName = null;
- if (remoteAddr != null)
- {
- remoteName = initProps_.getProperty(Constants.IP_REW_DNS_LOOKUP_PREFIX_ + remoteAddr);
- logger_.debug("Remote address lookup succeeded for IP " + remoteAddr + ", using " + remoteName);
- }
- if (remoteName == null)
- {
- remoteName = initProps_.getProperty(Constants.IP_REW_DNS_LOOKUP_DEFAULT_);
- logger_.debug("Remote address lookup failed for IP " + remoteAddr + ", using default: " + remoteName);
- }
-
- // Get proxy URL and replace proxy URL hostname placeholder with remote domain name
- String proxyURLStr = initProps_.getProperty(Constants.IP_REW_PROXYURL_);
- int pHStartIndex = proxyURLStr.indexOf(initProps_.getProperty(Constants.IP_REW_PROXYURL_HOSTDUMMY_));
- proxyURLStr = proxyURLStr.substring(0, pHStartIndex)
- + remoteName
- + proxyURLStr.substring(pHStartIndex
- + initProps_.getProperty(Constants.IP_REW_PROXYURL_HOSTDUMMY_).length());
-
- String slInterfaceURLParamName = initProps_.getProperty(Constants.IP_REW_SLI_URLPARAMNAME_);
- String slInterfaceWebAppServURLStr = initProps_.getProperty(Constants.IP_REW_SLI_WEBAPPSERV_URL_);
-
- if (proxyURLStr == null ||
- slInterfaceURLParamName == null ||
- slInterfaceWebAppServURLStr == null ||
- "".equals(proxyURLStr.trim()) ||
- "".equals(slInterfaceURLParamName.trim()) ||
- "".equals(slInterfaceWebAppServURLStr.trim()))
- {
- logger_.warn("Some params for URL rewriting are not available; rewriting disabled:" +
- " proxyURL: \"" + proxyURLStr + "\"," +
- " slInterfaceURLParamName: \"" + slInterfaceURLParamName + "\"," +
- " slInterfaceWebAppServURLStr: \"" + slInterfaceWebAppServURLStr + "\"");
- return url;
- }
-
- URL slInterfaceURL = null;
- try
- {
- slInterfaceURL = new URL(slInterfaceWebAppServURLStr + url);
- }
- catch (MalformedURLException e)
- {
- logger_.warn("Parameter \"slInterfaceURL\" is not a valid URL: \"" + slInterfaceWebAppServURLStr + url + "\"");
- return url;
- }
- URL proxyURL = null;
- try
- {
- proxyURL = new URL(proxyURLStr);
- }
- catch (MalformedURLException e)
- {
- logger_.warn("Parameter \"proxyURL\" is not a valid URL: \"" + proxyURLStr + "\"");
- return url;
- }
-
- String sessionId = session.getId();
- String sessionIdParam = (sessionId != null) ? (";" + "jsessionid=" + sessionId) : "";
- String returnValue =
- proxyURL.getProtocol() +
- "://" +
- proxyURL.getHost() +
- ((proxyURL.getPort() != -1) ? (":" + proxyURL.getPort()) : "") +
- proxyURL.getPath() +
- ((proxyURL.getQuery() != null) ? "?" + proxyURL.getQuery() + "&" : "?") +
- slInterfaceURLParamName + "=" +
- slInterfaceURL.getProtocol() +
- "://" +
- slInterfaceURL.getHost() +
- ((slInterfaceURL.getPort() != -1) ? (":" + slInterfaceURL.getPort()) : "") +
- slInterfaceURL.getPath() +
- sessionIdParam +
- ((slInterfaceURL.getQuery() != null) ? "?" + escapeQueryPart(slInterfaceURL.getQuery()) : "");
-
- logger_.debug("Rewritten URL: " + returnValue);
- return returnValue;
- }
-
- private String escapeQueryPart(String query)
- {
- StringBuffer querySB = new StringBuffer();
- for (int i = 0; i < query.length(); i++)
- {
- if (query.charAt(i) == '&')
- {
- querySB.append("%26");
- }
- else
- {
- querySB.append(query.charAt(i));
- }
- }
- return querySB.toString();
- }
-}
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
deleted file mode 100644
index 50ae5dc03..000000000
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/Utils.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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;
-import java.io.OutputStream;
-
-/**
- * @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();
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public static void transferStreams(InputStream in, OutputStream out) throws IOException
- {
- byte[] currentBytes = new byte[500];
- int bytesRead;
- do
- {
- bytesRead = in.read(currentBytes);
- if (bytesRead > 0)
- {
- out.write(currentBytes, 0, bytesRead);
- }
- }
- while (bytesRead != -1);
- }
-}
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/XPathUtils.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/XPathUtils.java
deleted file mode 100644
index 16e4938ed..000000000
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/XPathUtils.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Created on 02.12.2003
- *
- * (c) Stabsstelle IKT-Strategie des Bundes
- */
-package at.gv.egovernment.moa.spss.slinterface;
-
-import java.util.HashMap;
-import java.util.StringTokenizer;
-
-import org.apache.xml.utils.PrefixResolverDefault;
-import org.apache.xpath.XPath;
-import org.apache.xpath.XPathContext;
-import org.apache.xpath.objects.XObject;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-/**
- * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
- */
-public class XPathUtils
-{
- /**
- * The XPath context for the XPath engine.
- */
- protected XPathContext xPathContext_;
-
- /**
- * The prefix resolver for the XPath engine.
- */
- protected PrefixResolver prefixResolver_;
-
- /**
- * The XPath engine.
- */
- protected XPath xPath_;
-
- /* ==================================================================================================== */
-
- public void setupContext(String xPathExpr, Node namespaceNode, String additionalNSPrefixes)
- throws Exception
- {
-
- try
- {
- // Set up a new evaluation context
- xPathContext_ = new XPathContext();
-
- // Set up the namespace prefix resolver for the XPath engine
- prefixResolver_ = new PrefixResolver(namespaceNode, additionalNSPrefixes);
-
- // Initialize XPath engine
- xPath_ = new XPath(xPathExpr, null, prefixResolver_, XPath.SELECT, null);
- }
- catch (Exception e)
- {
- throw new Exception("Setting up XPath evaluation context failed.", e);
- }
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public NodeList selectNodeSet(Node contextNode) throws Exception
- {
- XObject xObject;
- try
- {
- xObject = xPath_.execute(xPathContext_, contextNode, prefixResolver_);
- return xObject.nodelist();
- }
- catch (Exception e)
- {
- throw new Exception("Executing XPath expression failed.", e);
- }
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public boolean selectBoolean(Node contextNode) throws Exception
- {
- XObject xObject;
- try
- {
- xObject = xPath_.execute(xPathContext_, contextNode, prefixResolver_);
- return xObject.bool();
- }
- catch (Exception e)
- {
- throw new Exception("Executing XPath expression failed.", e);
- }
- }
-
- /* ==================================================================================================== */
-
- /**
- * Special extension of the {@link org.apache.xml.utils.PrefixResolverDefault} interface. Used to
- * configure the Apache Xalan XPath engine which is employed as the backbone of this class.
- */
- protected class PrefixResolver extends PrefixResolverDefault
- {
-
- /**
- * Contains the additionally specified namespace prefix (key) to namespace URI (value) attributions.
- */
- protected HashMap additionalNSPrefixesMap_;
-
- /* ================================================================================================== */
-
- /**
- * Basic constructor.
- *
- * @param xpathExpressionContext The namespace declarations in scope for this node will be used to get
- * the namespace uri for a prefix specified in the XPath expression.
- *
- * @param additionalNSPrefixes Allows the specification of additional prefix to uri attributions apart
- * from the declarations in scope for the parameter
- * xpathExpressionContext
. May be null
.
- */
- public PrefixResolver(Node xpathExpressionContext, String additionalNSPrefixes) throws Exception
- {
- super(xpathExpressionContext);
- additionalNSPrefixesMap_ = new HashMap();
-
- // Register the specified additional namespace prefix to namespace uri attributions
- if (additionalNSPrefixes != null)
- {
- StringTokenizer tokenizer = new StringTokenizer(additionalNSPrefixes, " ");
- while (tokenizer.hasMoreTokens())
- {
- String prefix = tokenizer.nextToken();
- if (!tokenizer.hasMoreTokens())
- {
-
- // There must be an even number of tokens in the string
- throw new Exception("Parameter \"additionalNSPrefixes\" must have an even number of tokens.");
- }
- String uri = tokenizer.nextToken();
- additionalNSPrefixesMap_.put(prefix, uri);
- }
- }
- }
-
- /* -------------------------------------------------------------------------------------------------- */
-
- /**
- * Gets the namespace uri for the specified namespace prefix. The additionally specified prefixes
- * overrule the prefixes found in the specified namespace node.
- *
- * @param prefix The namespace prefix for which a namespace uri should be found.
- *
- * @return the namespace uri for the specified namespace prefix.
- */
- public String getNamespaceForPrefix(String prefix)
- {
- String additionalURI = (String) additionalNSPrefixesMap_.get(prefix);
- return (additionalURI != null)
- ? additionalURI
- : super.getNamespaceForPrefix(prefix);
- }
- }
-}
-
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/beans/ChecksInfoBean.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/beans/ChecksInfoBean.java
deleted file mode 100644
index 00c9fd517..000000000
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/beans/ChecksInfoBean.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Created on 27.11.2003
- *
- * (c) Stabsstelle IKT-Strategie des Bundes
- */
-package at.gv.egovernment.moa.spss.slinterface.beans;
-
-import java.util.List;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-import at.gv.egovernment.moa.spss.slinterface.Constants;
-import at.gv.egovernment.moa.spss.slinterface.DOMUtils;
-
-/**
- * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
- */
-public class ChecksInfoBean
-{
- private static final String SIG_CHECK_ELEM_ = "SignatureCheck";
- private static final String SIGMF_CHECK_ELEM_ = "SignatureManifestCheck";
- private static final String XMLDSIGMF_CHECK_ELEM_ = "XMLDSIGManifestCheck";
- private static final String CERT_CHECK_ELEM_ = "CertificateCheck";
- private static final String CODE_ELEM_ = "Code";
- private static final String INFO_ELEM_ = "Info";
- private static final String FAILEDREF_ELEM_ = "FailedReference";
- private static final String REFSIGREF_ELEM_ = "ReferringSigReference";
-
- private Element sigCheckElem_;
- private int sigCheckFaildRefCount_;
-
- private Element sigMFCheckElem_;
- private int sigMFCheckFaildRefCount_;
-
- private List xmldsigMFCheckElems_;
- private int xmldsigMFCheckCount_;
- private int xmldsigMFCheckFaildRefCount_;
-
- private Element certCheckElem_;
-
- /**
- * Creates a bean with information about the checks executed for the verified xml signature.
- *
- * @pre slResponseDoc has been validated.
- */
- public ChecksInfoBean(Document slResponseDoc)
- {
- Element verifyXMLResponseElem = slResponseDoc.getDocumentElement();
- sigCheckElem_ = DOMUtils.getChildElem(
- verifyXMLResponseElem, Constants.NSURI_SL_11_, SIG_CHECK_ELEM_);
- sigMFCheckElem_ = DOMUtils.getChildElem(
- verifyXMLResponseElem, Constants.NSURI_SL_11_, SIGMF_CHECK_ELEM_);
- xmldsigMFCheckElems_ = DOMUtils.getChildElems(
- verifyXMLResponseElem, Constants.NSURI_SL_11_, XMLDSIGMF_CHECK_ELEM_, false);
- certCheckElem_ = DOMUtils.getChildElem(
- verifyXMLResponseElem, Constants.NSURI_SL_11_, CERT_CHECK_ELEM_);
-
- sigCheckFaildRefCount_ = 0;
- sigMFCheckFaildRefCount_ = 0;
- xmldsigMFCheckFaildRefCount_ = 0;
- xmldsigMFCheckCount_ = 0;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public String getSigCheckCode()
- {
- return DOMUtils.getChildText(sigCheckElem_, Constants.NSURI_SL_11_, CODE_ELEM_);
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public void setSigCheckFailedRefCount(int count)
- {
- sigCheckFaildRefCount_ = count;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public String getSigCheckFailedRef()
- {
- Element info = DOMUtils.getChildElem(sigCheckElem_, Constants.NSURI_SL_11_, INFO_ELEM_);
- if (info == null) return null;
- List failedRefElems = DOMUtils.getChildElems(info, Constants.NSURI_SL_11_, FAILEDREF_ELEM_, false);
- if (failedRefElems == null || failedRefElems.size() <= sigCheckFaildRefCount_) return null;
- return DOMUtils.getText((Element)failedRefElems.get(sigCheckFaildRefCount_));
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public String getSigMFCheckCode()
- {
- return DOMUtils.getChildText(sigMFCheckElem_, Constants.NSURI_SL_11_, CODE_ELEM_);
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public void setSigMFCheckFailedRefCount(int count)
- {
- sigMFCheckFaildRefCount_ = count;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public String getSigMFCheckFailedRef()
- {
- Element info = DOMUtils.getChildElem(sigMFCheckElem_, Constants.NSURI_SL_11_, INFO_ELEM_);
- if (info == null) return null;
- List failedRefElems = DOMUtils.getChildElems(info, Constants.NSURI_SL_11_, FAILEDREF_ELEM_, false);
- if (failedRefElems == null || failedRefElems.size() <= sigMFCheckFaildRefCount_) return null;
- return DOMUtils.getText((Element)failedRefElems.get(sigMFCheckFaildRefCount_));
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public void setXmldsigMFCheckCount(int count)
- {
- xmldsigMFCheckCount_ = count;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public void setXmldsigMFCheckFailedRefCount(int count)
- {
- xmldsigMFCheckFaildRefCount_ = count;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public String getXmldsigMFCheckCode()
- {
- Element xmldsigMFCheckElem = (Element)xmldsigMFCheckElems_.get(xmldsigMFCheckCount_);
- return DOMUtils.getChildText(xmldsigMFCheckElem, Constants.NSURI_SL_11_, CODE_ELEM_);
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public String getXmldsigMFCheckFailedRef()
- {
- Element xmldsigMFCheckElem = (Element)xmldsigMFCheckElems_.get(xmldsigMFCheckCount_);
- Element info = DOMUtils.getChildElem(xmldsigMFCheckElem, Constants.NSURI_SL_11_, INFO_ELEM_);
- if (info == null) return null;
- List failedRefElems = DOMUtils.getChildElems(info, Constants.NSURI_SL_11_, FAILEDREF_ELEM_, false);
- if (failedRefElems == null || failedRefElems.size() <= xmldsigMFCheckFaildRefCount_) return null;
- return DOMUtils.getText((Element)failedRefElems.get(xmldsigMFCheckFaildRefCount_));
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public String getXmldsigMFCheckReferringSigRef()
- {
- Element xmldsigMFCheckElem = (Element)xmldsigMFCheckElems_.get(xmldsigMFCheckCount_);
- Element info = DOMUtils.getChildElem(xmldsigMFCheckElem, Constants.NSURI_SL_11_, INFO_ELEM_);
- if (info == null) return null;
- return DOMUtils.getChildText(info, Constants.NSURI_SL_11_, REFSIGREF_ELEM_);
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public String getCertCheckCode()
- {
- return DOMUtils.getChildText(certCheckElem_, Constants.NSURI_SL_10_, CODE_ELEM_);
- }
-}
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/beans/DataInfoBean.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/beans/DataInfoBean.java
deleted file mode 100644
index 570f3fb15..000000000
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/beans/DataInfoBean.java
+++ /dev/null
@@ -1,541 +0,0 @@
-/*
- * Created on 27.11.2003
- *
- * (c) Stabsstelle IKT-Strategie des Bundes
- */
-package at.gv.egovernment.moa.spss.slinterface.beans;
-
-import iaik.utils.Util;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Random;
-import java.util.Set;
-import java.util.StringTokenizer;
-
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpSessionBindingEvent;
-import javax.servlet.http.HttpSessionBindingListener;
-
-import org.apache.log4j.Logger;
-import org.apache.xerces.parsers.DOMParser;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.InputSource;
-
-import at.gv.egovernment.moa.spss.slinterface.Constants;
-import at.gv.egovernment.moa.spss.slinterface.DOMUtils;
-import at.gv.egovernment.moa.spss.slinterface.URLRewriter;
-import at.gv.egovernment.moa.spss.slinterface.XPathUtils;
-import at.gv.egovernment.moa.spss.slinterface.moainvoker.MOAInvoker;
-
-/**
- * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
- */
-public class DataInfoBean implements HttpSessionBindingListener
-{
- private static Logger logger_ = Logger.getLogger(Constants.LH_BEANS_);
-
- // MOA
- private static final String HID_ELEM_ = "HashInputData";
- private static final String B64CONT_ELEM_ = "Base64Content";
- private static final String XMLCONT_ELEM_ = "XMLContent";
- private static final String SIGLOC_ELEM_ = "VerifySignatureLocation";
-
- // XMLDSIG
- private static final String TYPE_ATTR_ = "Type";
- private static final String URI_ATTR_ = "URI";
-
- // XHTML
- private static final String SRC_ATTR_ = "src";
- private static final String HTML_ELEM_ = "html";
-
- private static final String HID_URL_PREFIX_ = "/showdata?hidCount=";
-
- private static final String XPATH_ALL_IMG_ = "//" + Constants.NSPRE_XHTML_ + ":img";
- private static final String XPATH_ALL_REF_ = "./" + Constants.NSPRE_DSIG_ + ":SignedInfo/" +
- Constants.NSPRE_DSIG_ + ":Reference";
- private static final String XPATH_SIG_ENV_CONTENT_ = "/" + Constants.NSPRE_MOA_12_ + ":VerifyXMLSignatureRequest/" +
- Constants.NSPRE_MOA_12_ + ":VerifySignatureInfo/" + Constants.NSPRE_MOA_12_ + ":VerifySignatureEnvironment/*";
-
- private static final String SLXHTML_TYPE_PREFIX_ = "http://www.buergerkarte.at/specifications/" +
- "Security-Layer/20031113?Name=SignedImage&InstanceDocRef=";
-
- private static final String ETSI_TYPE_ = "http://uri.etsi.org/01903/v1.1.1#SignedProperties";
- private static final String SLMANIFEST_TYPE_ =
- "http://www.buergerkarte.at/specifications/Securitylayer/20020225#SignatureManifest";
-
- ServletContext context_;
- String contextPath_;
- HttpSession session_;
-
- Properties initProps_;
-
- /**
- * Contains objects of type {@link HashInputDataInfo}.
- */
- List hashInputDataInfos_;
-
- int hashInputDataCount_;
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public DataInfoBean(Document moaRequestDoc, Document moaResponseDoc, String contextPath, HttpSession session,
- ServletContext context) throws Exception
- {
- context_ = context;
- contextPath_ = contextPath;
- session_ = session;
- initProps_ = (Properties) context_.getAttribute(Constants.WSCP_INIT_PROPS_);
-
- hashInputDataInfos_ = new ArrayList();
- int hashInputDataCount_ = 0;
-
- Element moaResponseElem = moaResponseDoc.getDocumentElement();
- List hidElems = DOMUtils.getChildElems(moaResponseElem, Constants.NSURI_MOA_12_, HID_ELEM_, false);
-
- String tempDir = initProps_.getProperty(Constants.IP_TEMP_DIR_);
- if (tempDir == null)
- {
- String message = "Init property \"" + Constants.IP_TEMP_DIR_ + "\" not set.";
- logger_.error(message);
- throw new IOException(message);
- }
-
- Random random = new Random();
- for (int i = 0; i < hidElems.size(); i++)
- {
- // Open file for current hash input data
- String currHidFileNameStr = tempDir + session_.getId() + "_" + System.currentTimeMillis() + "_" +
- random.nextLong();
- currHidFileNameStr = context_.getRealPath(currHidFileNameStr);
- FileOutputStream currHidFOS;
- try
- {
- currHidFOS = new FileOutputStream(currHidFileNameStr);
- }
- catch (IOException e)
- {
- String message = "Cannot open file \"" + currHidFileNameStr + "\".";
- logger_.error(message);
- throw new IOException(message);
- }
-
- // Write HID to file
- Element currHidElem = (Element) hidElems.get(i);
- Element base64ContentElem = DOMUtils.getChildElem(currHidElem, Constants.NSURI_MOA_12_, B64CONT_ELEM_);
- if (base64ContentElem != null)
- {
- // HID is base64
-
- String base64ContentText = DOMUtils.getText(base64ContentElem);
- byte[] content = Util.Base64Decode(base64ContentText.getBytes());
- try
- {
- currHidFOS.write(content);
- currHidFOS.close();
- }
- catch (IOException e)
- {
- String message = "Cannot write to file \"" + currHidFileNameStr + "\".";
- logger_.error(message);
- throw new IOException(message);
- }
- }
- else
- {
- // HID is XML
-
- // TODO treatment of XML content
- throw new RuntimeException("XML content not support yet.");
- }
-
- hashInputDataInfos_.add(new HashInputDataInfo(currHidFileNameStr));
- }
- logger_.debug("Finnished writing hash input data to files.");
-
- // Check if hids are slxhtml documents; mark them appropriately
- try
- {
- Map signedImages = getSignedImages(moaRequestDoc, hashInputDataInfos_);
- for (int i = 0; i < hashInputDataInfos_.size(); i++)
- {
- HashInputDataInfo currHid = (HashInputDataInfo) hashInputDataInfos_.get(i);
- FileInputStream currHidIS = new FileInputStream(currHid.filename_);
- checkImages(currHidIS, currHid, signedImages);
- }
- }
- catch (Exception e)
- {
- String message = "Performing SLXHTML checks failed.";
- logger_.error(message, e);
- throw new Exception(message, e);
- }
- logger_.debug("Finnished checking hash input data for slxhtml conformity.");
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public void valueBound(HttpSessionBindingEvent event)
- {
- // Do nothing.
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public void valueUnbound(HttpSessionBindingEvent event)
- {
- // Delete all temporary hash input data files
- for (int i = 0; i < hashInputDataInfos_.size(); i++)
- {
- String currFileStr = ((HashInputDataInfo) hashInputDataInfos_.get(i)).filename_;
- File currFile = new File(currFileStr);
- currFile.delete();
- }
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public void setHashInputDataCount(int count)
- {
- hashInputDataCount_ = count;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public String getHashInputDataFilename()
- {
- HashInputDataInfo currHid = (HashInputDataInfo) hashInputDataInfos_.get(hashInputDataCount_);
- return (currHid == null) ? null : currHid.filename_;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public String getHashInputDataURL()
- {
- return (hashInputDataInfos_.size() > hashInputDataCount_)
- ? HID_URL_PREFIX_ + hashInputDataCount_
- : null;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public boolean getShowHashInputData()
- {
- HashInputDataInfo currHid = (HashInputDataInfo) hashInputDataInfos_.get(hashInputDataCount_);
- return (currHid == null) ? false : currHid.doShow_;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public boolean getIsSLXHTMLDocument()
- {
- HashInputDataInfo currHid = (HashInputDataInfo) hashInputDataInfos_.get(hashInputDataCount_);
- return (currHid == null) ? false : currHid.isSLXHTMLDocument_;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- private Document parseSLXHTMLDocument(InputStream docIS)
- {
- DOMParser xmlParser = (DOMParser) context_.getAttribute(Constants.WSCP_XMLPARSER_);
- InputSource docInputSource = new InputSource(docIS);
- Document parsedDoc = null;
- try
- {
- xmlParser.parse(docInputSource);
- parsedDoc = xmlParser.getDocument();
- }
- catch (Exception e)
- {
- // Exception shows that document is not a valid SLXHTML document; return null in that case
- logger_.debug("HashInputData is not a valid SLXHTML document.", e);
- return null;
- }
-
- Element docElem = parsedDoc.getDocumentElement();
- if (docElem.getNamespaceURI() != Constants.NSURI_XHTML_ || docElem.getLocalName() != HTML_ELEM_)
- {
- return null;
- }
-
- return parsedDoc;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- private void checkImages(InputStream hidIS, HashInputDataInfo hid, Map signedImages) throws Exception
- {
- // Parse hidIS
- Document slxhtmlDoc = parseSLXHTMLDocument(hidIS);
- if (slxhtmlDoc == null) return;
-
- // Get all img elements of slxhtml document
- XPathUtils xpUtils = new XPathUtils();
- String additionalNSPrefixes = Constants.NSPRE_XHTML_ + " " + Constants.NSURI_XHTML_;
- xpUtils.setupContext(XPATH_ALL_IMG_, slxhtmlDoc.getDocumentElement(), additionalNSPrefixes);
- NodeList imgTags = xpUtils.selectNodeSet(slxhtmlDoc);
-
- // Check if all img elements have corresponding slxhtml signed images
- boolean allImgsSigned = true;
- for (int i = 0; i < imgTags.getLength(); i++)
- {
- Element currImgElem = (Element) imgTags.item(i);
- String uri = currImgElem.getAttribute(SRC_ATTR_);
- if (!signedImages.containsKey(uri))
- {
- allImgsSigned = false;
- break;
- }
- }
-
- // Mark all corresponding slxhtml signed images as not to be shown
- if (allImgsSigned)
- {
- for (int i = 0; i < imgTags.getLength(); i++)
- {
- Element currImgElem = (Element) imgTags.item(i);
- String uri = currImgElem.getAttribute(SRC_ATTR_);
- HashInputDataInfo currHidi = (HashInputDataInfo) signedImages.get(uri);
- currHidi.doShow_ = false;
- }
- }
-
- if (allImgsSigned)
- {
- // Change the src attributes of all img tags so that they refer to the temporary names
- for (int i = 0; i < imgTags.getLength(); i++)
- {
- Element currImgElem = (Element) imgTags.item(i);
- String uri = currImgElem.getAttribute(SRC_ATTR_);
- HashInputDataInfo currHidi = (HashInputDataInfo) signedImages.get(uri);
-
- Attr srcAttr = currImgElem.getAttributeNode(SRC_ATTR_);
- int slashPos = currHidi.filename_.lastIndexOf(System.getProperty("file.separator"));
-
-// Properties initProps = (Properties) context_.getAttribute(Constants.WSCP_INIT_PROPS_);
-// String tempDir = initProps.getProperty(Constants.IP_TEMP_DIR_);
-// String newSrcAttrValue = "." + tempDir + currHidi.filename_.substring(slashPos + 1);
-
- Properties initProps = (Properties) context_.getAttribute(Constants.WSCP_INIT_PROPS_);
- String tempDir = initProps.getProperty(Constants.IP_TEMP_DIR_);
- URLRewriter urlRewriter = (URLRewriter) context_.getAttribute(Constants.WSCP_URL_REWRITER_);
- String newSrcAttrValue = urlRewriter.rewrite(
- contextPath_ + tempDir + currHidi.filename_.substring(slashPos + 1), session_);
-
- srcAttr.setNodeValue(newSrcAttrValue);
- }
-
- // Mark hid as slxhtml document
- hid.isSLXHTMLDocument_ = true;
-
- // Serialize modified slxhtml document to temporary file location
- FileOutputStream slxhtmlFOS = new FileOutputStream(hid.filename_);
- MOAInvoker.serializeDocument(slxhtmlDoc, slxhtmlFOS);
- slxhtmlFOS.close();
- }
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- private Map getSignedImages(Document moaRequestDoc, List hashInputDataInfos) throws Exception
- {
- // Get signature from MOA request
- Element signatureElem = getSignature(moaRequestDoc);
-
- // Get all signature references from MOA request
- XPathUtils xpUtils = new XPathUtils();
- String additionalNSPrefixes = Constants.NSPRE_DSIG_ + " " + Constants.NSURI_DSIG_;
- xpUtils.setupContext(XPATH_ALL_REF_, signatureElem, additionalNSPrefixes);
- NodeList dsigRefs = xpUtils.selectNodeSet(signatureElem);
-
- // Check signature references for slxhtml images
- HashMap imgHids = new HashMap(dsigRefs.getLength());
- for (int i = 0; i < dsigRefs.getLength(); i++)
- {
- Element currRef = (Element) dsigRefs.item(i);
- String type = currRef.getAttribute(TYPE_ATTR_);
- if (type != null && type.startsWith(SLXHTML_TYPE_PREFIX_))
- {
- String uri = currRef.getAttribute(URI_ATTR_);
- Set referredHids = createReferredHidsSet(type);
- HashInputDataInfo currHidi = (HashInputDataInfo)hashInputDataInfos.get(i);
- currHidi.uri_ = uri;
- currHidi.referredHids_ = referredHids;
- currHidi.isSLXHTMLImage_ = true;
- imgHids.put(uri, currHidi);
- }
- }
-
- // Check signature references if they refer to etsi attributes or to a SL manifest
- for (int i = 0; i < dsigRefs.getLength(); i++)
- {
- Element currRef = (Element) dsigRefs.item(i);
- String type = currRef.getAttribute(TYPE_ATTR_);
- if (type != null && type.equals(ETSI_TYPE_))
- {
- HashInputDataInfo currHidi = (HashInputDataInfo)hashInputDataInfos.get(i);
- currHidi.doShow_ = new Boolean(initProps_.getProperty(Constants.IP_RES_SHOWETSI_).trim()).booleanValue();
- }
- if (type != null && type.equals(SLMANIFEST_TYPE_))
- {
- HashInputDataInfo currHidi = (HashInputDataInfo)hashInputDataInfos.get(i);
- currHidi.doShow_ = new Boolean(initProps_.getProperty(Constants.IP_RES_SHOWSLMAN_).trim()).booleanValue();
- }
- }
-
- return imgHids;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- private Set createReferredHidsSet(String type) throws Exception
- {
- HashSet set = new HashSet();
- String typeSuffix = type.substring(SLXHTML_TYPE_PREFIX_.length());
- StringTokenizer tokenizer = new StringTokenizer(typeSuffix, ",");
- while (tokenizer.hasMoreTokens())
- {
- try
- {
- set.add(new Integer(tokenizer.nextToken()));
- }
- catch (NumberFormatException e)
- {
- String message = "Signed image type attribute \"" + type + "\" is malformed.";
- logger_.error(message, e);
- throw new Exception(message, e);
- }
- }
- return set;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- private Element getSignature(Document moaRequestDoc) throws Exception
- {
- // Get signature environment content
- NodeList contentNL;
- try
- {
- XPathUtils xpUtils = new XPathUtils();
- String addNSPrefixes = Constants.NSPRE_MOA_12_ + " " + Constants.NSURI_MOA_12_;
- xpUtils.setupContext(XPATH_SIG_ENV_CONTENT_, moaRequestDoc, addNSPrefixes);
- contentNL = xpUtils.selectNodeSet(moaRequestDoc);
- }
- catch (Exception e)
- {
- String message = "Cannot find signature environment content.";
- logger_.error(message);
- throw new Exception(message, e);
- }
- if (contentNL.getLength() == 0)
- {
- String message = "Cannot find signature environment content.";
- logger_.error(message);
- throw new Exception(message);
- }
- Element contentElem = (Element) contentNL.item(0);
-
- // Get signature environment document from signature environment content
- String contentElemLocName = contentElem.getLocalName();
- Element sigEnvElem = null;
- Element oldDocElem = null;
- if (XMLCONT_ELEM_.equals(contentElemLocName))
- {
- // XML content
- NodeList contentNodes = contentElem.getChildNodes();
- for (int i = 0; i < contentNodes.getLength(); i++)
- {
- Node currContNode = (Node) contentNodes.item(i);
- if (currContNode.getNodeType() == Node.ELEMENT_NODE)
- {
- sigEnvElem = (Element) currContNode;
- oldDocElem = (Element) moaRequestDoc.replaceChild(sigEnvElem, moaRequestDoc.getDocumentElement());
- break;
- }
- }
- }
- else if (B64CONT_ELEM_.equals(contentElemLocName))
- {
- // Base64 content
- String base64ContStr = DOMUtils.getText(contentElem);
- byte[] contBytes = Util.Base64Decode(base64ContStr.getBytes());
- ByteArrayInputStream contBIS = new ByteArrayInputStream(contBytes);
- Document sigEnvDoc;
- try
- {
- sigEnvDoc = DOMUtils.parseWellFormed(contBIS);
- }
- catch (Exception e)
- {
- String message = "Cannot parse signature environment from base64 content.";
- logger_.error(message);
- throw new Exception(message, e);
- }
- sigEnvElem = sigEnvDoc.getDocumentElement();
- }
- else
- {
- // LocRef content
- String locRef = DOMUtils.getText(contentElem);
- URL locRefURL = new URL(locRef);
- InputStream contentIS = locRefURL.openStream();
- Document sigEnvDoc;
- try
- {
- sigEnvDoc = DOMUtils.parseWellFormed(contentIS);
- }
- catch (Exception e)
- {
- String message = "Cannot parse signature environment from location reference content.";
- logger_.error(message);
- throw new Exception(message, e);
- }
- sigEnvElem = sigEnvDoc.getDocumentElement();
- }
-
- // Get signature form signature environment document
- Element sigInfoElem = (Element) contentElem.getParentNode().getParentNode();
- Element sigLocElem = DOMUtils.getChildElem(sigInfoElem, Constants.NSURI_MOA_12_, SIGLOC_ELEM_);
- String sigLocXPath = DOMUtils.getText(sigLocElem);
- NodeList sigElemNL;
- try
- {
- XPathUtils xpUtils = new XPathUtils();
- xpUtils.setupContext(sigLocXPath, sigLocElem, null);
- sigElemNL = xpUtils.selectNodeSet(sigEnvElem);
- }
- catch (Exception e)
- {
- String message = "Cannot get signature at location \"" + sigLocXPath + "\" from signature environment.";
- logger_.error(message);
- throw new Exception(message, e);
- }
- if (sigElemNL.getLength() != 1 || ((Node) sigElemNL.item(0)).getNodeType() != Node.ELEMENT_NODE)
- {
- String message = "Cannot get signature at location \"" + sigLocXPath + "\" from signature environment.";
- logger_.error(message);
- throw new Exception(message);
- }
-
- if (oldDocElem != null) moaRequestDoc.replaceChild(oldDocElem, moaRequestDoc.getDocumentElement());
-
- return (Element) sigElemNL.item(0);
- }
-}
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/beans/HashInputDataInfo.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/beans/HashInputDataInfo.java
deleted file mode 100644
index e2cb27ab3..000000000
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/beans/HashInputDataInfo.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Created on 02.12.2003
- *
- * (c) Stabsstelle IKT-Strategie des Bundes
- */
-package at.gv.egovernment.moa.spss.slinterface.beans;
-
-import java.util.Set;
-
-/**
- * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
- */
-public class HashInputDataInfo
-{
- /**
- * The name of the temporary file in which this data is stored.
- */
- public String filename_;
-
- /**
- * Is this HID a SLXHTML document?
- */
- public boolean isSLXHTMLDocument_;
-
- /**
- * Is this HID a SLXHTML signed image?
- */
- public boolean isSLXHTMLImage_;
-
- /**
- * Show HID in result presentation?
- */
- public boolean doShow_;
-
- /**
- * The URI attribute value of the dsig:Reference corresponding with this HID.
- */
- public String uri_;
-
- /**
- * In case that this ID is a SLXHTML signed image, this set contains objects of type Integer
,
- * indicating the SLXHTML HIDs where this image is referenced.
- */
- public Set referredHids_;
-
- public HashInputDataInfo(String filename)
- {
- filename_ = filename;
- isSLXHTMLDocument_ = false;
- isSLXHTMLImage_ = false;
- doShow_ = true;
- uri_ = null;
- referredHids_ = null;
- }
-}
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/beans/SignerInfoBean.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/beans/SignerInfoBean.java
deleted file mode 100644
index 2893b2ac3..000000000
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/beans/SignerInfoBean.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Created on 27.11.2003
- *
- * (c) Stabsstelle IKT-Strategie des Bundes
- */
-package at.gv.egovernment.moa.spss.slinterface.beans;
-
-import iaik.asn1.ObjectID;
-import iaik.asn1.structures.Name;
-import iaik.utils.RFC2253NameParser;
-import iaik.utils.RFC2253NameParserException;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-import at.gv.egovernment.moa.spss.slinterface.Constants;
-import at.gv.egovernment.moa.spss.slinterface.DOMUtils;
-
-/**
- * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
- */
-public class SignerInfoBean
-{
- private static final String SIGNERINFO_ELEM_ = "SignerInfo";
- private static final String X509DATA_ELEM_ = "X509Data";
- private static final String X509SUBJNAME_ELEM_ = "X509SubjectName";
- private static final String X509ISSUERSERIAL_ELEM_ = "X509IssuerSerial";
- private static final String SERIAL_ELEM_ = "X509SerialNumber";
- private static final String ISSUER_ELEM_ = "X509IssuerName";
- private static final String QUALCERT_ELEM_ = "QualifiedCertificate";
-
- private Element signerInfoElem_;
-
- private String subjectNameItemSel_;
- private String issuerNameItemSel_;
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public SignerInfoBean(Document slResponseDoc)
- {
- Element verifyXMLResponseElem = slResponseDoc.getDocumentElement();
- signerInfoElem_ = DOMUtils.getChildElem(
- verifyXMLResponseElem, Constants.NSURI_SL_11_, SIGNERINFO_ELEM_);
-
- subjectNameItemSel_ = "2.5.4.3";
- issuerNameItemSel_ = "2.5.4.3";
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public void setSubjectNameItemSel(String selector)
- {
- subjectNameItemSel_ = selector;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public String getSubjectNameItem()
- {
- Element x509DataElem = DOMUtils.getChildElem(signerInfoElem_, Constants.NSURI_DSIG_, X509DATA_ELEM_);
- String subjectNameStr = DOMUtils.getChildText(x509DataElem, Constants.NSURI_DSIG_, X509SUBJNAME_ELEM_);
- if (subjectNameStr == null) return null;
- return getRDN(subjectNameStr, subjectNameItemSel_);
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public String getSerial()
- {
- Element x509DataElem = DOMUtils.getChildElem(signerInfoElem_, Constants.NSURI_DSIG_, X509DATA_ELEM_);
- Element iSElem = DOMUtils.getChildElem(x509DataElem, Constants.NSURI_DSIG_, X509ISSUERSERIAL_ELEM_);
- return DOMUtils.getChildText(iSElem, Constants.NSURI_DSIG_, SERIAL_ELEM_);
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public void setIssuerNameItemSel(String selector)
- {
- issuerNameItemSel_ = selector;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public String getIssuerNameItem()
- {
- Element x509DataElem = DOMUtils.getChildElem(signerInfoElem_, Constants.NSURI_DSIG_, X509DATA_ELEM_);
- Element iSElem = DOMUtils.getChildElem(x509DataElem, Constants.NSURI_DSIG_, X509ISSUERSERIAL_ELEM_);
- String issuerNameStr = DOMUtils.getChildText(iSElem, Constants.NSURI_DSIG_, ISSUER_ELEM_);
- if (issuerNameStr == null) return null;
- return getRDN(issuerNameStr, issuerNameItemSel_);
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public boolean getIsQualified()
- {
- Element x509DataElem = DOMUtils.getChildElem(signerInfoElem_, Constants.NSURI_DSIG_, X509DATA_ELEM_);
- Element qCElem = DOMUtils.getChildElem(x509DataElem, Constants.NSURI_SL_11_, QUALCERT_ELEM_);
- return (qCElem != null);
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- private String getRDN(String nameStr, String oidStr)
- {
- try
- {
- RFC2253NameParser nameParser = new RFC2253NameParser(nameStr);
- Name name = nameParser.parse();
- ObjectID oid = ObjectID.getObjectID(oidStr);
- if (oid == null) return null;
- String[] rdns = name.getRDNs(oid);
- if (rdns == null) return null;
- StringBuffer rdnsStr = new StringBuffer();
- for (int i = 0; i < rdns.length; i++)
- {
- if (i > 0) rdnsStr.append(", ");
- rdnsStr.append(rdns[i]);
- }
- return rdnsStr.toString();
- }
- catch (RFC2253NameParserException e)
- {
- return null;
- }
- }
-}
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/RequestWrapper.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/RequestWrapper.java
deleted file mode 100644
index a6652a56e..000000000
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/RequestWrapper.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Created on 19.11.2003
- *
- * (c) Stabsstelle IKT-Strategie des Bundes
- */
-package at.gv.egovernment.moa.spss.slinterface.filters;
-
-import java.io.ByteArrayInputStream;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
-
-/**
- * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
- */
-public class RequestWrapper extends HttpServletRequestWrapper
-{
-
- private ServletInputStream inputStream_;
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- /**
- * Generates a request wrapper around a particular request.
- *
- * @param request The request to be wrapped.
- *
- * @param inputStream The new inputstream, which will be returned by method {@link #getInputStream}, and
- * whose length will be returned by method {@link #getContentLength}.
- */
- public RequestWrapper(HttpServletRequest request, ByteArrayInputStream inputStream)
- {
- super(request);
- inputStream_ = new ServletInputStream(inputStream);
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- /**
- * @see #RequestWrapper(HttpServletRequest, ByteArrayInputStream)
- */
- public javax.servlet.ServletInputStream getInputStream()
- {
- return inputStream_;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- /**
- * @see #RequestWrapper(HttpServletRequest, ByteArrayInputStream)
- */
- public int getContentLength()
- {
- return inputStream_.getContentLength();
- }
-
-}
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/ResponseWrapper.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/ResponseWrapper.java
deleted file mode 100644
index 420723abb..000000000
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/ResponseWrapper.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Created on 18.11.2003
- *
- * (c) Stabsstelle IKT-Strategie des Bundes
- */
-package at.gv.egovernment.moa.spss.slinterface.filters;
-
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpServletResponseWrapper;
-
-/**
- * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
- */
-public class ResponseWrapper extends HttpServletResponseWrapper
-{
- private ServletOutputStream outputStream_;
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public ResponseWrapper(HttpServletResponse response)
- {
- super(response);
- outputStream_ = new ServletOutputStream();
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public javax.servlet.ServletOutputStream getOutputStream()
- {
- return outputStream_;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- /**
- * Returns the wrapped response as a byte array.
- *
- * @return the response as a byte array.
- */
- public byte[] toByteArray()
- {
- return outputStream_.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
deleted file mode 100644
index bcc797532..000000000
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/SL2MOAFilter.java
+++ /dev/null
@@ -1,386 +0,0 @@
-/*
- * Created on 18.11.2003
- *
- * (c) Stabsstelle IKT-Strategie des Bundes
- */
-package at.gv.egovernment.moa.spss.slinterface.filters;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.CharArrayReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-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.TransformerFactory;
-import javax.xml.transform.stream.StreamSource;
-
-import org.apache.commons.fileupload.DiskFileUpload;
-import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.fileupload.FileUpload;
-import org.apache.commons.fileupload.FileUploadException;
-import org.apache.log4j.Level;
-import org.apache.log4j.Logger;
-import org.apache.xerces.parsers.DOMParser;
-import org.w3c.dom.Document;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-import at.gv.egovernment.moa.spss.slinterface.Constants;
-import at.gv.egovernment.moa.spss.slinterface.beans.ChecksInfoBean;
-import at.gv.egovernment.moa.spss.slinterface.beans.DataInfoBean;
-import at.gv.egovernment.moa.spss.slinterface.beans.SignerInfoBean;
-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;
-
-/**
- * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
- */
-public class SL2MOAFilter implements Filter
-{
- private static Logger logger_ = Logger.getLogger(Constants.LH_FILTERS_);
-
- private FilterConfig config_;
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- /**
- * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
- */
- public void init(FilterConfig config) throws ServletException
- {
- // Store filter configuration
- config_ = config;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- /**
- * @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
- {
- // It is necessary to set the content type header already here, because for any unknown reason setting
- // it in the response JSP page has no effects at all. Perhaps any of the filters or the like already
- // writes to the response output stream.
- HttpServletResponse httpResponse = (HttpServletResponse) response;
- httpResponse.setHeader("Content-Type", "text/html; charset='ISO-8859-1'");
-
- // Create session
- HttpSession session = ((HttpServletRequest) request).getSession(true);
-
- // Check if request is HTTP-POST
- checkHttpPost((HttpServletRequest) request);
-
- // Remember remote IP address for later URL rewriting
- session.setAttribute("remoteAddr", request.getRemoteAddr());
-
- // Get SL request from content of request
- SLRequest slRequest = parseRequest((HttpServletRequest) request);
- session.setAttribute("slRequest", slRequest);
-
- // Schema validate SL request
- CharArrayReader slXmlRequestCAR = new CharArrayReader(slRequest.xmlRequest_.toCharArray());
- Document slXMLRequestDoc = parseSlXmlRequest(slXmlRequestCAR);
- logger_.debug("Finnished schema validating SL request.");
-
- // Transform SL request into a MOA SPSS request
- Properties initProps = (Properties)config_.getServletContext().getAttribute(Constants.WSCP_INIT_PROPS_);
- String trustProfileId = initProps.getProperty(Constants.IP_SP_TRUSTPROFILEID_);
- Document moaXMLRequestDoc = SL2MOA.toMoaVerifyXMLSignatureRequest(slXMLRequestDoc, trustProfileId);
- ByteArrayOutputStream moaRequestBOS = new ByteArrayOutputStream();
- MOAInvoker.serializeDocument(moaXMLRequestDoc, moaRequestBOS);
- logger_.debug("SL request transformed into MOA request:\n" + moaRequestBOS);
- ByteArrayInputStream moaRequestIS = new ByteArrayInputStream(moaRequestBOS.toByteArray());
- logger_.debug("Finnished transforming SL request into a MOA SP request.");
-
- // Invoke MOA SPSS
- RequestWrapper requestWrapper = new RequestWrapper((HttpServletRequest) request, moaRequestIS);
- ResponseWrapper responseWrapper = new ResponseWrapper((HttpServletResponse) response);
- chain.doFilter(requestWrapper, responseWrapper);
- logger_.debug("Finnished invoking MOA SP service.");
-
- // Parse MOA 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 moaResponseDoc;
- try
- {
- xmlParser.parse(responseSource);
- moaResponseDoc = xmlParser.getDocument();
- }
- catch (SAXException e)
- {
- String message = "Parsing MOA XML response failed.";
- logger_.error(message, e);
- throw new ServletException(message, e);
- }
- logger_.debug("Finnished parsing MOA SP response.");
-
- // Create bean with info about signed data
- try
- {
- DataInfoBean dataInfo = new DataInfoBean(
- moaXMLRequestDoc,
- moaResponseDoc,
- ((HttpServletRequest) request).getContextPath(),
- session,
- config_.getServletContext());
- session.setAttribute("dataInfo", dataInfo);
- }
- catch (Exception e)
- {
- String message = "Creating DataInfobean failed.";
- logger_.error(message, e);
- throw new ServletException(message, e);
- }
- logger_.debug("Finnished creating bean with info about signed data.");
-
- // Transform MOA response into a SL response
- Document slResponseDoc;
- slResponseDoc = MOA2SL.toSlVerifyXMLSignatureResponse(moaResponseDoc);
- session.setAttribute("slResponseDoc", slResponseDoc);
- logger_.debug("Finnished transforming MOA SP response into a SL response.");
-
- // Create bean with info about signer
- SignerInfoBean signerInfo = new SignerInfoBean(slResponseDoc);
- request.setAttribute("signerInfo", signerInfo);
- logger_.debug("Finnished creating bean with info about signer.");
-
- // Create bean with info about checks
- ChecksInfoBean checksInfo = new ChecksInfoBean(slResponseDoc);
- request.setAttribute("checksInfo", checksInfo);
- logger_.debug("Finnished creating bean with info about checks.");
-
- // Include jsp page, which writes the overview information about the verified signature
- try
- {
- RequestDispatcher dispatcher = request.getRequestDispatcher("/pages/resultOverview.jsp");
- dispatcher.include(request, response);
- }
- catch (IOException e)
- {
- String message = "Failed to create result overview page.";
- logger_.error(message, e);
- throw new ServletException(message, e);
- }
- logger_.debug("Finnished SL2MOAFilter.");
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- /**
- * @see javax.servlet.Filter#destroy()
- */
- public void destroy()
- {
- // Nothing to do here at the moment.
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- private void initTransformer(ServletContext context, String initPropStylesheetLoc) throws ServletException
- {
- String stylesheetName =
- (Constants.IP_SL2MOA_STYLESHEET_.equals(initPropStylesheetLoc))
- ? "sl2Moa"
- : "moa2Sl";
-
- String contextAttrName =
- (Constants.IP_SL2MOA_STYLESHEET_.equals(initPropStylesheetLoc))
- ? Constants.WSCP_SL2MOA_TRANSFORMER_
- : Constants.WSCP_MOA2SL_TRANSFORMER_;
-
- TransformerFactory transformerFactory = TransformerFactory.newInstance();
- Properties initProps = (Properties) context.getAttribute(Constants.WSCP_INIT_PROPS_);
- String stylesheetLoc = initProps.getProperty(initPropStylesheetLoc);
- InputStream stylesheetIS = context.getResourceAsStream(stylesheetLoc);
- if (stylesheetIS == null)
- {
- String message =
- "Cannot load " + stylesheetName + " stylesheet from location \"" + stylesheetLoc + "\".";
- logger_.error(message);
- throw new ServletException(message);
- }
- Transformer transformer;
- try
- {
- StreamSource stylesheetSS = new StreamSource(stylesheetIS);
- transformer = transformerFactory.newTransformer(stylesheetSS);
- }
- catch (TransformerConfigurationException e)
- {
- String message = "Cannot create XSLT transformer with " + stylesheetName + " stylesheet.";
- logger_.error(message, e);
- throw new ServletException(message, e);
- }
- context.setAttribute(contextAttrName, transformer);
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- /**
- * Parses the http request.
- */
- 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();
- if (!requestURI.endsWith(Constants.SLC_NAME_HTTP_REQUEST_))
- {
- String message = "Request does not end with \"" + Constants.SLC_NAME_HTTP_REQUEST_ + "\".";
- logger_.error(message);
- throw new IOException(message);
- }
-
- if (FileUpload.isMultipartContent(request))
- {
- // Request is encoded as mulitpart/form-data
- List items;
- try
- {
- DiskFileUpload upload = new DiskFileUpload();
- items = upload.parseRequest(request);
- }
- catch (FileUploadException e)
- {
- String message = "Cannot parse multipart/form-data request.";
- logger_.error(message);
- throw new IOException(message);
- }
-
- Iterator itemsIt = items.iterator();
- while (itemsIt.hasNext())
- {
- FileItem currItem = (FileItem) itemsIt.next();
- String currItemName = currItem.getFieldName();
- if (Constants.SLC_NAME_XML_REQUEST_.equals(currItemName))
- slRequest.xmlRequest_ = currItem.getString();
- else if (Constants.SLC_NAME_DATA_URL_.equals(currItemName))
- slRequest.dataUrl_ = currItem.getString();
- else if (Constants.SLC_NAME_STYLESHEET_URL_.equals(currItemName))
- slRequest.stylesheetUrl_ = currItem.getString();
- else if (Constants.SLC_NAME_REDIRECT_URL_.equals(currItemName))
- slRequest.redirectUrl_ = currItem.getString();
- else
- continue; // @TODO Do not evaluate other params at the moment
- }
- }
- else
- {
- // Request is encoded as application/x-www-form-urlencoded
- Map paramsMap = request.getParameterMap();
- Iterator paramNames = paramsMap.keySet().iterator();
- while (paramNames.hasNext())
- {
- String currName = (String) paramNames.next();
- String[] currValues = (String[]) paramsMap.get(currName);
- if (Constants.SLC_NAME_XML_REQUEST_.equals(currName))
- slRequest.xmlRequest_ = currValues[0];
- else if (Constants.SLC_NAME_DATA_URL_.equals(currName))
- slRequest.dataUrl_ = currValues[0];
- else if (Constants.SLC_NAME_STYLESHEET_URL_.equals(currName))
- slRequest.stylesheetUrl_ = currValues[0];
- else if (Constants.SLC_NAME_REDIRECT_URL_.equals(currName))
- 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)
- {
- // @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;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- private Document parseSlXmlRequest(Reader slXmlRequest) throws ServletException
- {
- // Parse sl request
- InputSource slXMLRequestIS = new InputSource(slXmlRequest);
- Document slXmlRequestDoc = null;
- try
- {
- DOMParser xmlParser = (DOMParser) config_.getServletContext().getAttribute(Constants.WSCP_XMLPARSER_);
- xmlParser.parse(slXMLRequestIS);
- slXmlRequestDoc = xmlParser.getDocument();
- }
- catch (Exception e)
- {
- String message = "Parsing Security-Layer request failed.";
- logger_.error(message, e);
- throw new ServletException(message, e);
- }
- if (logger_.getEffectiveLevel().isGreaterOrEqual(Level.DEBUG))
- {
- ByteArrayOutputStream debugOutputStream = new ByteArrayOutputStream();
- try
- {
- MOAInvoker.serializeDocument(slXmlRequestDoc, debugOutputStream);
- logger_.debug("XML-Request received:\n" + debugOutputStream);
- }
- catch (IOException e)
- {
- // No debug output if this fails
- }
- }
-
- // Check if namespace is correct
- String namespaceURI = slXmlRequestDoc.getDocumentElement().getNamespaceURI();
- if (!Constants.NSURI_SL_11_.equals(namespaceURI) && !Constants.NSURI_SL_12_.equals(namespaceURI))
- {
- String message = "XML request has invalid namespace: \"" + namespaceURI + "\".";
- logger_.error(message);
- throw new ServletException(message);
- }
-
- return slXmlRequestDoc;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- private void checkHttpPost(HttpServletRequest request) throws ServletException
- {
- String method = request.getMethod();
- if (!"POST".equals(method))
- {
- String message = "HTTP method \"" + method + "\" not supported. Must be \"POST\".";
- logger_.error(message);
- throw new ServletException(message);
- }
- }
-}
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/ServletInputStream.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/ServletInputStream.java
deleted file mode 100644
index b0609c2f8..000000000
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/ServletInputStream.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Created on 19.11.2003
- *
- * (c) Stabsstelle IKT-Strategie des Bundes
- */
-package at.gv.egovernment.moa.spss.slinterface.filters;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-
-/**
- * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
- */
-public class ServletInputStream extends javax.servlet.ServletInputStream
-{
- private ByteArrayInputStream inputStream_;
- private int length_;
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- /**
- * Generates a new ServletInputStram
from the specified stream.
- *
- * @param inputStream See above.
- */
- public ServletInputStream(ByteArrayInputStream inputStream)
- {
- super();
- inputStream_ = inputStream;
- length_ = inputStream_.available();
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- /**
- * Reads a single byte from the underlying ByteArrayInputStream
.
- *
- * @see java.io.InputStream#read()
- */
- public int read() throws IOException
- {
- return inputStream_.read();
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- /**
- * Gets the length of the content from this input stream. This equals to the number of bytes which where
- * available at the time of creating this ServletInputStream
.
- */
- public int getContentLength()
- {
- return length_;
- }
-}
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/ServletOutputStream.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/ServletOutputStream.java
deleted file mode 100644
index b790ee55c..000000000
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/ServletOutputStream.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Created on 18.11.2003
- *
- * (c) Stabsstelle IKT-Strategie des Bundes
- */
-package at.gv.egovernment.moa.spss.slinterface.filters;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-
-/**
- * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
- */
-public class ServletOutputStream extends javax.servlet.ServletOutputStream
-{
- private ByteArrayOutputStream outputStream_;
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- /**
- * Default constructor.
- */
- public ServletOutputStream()
- {
- super();
- outputStream_ = new ByteArrayOutputStream();
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- /**
- * @see java.io.OutputStream#write(int)
- */
- public void write(int b) throws IOException
- {
- outputStream_.write(b);
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- /**
- * Returns the content of this stream as a byte array.
- *
- * @return the content of this stream as a byte array.
- */
- public byte[] toByteArray()
- {
- return outputStream_.toByteArray();
- }
-}
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/listeners/ContextListener.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/listeners/ContextListener.java
deleted file mode 100644
index b865b2ee4..000000000
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/listeners/ContextListener.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Created on 18.11.2003
- *
- * (c) Stabsstelle IKT-Strategie des Bundes
- */
-package at.gv.egovernment.moa.spss.slinterface.listeners;
-
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Properties;
-
-import javax.servlet.ServletContext;
-import javax.servlet.ServletContextEvent;
-import javax.servlet.ServletContextListener;
-
-import org.apache.log4j.Logger;
-import org.apache.xerces.parsers.DOMParser;
-import org.apache.xerces.parsers.XMLGrammarPreparser;
-import org.apache.xerces.util.SymbolTable;
-import org.apache.xerces.util.XMLGrammarPoolImpl;
-import org.apache.xerces.xni.grammars.XMLGrammarDescription;
-import org.apache.xerces.xni.grammars.XMLGrammarPool;
-import org.apache.xerces.xni.parser.XMLInputSource;
-import org.xml.sax.SAXException;
-
-import at.gv.egovernment.moa.spss.slinterface.Constants;
-import at.gv.egovernment.moa.spss.slinterface.URLRewriter;
-
-/**
- * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
- */
-public class ContextListener implements ServletContextListener
-{
- private static final String SAX_NAMESPACES_FEATURE = "http://xml.org/sax/features/namespaces";
- private static final String SAX_VALIDATION_FEATURE = "http://xml.org/sax/features/validation";
-
- private static final String XERCES_SCHEMA_VALIDATION_FEATURE =
- "http://apache.org/xml/features/validation/schema";
- private static final String XERCES_NORMALIZED_VALUE_FEATURE =
- "http://apache.org/xml/features/validation/schema/normalized-value";
- private static final String XERCES_INCLUDE_IGNORABLE_WHITESPACE_FEATURE =
- "http://apache.org/xml/features/dom/include-ignorable-whitespace";
- private static final String XERCES_CREATE_ENTITY_REF_NODES_FEATURE =
- "http://apache.org/xml/features/dom/create-entity-ref-nodes";
- protected static final String XERCES_DEFER_NODE_EXPANSION_ =
- "http://apache.org/xml/features/dom/defer-node-expansion";
-
- private static final int BIG_PRIME = 2039;
-
- private static Logger logger_ = Logger.getLogger(Constants.LH_LISTENERS_);
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- /**
- * Initializes the web application.
- *
- * @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent)
- */
- public void contextInitialized(ServletContextEvent event)
- {
- logger_.debug("Context is being initialized.");
-
- ServletContext context = event.getServletContext();
-
- String initPropsLoc = System.getProperty(Constants.SP_INIT_PROPS_LOC_);
- if (initPropsLoc == null)
- {
- logger_.error("System property \"" + Constants.SP_INIT_PROPS_LOC_ + "\" not set.");
- return;
- }
-
- // Load init properties
- try
- {
- logger_.debug("Init properties location \"" + initPropsLoc + "\" will be used.");
-
- // Try to interpret init properties location as relative to the web application root
- InputStream initPropsIS = context.getResourceAsStream(initPropsLoc);
-
- if (initPropsIS == null)
- {
- // If this does not work, try to interpret init properties location as an absolute file system path
- initPropsIS = new FileInputStream(initPropsLoc);
- }
-
- Properties initProps = new Properties();
- initProps.load(initPropsIS);
- context.setAttribute(Constants.WSCP_INIT_PROPS_, initProps);
- }
- catch (IOException e)
- {
- logger_.error("Cannot load initialization properties from location \"" + initPropsLoc + "\".", e);
- }
-
- // Put helper object for rewriting URLs in the result page into the context
- URLRewriter urlRewriter = new URLRewriter((Properties)context.getAttribute(Constants.WSCP_INIT_PROPS_));
- context.setAttribute(Constants.WSCP_URL_REWRITER_, urlRewriter);
-
- // Initialize XML parser
- SymbolTable symbolTable = new SymbolTable(BIG_PRIME);
- XMLGrammarPool grammarPool = new XMLGrammarPoolImpl();
-
- XMLGrammarPreparser preparser = new XMLGrammarPreparser(symbolTable);
- preparser.registerPreparser(XMLGrammarDescription.XML_SCHEMA, null);
- preparser.setProperty(org.apache.xerces.impl.Constants.XERCES_PROPERTY_PREFIX
- + org.apache.xerces.impl.Constants.XMLGRAMMAR_POOL_PROPERTY, grammarPool);
- preparser.setFeature(SAX_NAMESPACES_FEATURE, true);
- preparser.setFeature(SAX_VALIDATION_FEATURE, true);
-
- // Schema for Security-Layer 1.2 alpha (including LocRefContent)
- Properties initProps = (Properties) context.getAttribute(Constants.WSCP_INIT_PROPS_);
- String slSchemaLoc = initProps.getProperty(Constants.IP_SL_SCHEMA_);
- preparseSchema(context, preparser, slSchemaLoc);
-
- // Schema for MOA 1.2
- String moaSchemaLoc = initProps.getProperty(Constants.IP_MOA_SCHEMA_);
- preparseSchema(context, preparser, moaSchemaLoc);
-
- // Schema for SLXHTML 1.0
- String slxhtmlSchemaLoc = initProps.getProperty(Constants.IP_SLXHTML_SCHEMA_);
- preparseSchema(context, preparser, slxhtmlSchemaLoc);
-
- // TODO parser is not threadsafe
- DOMParser xmlParser = new DOMParser(symbolTable, grammarPool);
- try
- {
- xmlParser.setFeature(SAX_NAMESPACES_FEATURE, true);
- xmlParser.setFeature(SAX_VALIDATION_FEATURE, true);
- xmlParser.setFeature(XERCES_SCHEMA_VALIDATION_FEATURE, true);
- xmlParser.setFeature(XERCES_NORMALIZED_VALUE_FEATURE, false);
- xmlParser.setFeature(XERCES_INCLUDE_IGNORABLE_WHITESPACE_FEATURE, true);
- xmlParser.setFeature(XERCES_CREATE_ENTITY_REF_NODES_FEATURE, false);
- xmlParser.setFeature(XERCES_DEFER_NODE_EXPANSION_, true);
- xmlParser.setFeature("http://apache.org/xml/features/validation/schema/augment-psvi", false); // TODO Stringkonstante
- xmlParser.setErrorHandler(new XMLParserErrorHandler(false, true, true));
-
- }
- catch (SAXException e)
- {
- String message = "Initialization of XML parser failed.";
- logger_.error(message, e);
- }
- context.setAttribute(Constants.WSCP_XMLPARSER_, xmlParser);
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- /**
- * Does some clean up at finalization of the web application.
- *
- * @see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent)
- */
- public void contextDestroyed(ServletContextEvent event)
- {
- // Remove init properties from web service context
- Properties initProps = (Properties) event.getServletContext().getAttribute(Constants.WSCP_INIT_PROPS_);
- if (initProps != null) event.getServletContext().removeAttribute(Constants.WSCP_INIT_PROPS_);
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- private void preparseSchema(ServletContext context, XMLGrammarPreparser preparser, String schemaLoc)
- {
- InputStream schemaIS = context.getResourceAsStream(schemaLoc);
- if (schemaIS == null)
- {
- String message = "Cannot load schema from location \"" + schemaLoc + "\".";
- logger_.error(message);
- }
- try
- {
- String schemaSystemId = context.getResource(schemaLoc).toExternalForm();
- preparser.preparseGrammar(XMLGrammarDescription.XML_SCHEMA,
- new XMLInputSource(null, schemaSystemId, null, schemaIS, null));
- }
- catch (Exception e)
- {
- String message = "Parsing schema loaded from location \"" + schemaLoc + "\" failed.";
- logger_.error(message, e);
- }
- }
-
-
-}
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/listeners/XMLParserErrorHandler.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/listeners/XMLParserErrorHandler.java
deleted file mode 100644
index 496d0aadb..000000000
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/listeners/XMLParserErrorHandler.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Created on 02.12.2003
- *
- * (c) Stabsstelle IKT-Strategie des Bundes
- */
-package at.gv.egovernment.moa.spss.slinterface.listeners;
-
-import org.apache.log4j.Logger;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-import at.gv.egovernment.moa.spss.slinterface.Constants;
-
-/**
- * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
- */
-public class XMLParserErrorHandler implements ErrorHandler
-{
- private static Logger logger_ = Logger.getLogger(Constants.LH_LISTENERS_XMLPARSER_);
-
- private boolean reportWarning_, reportError_, reportFatal_;
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public XMLParserErrorHandler(boolean reportWarning, boolean reportError, boolean reportFatal)
- {
- reportWarning_ = reportWarning;
- reportError_ = reportError;
- reportFatal_ = reportFatal;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- /**
- * @see org.xml.sax.ErrorHandler#warning(org.xml.sax.SAXParseException)
- */
- public void warning(SAXParseException exception) throws SAXException
- {
- logger_.warn("XML parser reported a warning.", exception);
- if (reportWarning_) throw exception;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- /**
- * @see org.xml.sax.ErrorHandler#error(org.xml.sax.SAXParseException)
- */
- public void error(SAXParseException exception) throws SAXException
- {
- logger_.error("XML parser reported an error.", exception);
- if (reportError_) throw exception;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- /**
- * @see org.xml.sax.ErrorHandler#fatalError(org.xml.sax.SAXParseException)
- */
- public void fatalError(SAXParseException exception) throws SAXException
- {
- logger_.error("XML parser reported a fatal error.", exception);
- if (reportFatal_) throw exception;
- }
-}
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/moainvoker/MOAInvoker.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/moainvoker/MOAInvoker.java
deleted file mode 100644
index e89d255f0..000000000
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/moainvoker/MOAInvoker.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Created on 19.11.2003
- *
- * (c) Stabsstelle IKT-Strategie des Bundes
- */
-package at.gv.egovernment.moa.spss.slinterface.moainvoker;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.rmi.RemoteException;
-import java.util.Vector;
-
-import javax.xml.namespace.QName;
-import javax.xml.rpc.Call;
-import javax.xml.rpc.Service;
-import javax.xml.rpc.ServiceException;
-import javax.xml.rpc.ServiceFactory;
-
-import org.apache.axis.message.SOAPBodyElement;
-import org.apache.xml.serialize.OutputFormat;
-import org.apache.xml.serialize.XMLSerializer;
-import org.w3c.dom.Document;
-
-import at.gv.egovernment.moa.spss.slinterface.Constants;
-
-/**
- * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
- */
-public class MOAInvoker
-{
- /**
- * Invokes MOA SP.
- *
- * @param request The XML request to be sent to MOA SP.
- *
- * @param endpoint The endpoint of the SOAP service where to send the XML request to.
- *
- * @return the XML response from the service.
- *
- * @throws Exception if getting the XML response from the SOAP response body fails.
- *
- * @throws RemoteException if MOA SP signals an error.
- *
- * @throws ServiceException if the SOAP client invoking MOA SP signals an error.
- */
- public static Document invokeSP(Document request, String endpoint)
- throws Exception, RemoteException, ServiceException
- {
- QName serviceQName = new QName(Constants.MI_SP_QNAME_);
- return invoke(request, endpoint, serviceQName);
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- private static Document invoke(Document request, String endpoint, QName serviceQName) throws Exception
- {
- // Instantiate AXIS service
- Service service = ServiceFactory.newInstance().createService(serviceQName);
-
- // Create and configure service call
- Call call = service.createCall();
- call.setTargetEndpointAddress(endpoint);
-
- // Create SOAP body
- SOAPBodyElement body = new SOAPBodyElement(request.getDocumentElement());
- SOAPBodyElement[] params = new SOAPBodyElement[] {body};
-
- // Make call
- Vector responses = (Vector) call.invoke(params);
-
- // Get response
- SOAPBodyElement responseBody = (SOAPBodyElement) responses.get(0);
- Document response = responseBody.getAsDocument();
- return response;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public static void serializeDocument(Document doc, OutputStream out) throws IOException
- {
- OutputFormat format = new OutputFormat(doc);
-
- format.setLineSeparator("\n");
- format.setIndenting(false);
- format.setPreserveSpace(true);
- format.setOmitXMLDeclaration(false);
- format.setEncoding("UTF-8");
-
- XMLSerializer serializer = new XMLSerializer(out, format);
- serializer.serialize(doc);
- }
-}
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/servlets/HashInputDataServlet.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/servlets/HashInputDataServlet.java
deleted file mode 100644
index f7cfb7e6c..000000000
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/servlets/HashInputDataServlet.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Created on 01.12.2003
- *
- * (c) Stabsstelle IKT-Strategie des Bundes
- */
-package at.gv.egovernment.moa.spss.slinterface.servlets;
-
-import java.io.FileInputStream;
-import java.io.OutputStream;
-
-import javax.servlet.ServletException;
-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 at.gv.egovernment.moa.spss.slinterface.Constants;
-import at.gv.egovernment.moa.spss.slinterface.Utils;
-import at.gv.egovernment.moa.spss.slinterface.beans.DataInfoBean;
-
-/**
- * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
- */
-public class HashInputDataServlet extends HttpServlet
-{
- private static Logger logger_ = Logger.getLogger(Constants.LH_SERVLETS_);
-
- /**
- * Default constructor.
- */
- public HashInputDataServlet()
- {
- super();
- }
-
- public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException
- {
- // Get DataInfoBean object from session
- HttpSession session = request.getSession(false);
- if (session == null)
- {
- String message = "No session available.";
- logger_.error(message);
- throw new ServletException(message);
- }
- DataInfoBean dataInfo = (DataInfoBean) session.getAttribute("dataInfo");
-
- // Get parameter inicating which hash input data file to show
- String hidCountStr = request.getParameter("hidCount");
- if (hidCountStr == null)
- {
- String message = "Parameter \"hidCount\" not available in request.";
- logger_.error(message);
- throw new ServletException(message);
- }
- int hidCount = -1;
- try
- {
- hidCount = Integer.parseInt(hidCountStr);
- }
- catch (NumberFormatException e)
- {
- String message = "Parameter \"hidCount\" (\"" + hidCount + "\") is not a valid string representation of an integer.";
- logger_.error(message, e);
- throw new ServletException(message, e);
- }
-
- // Get file name of temporary HID file
- dataInfo.setHashInputDataCount(hidCount);
- String hidFilename = dataInfo.getHashInputDataFilename();
-
- // Set content type
- boolean isSLXHTML = dataInfo.getIsSLXHTMLDocument();
- String contenType = (isSLXHTML) ? "text/html" : "application/octet-stream";
- response.setContentType(contenType);
-
- // Write content from temporary HID file to response OS
- try
- {
- FileInputStream hidFIS = new FileInputStream(hidFilename);
- OutputStream responseOS = response.getOutputStream();
- Utils.transferStreams(hidFIS, responseOS);
- }
- catch (Exception e)
- {
- String message = "Writing hash input data to response stream 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/MOAServlet.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/servlets/MOAServlet.java
deleted file mode 100644
index 362793064..000000000
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/servlets/MOAServlet.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Created on 19.11.2003
- *
- * (c) Stabsstelle IKT-Strategie des Bundes
- */
-package at.gv.egovernment.moa.spss.slinterface.servlets;
-
-import java.io.IOException;
-import java.rmi.RemoteException;
-import java.util.Properties;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.xml.rpc.ServiceException;
-
-import org.apache.log4j.Logger;
-import org.apache.xerces.parsers.DOMParser;
-import org.w3c.dom.Document;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-import at.gv.egovernment.moa.spss.slinterface.Constants;
-import at.gv.egovernment.moa.spss.slinterface.moainvoker.MOAInvoker;
-
-/**
- * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
- */
-public class MOAServlet extends HttpServlet
-{
- private static Logger logger_ = Logger.getLogger(Constants.LH_SERVLETS_);
-
- /**
- * Default constructor.
- */
- public MOAServlet()
- {
- super();
- }
-
- public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException
- {
- // Get moa request form http request
- Document moaXmlRequest = null;
- DOMParser xmlParser = (DOMParser) this.getServletContext().getAttribute(Constants.WSCP_XMLPARSER_);
- try
- {
- InputSource requestIS = new InputSource(request.getInputStream());
- xmlParser.parse(requestIS);
- moaXmlRequest = xmlParser.getDocument();
- }
- catch (IOException ioe)
- {
- String message = "Getting MOA XML request from http request input failed.";
- logger_.error(message, ioe);
- throw new ServletException(message, ioe);
- }
- catch (SAXException se)
- {
- String message = "Parsing MOA XML request got from http request failed.";
- logger_.error(message, se);
- throw new ServletException(message, se);
- }
-
- // Send request to MOA SP
- Properties initProps = (Properties) this.getServletContext().getAttribute(Constants.WSCP_INIT_PROPS_);
- String endPoint = initProps.getProperty(Constants.IP_SP_ENDPOINT_);
- if (endPoint == null)
- {
- String message = "No endpoint configured for MOA SP service.";
- logger_.error(message);
- throw new ServletException(message);
- }
- Document moaXMLResponseDoc = null;
- try
- {
- moaXMLResponseDoc = MOAInvoker.invokeSP(moaXmlRequest, endPoint);
- }
- catch (Exception e)
- {
- String message;
- if (e instanceof RemoteException)
- {
- message = "MOA SP service indicated an error at request execution.";
- }
- else if (e instanceof ServiceException)
- {
- message = "MOA SP client indicated an error at request execution.";
- }
- else
- {
- message = "Could not create DOM Document from MOA SP service response.";
- }
- logger_.error(message, e);
- throw new ServletException(message, e);
- }
- logger_.debug("Got response from MOA SP service.");
-
- // Write moa response to http response
- try
- {
- MOAInvoker.serializeDocument(moaXMLResponseDoc, response.getOutputStream());
- }
- catch (IOException e)
- {
- String message = "Writing MOA SP XML response to http response failed.";
- logger_.error(message, e);
- throw new ServletException(message, e);
- }
- logger_.debug("Wrote response from MOA SP service to http response outputstream.");
- }
-}
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/servlets/ReturnServlet.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/servlets/ReturnServlet.java
deleted file mode 100644
index 052c51f94..000000000
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/servlets/ReturnServlet.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * 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 ReturnServlet extends HttpServlet
-{
-
- private static Logger logger_ = Logger.getLogger(Constants.LH_SERVLETS_);
-
- /**
- * Default constructor.
- */
- public ReturnServlet()
- {
- 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
deleted file mode 100644
index 3c19d5ff6..000000000
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/servlets/SLRequest.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * 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/at/gv/egovernment/moa/spss/slinterface/transformers/MOA2SL.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/transformers/MOA2SL.java
deleted file mode 100644
index 2e82d4d32..000000000
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/transformers/MOA2SL.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Created on 20.11.2003
- *
- * (c) Stabsstelle IKT-Strategie des Bundes
- */
-package at.gv.egovernment.moa.spss.slinterface.transformers;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-import at.gv.egovernment.moa.spss.slinterface.Constants;
-
-/**
- * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
- */
-public class MOA2SL
-{
- /**
- * Transforms an MOA VerifyXMLSignatureResponse into a SL VerifyXMLSignatureResponse.
- *
- * @param moaVerifyXMLSignatureResponse The MOA VerifyXMLSignatureResponse to be transformed.
- *
- * @return the specified response document, transformed into a SL VerifyXMLSignatureResponse. Please note
- * that moaVerifyXMLSignatureResponse
is modified into the sl response.
- *
- * @pre moaVerifyXMLSignatureResponse is a valid instance of the SL Schema (version 1.2 or 1.1).
- */
- public static Document toSlVerifyXMLSignatureResponse(Document moaVerifyXMLSignatureResponse)
- {
- // Namespace to namespace prefix mapping
- HashMap prefixMap = new HashMap(4);
- prefixMap.put(Constants.NSURI_SL_10_, Constants.NSPRE_SL_10_);
- prefixMap.put(Constants.NSURI_SL_11_, Constants.NSPRE_SL_11_);
- prefixMap.put(Constants.NSURI_SL_12_, Constants.NSPRE_SL_12_);
- prefixMap.put(Constants.NSURI_MOA_12_, Constants.NSPRE_MOA_12_);
-
- // Namespaces to be changed
- HashMap nsTransforms = new HashMap();
- nsTransforms.put(Constants.NSURI_MOA_12_, Constants.NSURI_SL_11_);
-
- // Names to be changed
- HashMap nameTransforms = new HashMap();
- nameTransforms.put(
- new QName(Constants.NSURI_MOA_12_, "PublicAuthority"),
- new QName(Constants.NSURI_MOA_12_,"PublicAuthority"));
-
- Element verifyResponseElem = moaVerifyXMLSignatureResponse.getDocumentElement();
- verifyResponseElem.setAttributeNS(Constants.NSURI_NAMESPACES_,
- "xmlns:" + Constants.NSPRE_SL_10_, Constants.NSURI_SL_10_);
- verifyResponseElem.setAttributeNS(Constants.NSURI_NAMESPACES_,
- "xmlns:" + Constants.NSPRE_SL_11_, Constants.NSURI_SL_11_);
-
- // Convert SL request into MOA request
- verifyResponseElem =
- Utils.transformDeep(verifyResponseElem, prefixMap, nsTransforms, nameTransforms);
-
- // Add SignatureManifestCheck element (Code = 98)
- Element signatureMFCheckElem = moaVerifyXMLSignatureResponse.createElementNS(
- Constants.NSURI_SL_11_, Constants.NSPRE_SL_11_ + ":SignatureManifestCheck");
- Element smfCodeElem = moaVerifyXMLSignatureResponse.createElementNS(
- Constants.NSURI_SL_11_, Constants.NSPRE_SL_11_ + ":Code");
- signatureMFCheckElem.appendChild(smfCodeElem);
- smfCodeElem.appendChild(moaVerifyXMLSignatureResponse.createTextNode("98"));
- Element signatureCheckElem = (Element) verifyResponseElem.getElementsByTagNameNS(
- Constants.NSURI_SL_11_, "SignatureCheck").item(0);
- verifyResponseElem.insertBefore(signatureMFCheckElem, signatureCheckElem.getNextSibling());
-
- // Siblings of Certificate check must be in sl10 namespace
- nsTransforms.clear();
- nsTransforms.put(Constants.NSURI_SL_11_, Constants.NSURI_SL_10_);
- nameTransforms.clear();
- Element certCheckElem = (Element) verifyResponseElem.getElementsByTagNameNS(
- Constants.NSURI_SL_11_, "CertificateCheck").item(0);
- NodeList certCheckChildren = certCheckElem.getChildNodes();
- ArrayList certCheckChildElemsList = new ArrayList(certCheckChildren.getLength());
- for (int i = 0; i < certCheckChildren.getLength(); i++)
- {
- Node currentNode = certCheckChildren.item(i);
- if (currentNode.getNodeType() == Node.ELEMENT_NODE)
- certCheckChildElemsList.add(certCheckChildren.item(i));
- }
- for (int i = 0; i < certCheckChildElemsList.size(); i++)
- Utils.transformDeep((Element) certCheckChildElemsList.get(i), prefixMap, nsTransforms,
- nameTransforms);
-
- return moaVerifyXMLSignatureResponse;
- }
-}
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/transformers/QName.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/transformers/QName.java
deleted file mode 100644
index 6da0c433f..000000000
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/transformers/QName.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Created on 20.11.2003
- *
- * (c) Stabsstelle IKT-Strategie des Bundes
- */
-package at.gv.egovernment.moa.spss.slinterface.transformers;
-
-/**
- * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
- */
-public class QName
-{
- public String nsUrl_;
- public String localName_;
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public QName(String nsUrl, String localName)
- {
- nsUrl_ = nsUrl;
- localName_ = localName;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public boolean equals(Object o)
- {
- if (o == null) return false;
- if (o instanceof QName)
- {
- QName toBeCompared = (QName) o;
-
- boolean nsURLEquals = (nsUrl_ == null)
- ? toBeCompared.nsUrl_ == null
- : nsUrl_.equals(toBeCompared.nsUrl_);
- boolean localNameEquals = (localName_ == null)
- ? toBeCompared.localName_ == null
- : localName_.equals(toBeCompared.localName_);
-
- return nsURLEquals && localNameEquals;
- }
- return false;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public int hashCode()
- {
- return new String(nsUrl_ + localName_).hashCode();
- }
-}
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/transformers/SL2MOA.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/transformers/SL2MOA.java
deleted file mode 100644
index 6c476e9ce..000000000
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/transformers/SL2MOA.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Created on 20.11.2003
- *
- * (c) Stabsstelle IKT-Strategie des Bundes
- */
-package at.gv.egovernment.moa.spss.slinterface.transformers;
-
-import java.util.HashMap;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-import at.gv.egovernment.moa.spss.slinterface.Constants;
-
-/**
- * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
- */
-public class SL2MOA
-{
- /**
- * Transforms an SL VerifyXMLSignatureRequest into a MOA VerifyXMLSignatureRequest.
- *
- * @param slVerifyXMLSignatureRequest The SL VerifyXMLSignatureRequest to be transformed.
- *
- * @return the specified request document, transformed into a MOA VerifyXMLSignatureRequest. Please note
- * that slVerifyXMLSignatureRequest
is modified into the moa request.
- *
- * @pre slVerifyXMLSignatureRequest is a valid instance of the SL Schema (version 1.2 or 1.1).
- */
- public static Document toMoaVerifyXMLSignatureRequest(Document slVerifyXMLSignatureRequest,
- String trustProfileID)
- {
- // Namespace to namespace prefix mapping
- HashMap prefixMap = new HashMap(4);
- prefixMap.put(Constants.NSURI_SL_10_, Constants.NSPRE_SL_10_);
- prefixMap.put(Constants.NSURI_SL_11_, Constants.NSPRE_SL_11_);
- prefixMap.put(Constants.NSURI_SL_12_, Constants.NSPRE_SL_12_);
- prefixMap.put(Constants.NSURI_MOA_12_, Constants.NSPRE_MOA_12_);
-
- // Namespaces to be changed
- HashMap nsTransforms = new HashMap();
- nsTransforms.put(Constants.NSURI_SL_10_, Constants.NSURI_MOA_12_);
- nsTransforms.put(Constants.NSURI_SL_11_, Constants.NSURI_MOA_12_);
- nsTransforms.put(Constants.NSURI_SL_12_, Constants.NSURI_MOA_12_);
-
- // Names to be changed
- HashMap nameTransforms = new HashMap();
- nameTransforms.put(
- new QName(Constants.NSURI_SL_11_, "SignatureInfo"),
- new QName(Constants.NSURI_MOA_12_,"VerifySignatureInfo"));
- nameTransforms.put(
- new QName(Constants.NSURI_SL_12_, "SignatureInfo"),
- new QName(Constants.NSURI_MOA_12_,"VerifySignatureInfo"));
- nameTransforms.put(
- new QName(Constants.NSURI_SL_11_, "SignatureEnvironment"),
- new QName(Constants.NSURI_MOA_12_,"VerifySignatureEnvironment"));
- nameTransforms.put(
- new QName(Constants.NSURI_SL_12_, "SignatureEnvironment"),
- new QName(Constants.NSURI_MOA_12_,"VerifySignatureEnvironment"));
- nameTransforms.put(
- new QName(Constants.NSURI_SL_11_, "SignatureLocation"),
- new QName(Constants.NSURI_MOA_12_,"VerifySignatureLocation"));
- nameTransforms.put(
- new QName(Constants.NSURI_SL_12_, "SignatureLocation"),
- new QName(Constants.NSURI_MOA_12_,"VerifySignatureLocation"));
- nameTransforms.put(
- new QName(Constants.NSURI_SL_11_, "Supplement"),
- new QName(Constants.NSURI_MOA_12_,"SupplementProfile"));
- nameTransforms.put(
- new QName(Constants.NSURI_SL_12_, "Supplement"),
- new QName(Constants.NSURI_MOA_12_,"SupplementProfile"));
-
- Element verifyRequestElem = slVerifyXMLSignatureRequest.getDocumentElement();
- verifyRequestElem.setAttributeNS(Constants.NSURI_NAMESPACES_,
- "xmlns:" + Constants.NSPRE_MOA_12_, Constants.NSURI_MOA_12_);
-
- // Convert SL request into MOA request
- verifyRequestElem = Utils.transformDeep(verifyRequestElem, prefixMap, nsTransforms, nameTransforms);
-
- // Add ReturnHashInputData element
- Element returnHashInputDataElem = slVerifyXMLSignatureRequest.createElementNS(
- Constants.NSURI_MOA_12_, Constants.NSPRE_MOA_12_ + ":ReturnHashInputData");
- verifyRequestElem.appendChild(returnHashInputDataElem);
-
- // Add trust profile ID element
- Element trustProfileIDElem = slVerifyXMLSignatureRequest.createElementNS(
- Constants.NSURI_MOA_12_, Constants.NSPRE_MOA_12_ + ":TrustProfileID");
- trustProfileIDElem.appendChild(slVerifyXMLSignatureRequest.createTextNode(trustProfileID));
- verifyRequestElem.appendChild(trustProfileIDElem);
-
- return slVerifyXMLSignatureRequest;
- }
-}
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/transformers/Utils.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/transformers/Utils.java
deleted file mode 100644
index d03895efe..000000000
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/transformers/Utils.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Created on 20.11.2003
- *
- * (c) Stabsstelle IKT-Strategie des Bundes
- */
-package at.gv.egovernment.moa.spss.slinterface.transformers;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.xerces.dom.DocumentImpl;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.traversal.DocumentTraversal;
-import org.w3c.dom.traversal.NodeFilter;
-import org.w3c.dom.traversal.NodeIterator;
-
-import at.gv.egovernment.moa.spss.slinterface.Constants;
-
-/**
- * @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
- */
-public class Utils
-{
- /**
- *
- * @param elem
- * @param prefixes
- * @param namespaces
- * @param names
- *
- * @pre elem
is backed by a org.apache.xerces.dom.DocumentImpl
.
- */
- public static Element transformDeep(Element elem, Map prefixes, Map namespaces, Map names)
- {
- // Get node iterator for element
- DocumentTraversal docTraversal = (DocumentImpl) elem.getOwnerDocument();
- NodeIterator elemsIt = docTraversal.createNodeIterator(elem, NodeFilter.SHOW_ELEMENT, null, true);
-
- // Make iterator immutable
- List elemsList = new LinkedList();
- while (true)
- {
- Node currNode = elemsIt.nextNode();
- if (currNode == null) break;
- elemsList.add(currNode);
- }
-
- Iterator elemsImmIt = elemsList.iterator();
- Element returnValue = null;
- while (elemsImmIt.hasNext())
- {
- Element currElem = (Element) elemsImmIt.next();
-
- String nsUri = currElem.getNamespaceURI();
- String localName = currElem.getLocalName();
- QName qName = new QName(nsUri, localName);
-
- // Check if element is in "names"
- QName newQName = (QName)names.get(qName);
- if (newQName != null)
- {
- Element transformedElem = transformElem(currElem, newQName, prefixes);
- if (returnValue == null) returnValue = transformedElem;
- }
- else
- {
- String newNamespace = (String)namespaces.get(nsUri);
- if (newNamespace != null)
- {
- newQName = new QName(newNamespace, localName);
- Element transformedElem = transformElem(currElem, newQName, prefixes);
- if (returnValue == null) returnValue = transformedElem;
- }
- }
- }
- return returnValue;
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- private static Element transformElem(Element currElem, QName newQName, Map prefixes)
- {
- Element newElem = currElem.getOwnerDocument().createElementNS(newQName.nsUrl_,
- (String) prefixes.get(newQName.nsUrl_) + ":" + newQName.localName_);
-
- currElem.getParentNode().replaceChild(newElem, currElem);
-
- // Treat attributes of currElem
- NamedNodeMap currAttrs = currElem.getAttributes();
- ArrayList currAttrsList = new ArrayList(currAttrs.getLength());
- for (int i = 0; i < currAttrs.getLength(); i++) currAttrsList.add(currAttrs.item(i));
- for (int i = 0; i < currAttrsList.size(); i++)
- {
- Attr currAttr = (Attr)currAttrsList.get(i);
- currAttr.getOwnerElement().removeAttributeNode(currAttr);
-
- // Workaround for bad Xerces behaviour: default attributes in the xml namespace are created without
- // the xml prefix
- if (Constants.NSURI_XML_.equals(currAttr.getNamespaceURI()) && "space".equals(currAttr.getLocalName()))
- {
- newElem.setAttributeNS(Constants.NSURI_XML_, "xml:space", currAttr.getValue());
- }
- else
- {
- newElem.setAttributeNode(currAttr);
- }
- }
-
- // Treat child nodes of currElem
- NodeList currChildren = currElem.getChildNodes();
- ArrayList currChildrenList = new ArrayList(currChildren.getLength());
- for (int i = 0; i < currChildren.getLength(); i++) currChildrenList.add(currChildren.item(i));
- for (int i = 0; i < currChildrenList.size(); i++)
- {
- Node currChild = (Node)currChildrenList.get(i);
- currElem.removeChild(currChild);
- newElem.appendChild(currChild);
- }
-
- return newElem;
- }
-}
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
deleted file mode 100644
index 4cf099a45..000000000
--- a/spss.slinterface/WEB-INF/src/test/at/gv/egovernment/moa/spss/slinterface/DataURLBean.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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
deleted file mode 100644
index ff4cbbe59..000000000
--- a/spss.slinterface/WEB-INF/src/test/at/gv/egovernment/moa/spss/slinterface/DataURLServlet.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * 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/src/test/at/gv/egovernment/moa/spss/slinterface/RewriteServlet.java b/spss.slinterface/WEB-INF/src/test/at/gv/egovernment/moa/spss/slinterface/RewriteServlet.java
deleted file mode 100644
index 46b1f793d..000000000
--- a/spss.slinterface/WEB-INF/src/test/at/gv/egovernment/moa/spss/slinterface/RewriteServlet.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Created on 15.12.2003
- *
- * (c) Stabsstelle IKT-Strategie des Bundes
- */
-package test.at.gv.egovernment.moa.spss.slinterface;
-
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.Properties;
-
-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 RewriteServlet extends HttpServlet
-{
- private static Logger logger_ = Logger.getLogger(Constants.LH_TEST_);
-
- public RewriteServlet()
- {
- super();
- }
-
- /* ---------------------------------------------------------------------------------------------------- */
-
- public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException
- {
- // Read content form POST request
- try
- {
- logger_.debug("Received GET request:");
- logger_.debug("Request URI: \"" + request.getRequestURL() + "\"");
-
- Properties initProps = (Properties) this.getServletContext().getAttribute(Constants.WSCP_INIT_PROPS_);
- String paramName = (initProps != null)
- ? initProps.getProperty(Constants.IP_REW_SLI_URLPARAMNAME_)
- : null;
-
- if (paramName == null || "".equals(paramName))
- throw new ServletException("Could not get rewrite parameter name from init properties.");
-
- logger_.debug("SLInterface rewrite parameter : \"" + paramName + "\"");
-
- String slInterfaceURLStr = request.getParameter(paramName);
- URL slInterfaceURL = new URL(slInterfaceURLStr);
- URLConnection slInterfaceURLConn = slInterfaceURL.openConnection();
-
- response.setContentType(slInterfaceURLConn.getContentType());
-
- InputStream slInterfaceIS = slInterfaceURLConn.getInputStream();
- OutputStream responseOS = response.getOutputStream();
- Utils.transferStreams(slInterfaceIS, responseOS);
- }
- catch (Exception e)
- {
- String message = "Failed to get answer from SL interface.";
- 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
deleted file mode 100644
index da7d74f7b..000000000
--- a/spss.slinterface/WEB-INF/web.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-
-
-
-
-
- - | Open Source - für das E-Government |
-
- - |
MOA: Serverseitige Signaturprüfung (SL)
- -Übersicht zur Dokumentation der Version 1.0
-- | Open Source - für das E-Government |
- - |
MOA: Serverseitige Signaturprüfung (SL), V 1.0
-Betriebshandbuch
-Das Modul Serverseitige Signaturprüfung (SL) ist als plattformunabhängiges Modul ausgelegt, das als Webservice über HTTP bzw. HTTPS angesprochen werden kann.
-Dieses Handbuch beschreibt einerseits die Installation des Moduls, andererseits werden die Konfigurationsmöglichkeiten dargestellt. Für eine funktionale Beschreibung des Moduls siehe Systemhandbuch.
-Das MOA SL Webservice wurde plattformunabhänig konzipiert und in Java entwickelt. Es benötigt als Ablaufumgebung eine Java 2 Standard Edition (J2SE SDK, Version 1.4.2 oder 5.0) sowie einen Java Servlet Container, der die Java Servlet Specification in der Version x.y erfüllt.
-In diesem Betriebshandbuch wird davon ausgegangen, dass MOA SL Apache Tomcat (Version 4.1 oder höher) als Servlet Container verwendet. Die Verwendung eines anderen Servlet Containers ist grundsätzlich möglich, wurde aber nicht getestet und ist auch nicht Gegenstand dieses Betriebshandbuchs.
-Weiters wird davon ausgegangen, dass Apache Tomcat gleichzeitig als HTTP- bzw. HTTPS-Endpunkt für das MOA SL Webservice dient, d.h. beide Protokolle werden direkt in Tomcat konfiguriert. Die Verwendung eines vor Apache Tomcat geschalteten Webservers ist grundsätzlich möglich. So werden etwa als Teil des Apache Tomcat Projekts Module zur Verbindung mit einem vorgeschalteten Microsoft Internet Information Server oder mit einem vorgeschalteten Apache Webserver angeboten. Die Beschreibung der möglichen Vorschaltungen ist jedoch nicht Teil dieses Betriebshandbuchs.
-Das MOA SL Webservice nimmt Signaturprüfungsrequests für XML-Signaturen entsprechend der Spezifikation des Security-Layers zur österreichischen Bürgerkarte in den Versionen 1.1 und 1.2 entgegen. Für die Durchführung der Signaturprüfung bedient sich MOA SL des Moduls MOA Signaturprüfung (SP). Für den Betrieb von MOA SL ist daher die Verfügbarkeit einer Webservice-Installation von MOA SP in der Version 1.2 oder höher Voraussetzung.
-Als Logging Toolkit verwendet das MOA SL Webservice Apache Log4j.
-Die folgenden Schritte dienen der Vorbereitung der Installation.
-$JAVA_HOME
bezeichnet. $CATALINA_HOME
bezeichnet.moa-sl-1.0.x.zip
in ein beliebiges Verzeichnis. Dieses Verzeichnis wird im weiteren Verlauf als $MOA_SL_INST
bezeichnet. Die zentrale Konfigurations-Datei von Tomcat ist $CATALINA_HOME/conf/server.xml
. Tomcat wird grundsätzlich mit einer funktionierenden Default-Konfiguration ausgeliefert, die jedoch einiges an Ballast enthält und viele Ports offen lässt.
Die Datei $MOA_SL_INST/conf/tomcat/server.xml
enthält eine minimale Tomcat-Konfiguration, die ausschließlich den Connector für HTTP auf Port 8080 freischaltet. Durch kopieren dieser Datei nach $CATALINA_HOME/conf/server.xml
kann Tomcat mit dieser Konfiguration gestartet werden. Wir empfehlen diese Konfiguration nur für Fälle, in denen das MOA SL Webservice in einer abgeschlossenen Netzwerkumgebung betrieben wird.
Wird das MOA SL Webservice in einer nicht abgeschlossenen Umgebung (z.B. Erreichbarkeit über das Internet) betrieben, ist es für den Benutzer von MOA SL essentiell, die Identität des Webservice eindeutig feststellen zu können, denn er vertraut dem Webservice ja die Prüfung einer elektronischen Signatur an. Diese Identitätsprüfung kann mit hoher Qualität vorgenommen werden, wenn die Erreichbarkeit des Webservice auf HTTPS mit Serverauthentisierung eingeschränkt wird.
-Für die dazu notwendige Konfiguration kann die im vorigen Abschnitt besprochene minimale Tomcat-Konfiguration als Ausgangspunkt verwendet werden: Zunächst ist der HTTP Connector abzuschalten (auszukommentieren). Anschließend ist der HTTPS Connector zu konfigurieren. Das Dokument Tomcat SSL Configuration HOW-TO gibt einen guten Überblick dazu. Grob zusammengefasst sind folgende Schritte durchzuführen:
-keytool
erstellen, einem Programm, das Ihrem J2SE SDK beiliegt.keytool
erstellt werden. Dieser Keystore ist optional und braucht nur erstellt zu werden, wenn sich die Kunden gegenüber dem MOA SL Webservice authentisieren müssen. $CATALINA_HOME/conf/server.xml
.Die Konfiguration des HTTPS Connectors kann entfallen, wenn Tomcat ein Webserver vorgeschaltet ist, und dieser die SSL-Kommunikation mit dem Kunden übernimmt (siehe Abschnitt 2.1).
-Um das MOA SL Webservice in Tomcat für den Einsatz vorzubereiten, sind folgende Schritte notwendig:
-$MOA_SL_INST/moa-sl.war
enthält das einsatzfertige MOA SL Webarchiv und muss ins Verzeichnis $CATALINA_HOME/webapps
kopiert werden. Dort wird sie beim ersten Start von Tomcat automatisch ins Verzeichnis $CATALINA_HOME/webapps/moa-sl
entpackt. $CATALINA_HOME/conf/moa-sl
). Eine funktionsfähige Konfiguration, die als Ausgangspunkt für die Konfiguration des MOA SL Webservices dienen kann, finden Sie hier. xalan.jar
, xercesImpl.jar
und xmlParserAPIs.jar
aus dem Verzeichnis $MOA_SL_INST/endorsed14
müssen in das Tomcat-Verzeichnis $CATALINA_HOME/common/endorsed
kopiert werden. Sind gleichnamige Dateien dort bereits vorhanden, müssen sie überschrieben werden. Die ggf. in diesem Verzeichnis vorhandene Datei xml-apis.jar
muss gelöscht werden.CATALINA_OPTS
in der Form -D<name>=<wert>
übergeben):
- at.gv.egovernment.moa.spss.slinterface.PropertiesLocation
: Pfad und Name der zentralen Konfigurationsdatei für MOA SL. Eine beispielhafte Konfigurationsdatei finden Sie hier. Wird ein relativer Pfad angegeben, wird zuerst versucht, diesen relativ zum Wurzelverzeichnis der Webapplikation (also $CATALINA_HOME/webapps/moa-sl
) zu interpretieren. Klappt das nicht, wird dann versucht, den relativen Pfad relativ zum Startverzeichnis der Java Virtual Machine zu interpretieren. Diese System Property muss jedenfalls gesetzt werden.log4j.configuration
: URL der Log4j Konfigurationsdatei. Eine beispielhafte Log4j-Konfiguration finden Sie hier. Wird eine relative URL angegeben, wird diese als File-URL relativ zum Startverzeichnis der Java Virtual Machine interpretiert. Ist diese System Property nicht gesetzt, wird automatisch eine im Webarchiv unter WEB-INF/classes
enthaltene Default-Konfiguration herangezogen.javax.net.ssl.trustStore
: Pfad und Dateiname des Truststores für vertrauenswürdige SSL Client-Zertifikate (optional; nur wenn kein Webserver vor Tomcat geschalten wird und SSL Client-Authentisierung durchgeführt werden soll). Ein relativer Pfad werden relativ zum Startverzeichnis der Java Virtual Machine interpretiert.javax.net.ssl.trustStorePassword
: Passwort für den Truststore (optional; nur wenn kein Webserver vor Tomcat geschalten wird und SSL Client-Authentisierung durchgeführt werden soll). javax.net.ssl.trustStoreType
: Truststore-Typ (optional; nur wenn kein Webserver vor Tomcat geschalten wird und SSL Client-Authentisierung durchgeführt werden soll). Je nach verwendetem Keystore-Typ muss jks
(Java Key Store) oder pkcs12
(PKCS#12-Datei) angegeben werden.Das Verzeichnis $MOA_SL_INST/conf/tomcat/win32
enthält Script-Dateien zum Starten und Stoppen von Tomcat. Vor der erstmaligen Verwendung der Scripts müssen in den ersten Zeilen die Umgebungsvariablen JAVA_HOME
(Basisverzeichnis des eingesetzten J2SE SDK) und CATALINA_HOME
(Basisverzeichnis der eingesetzten Tomcat-Installation) angepasst werden. Evtl. müssen Sie auch noch die in den Script-Dateien gesetzten, in Abschnitt 2.4 besprochenen System Properties anpassen.
Zunächst müssen die in Abschnitt 2.4 besprochenen System Properties mit Hilfe der Umgebungsvariablen CATALINA_OPTS
gesetzt wrden. Die Datei $MOA_SL_INST/tomcat/unix/moa-env.sh
enthält ein Beispiel dafür. Weiters müssen noch die Umgebungsvariablen JAVA_HOME
(Basisverzeichnis des eingesetzten J2SE SDK) und CATALINA_HOME
(Basisverzeichnis der eingesetzten Tomcat-Installation) angepasst werden.
Nun kann Tomcat aus seinem Basisverzeichnis mit
-bin/catalina.sh start-gestartet werden. Das Stoppen von Tomcat erfolgt analog mit -
bin/catalina.sh stop-
Ein erfolgreicher Start des MOA SL Webservices ist an folgender Log-Meldung ersichtlich:
- -INFO | 18 10:09:45,155 | main | TID=startup NID=<null> MSG=MOA Konfiguration erfolgreich geladen --
Bei leichten Fehlern in der Konfiguration geben WARN
Log-Meldungen unmittelbar davor Aufschluss über fehlerhafte Konfigurations-Einträge.
- Nach dem Starten von Tomcat steht das MOA SP/SS Webservice für die Server-Signatur und Signatur-Prüfung unter den Endpunkten
http://<host>:<port>/moa-spss/services/SignatureCreation --
bzw. -
-http://<host>:<port>/moa-spss/services/SignatureVerification --
zur Verfügung. Die Verfügbarkeit des Services können Sie einfach überprüfen, indem Sie die Endpunkte mit einem Web-Browser aufgerufen; dies sollte nach erfolgreichem Start zur Anzeige einer Informationsseite führen.
-Konnte das MOA SP/SS Webservice nicht ordnungsgemäß gestartet werden, führt das zu folgender Log-Meldung:
-FATAL | 18 10:17:03,475 | main | TID=startup NID=<null>-In diesem Fall geben die
MSG=Fehler beim Lesen der MOA Konfiguration: das Service steht nicht zur Verfügung -
WARN
bzw. ERROR
Log-Meldungen unmittelbar davor Aufschluss über den genaueren Grund.
-Das MOA SL Webservice verwendet Apache Log4j für die Ausgabe von Log-Meldungen am Bildschirm bzw. in Log-Dateien. Log4j bietet zahlreiche Konfigurationsmöglichkeiten, die ausführlich im Apache Log4j Handbuch beschrieben sind. Unter anderem gibt es die Möglichkeit, folgende Einstellungen vorzunehmen: -
Das verwendete Log-Level (DEBUG
, INFO
, WARN
, ERROR
, FATAL
);
Name und maximale Größe der Log-Datei(en);
-Das Aussehen der Log-Einträge.
-Das MOA SL Webservice verwendet folgende Log-Hierarchien:
-moa.spss.server
für alle Log-Meldungen aus dem MOA/SPSS Webservice;
iaik.server
für alle Log-Meldungen aus den SIC/IAIK Kryptographie-Modulen.
Eine für MOA SP/SS passende Konfigurationsdatei für Log4j finden Sie hier. Wird diese Datei als Logging-Konfiguration verwendet, so werden alle Log-Meldungen sowohl in die Konsole, als auch in die Datei moa-spss.log
geschrieben.
Anhand einer konkreten Log-Meldung wird das Format der MOA SP/SS Log-Meldungen erläutert:
-INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=node1 - MSG=Starte neue Transaktion: TID=1049225059594-100, Service=SignatureVerification --
Der Wert INFO
besagt, dass die Log-Meldung im Log-Level INFO
entstanden ist. Folgende Log-Levels existieren:
DEBUG
: Log-Meldungen im Log-Level DEBUG
geben Auskunft über die innere Arbeitsweise des Systems. Sie sind hauptsächlich für Entwickler interessant.
INFO
: Diese Log-Meldungen geben Status-Informationen über den Ablauf des Webservices, wie z.B. über das Einlangen einer neuen Anfrage.
WARN
: Bei der Ausführung einer Anfrage sind leichte Fehler aufgetreten. Der Ablauf des Webservices ist nicht weiter beeinträchtigt.
ERROR
: Die Ausführung einer Anfrage musste abgebrochen werden. Das Webservice ist davon nicht beeinträchtigt.
FATAL
: Es ist ein Fehler aufgetreten, der den weiteren Betrieb des Webservices nicht mehr erlaubt.
Der nächste Wert 01 21:25:26,540
gibt den Zeitpunkt an, zu dem die Log-Meldung generiert wurde (in diesem Fall den 1. Tag im aktuellen Monat, sowie die genaue Uhrzeit).
Der Wert Thread-3
bezeichnet den Thread, von dem die Anfrage bearbeitet wird.
Der Wert von TID
gibt die für jede Anfrage eindeutige Transaktions-ID an. Log-Meldungen, die bei der Abarbeitung dieser Anfrage geschrieben werden, enthalten alle einen Hinweis auf die entsprechende Transaktions-ID.
Der Wert von NID
gibt den Rechner-Knoten an, auf dem das MOA SP/SS Webservice läuft (bei NID=<null>
ist dieser Wert nicht konfiguriert, vergleiche Abschnitt 2.1.2.3).
Der Rest der Zeile einer Log-Meldung ist der eigentliche Text, mit dem das System bestimmte Informationen anzeigt. Im Fehlerfall ist häufig ein Java Stack-Trace angefügt, der eine genauere Ursachen-Forschung ermöglicht.
-Neben den im Abschnitt 2.1.2.4.3 beschriebenen Log-Meldungen, die anzeigen, ob das Service ordnungsgemäß gestartet wurde, geben nachfolgenden Log-Meldungen Aufschluss über die Abarbeitung von Anfragen.
-Die Entgegennahme einer Anfrage wird angezeigt durch: - -
-INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null> - MSG=Starte neue Transaktion: TID=1049225059594-100, Service=SignatureVerification -INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null> - MSG=Aufruf von Adresse=127.0.0.1 -INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null> - MSG=Client-Zertifikat nicht verfügbar-
Die dritte Log-Meldung besagt, dass für die Abarbeitung dieser Anfrage kein Client-Zertifikat verfügbar ist (entweder, weil die Anfrage über HTTP eingelangt ist, oder weil die SSL Client-Authentisierung nicht eingeschaltet ist). Bei erfolgreicher SSL Client-Authentisierung, gibt beispielsweise folgende Log-Meldung Informationen über das Client-Zertifikat aus: -
INFO | 12 13:58:08,772 | Thread-10 | TID=1045054687159-2 NID=<null> - MSG=Client-Zertifikat: Subject=CN=Testuser, OU=MOA, O=BRZ, L=Vienna, ST=Vienna, C=AT, - Serial=1.039.104.204, Issuer=CN=TestCA, OU=MOA, O=BRZ, L=Vienna, ST=Vienna, C=AT-
Eine erfolgreich abgearbeitete Anfrage wird angezeigt durch: -
-INFO | 01 21:25:53,168 | Thread-3 | TID=1049225059594-106 NID=<null> - MSG=Anfrage erfolgreich abgearbeitet-
Ein Fehler beim Abarbeiten der Anfrage wird angezeigt durch:
-INFO | 01 21:25:27,642 | Thread-3 | TID=1049225059594-100 NID=<null> - MSG=Fehler beim Abarbeiten der Anfrage-
In diesem Fall gibt der mitgeloggte Stacktrace Auskunft über die Art des Fehlers. Der Aufrufer des MOA SP/SS Webservices bekommt einen Fehlercode sowie eine kurze Beschreibung des Fehlers als Antwort zurück.
- Die Tatsächlich übertragenen Anfragen bzw. Antworten werden aus Effizienzgründen nur im Log-Level DEBUG
angezeigt.
Ausgehend von der Basisinstallation können die optionalen Erweiterungen, die in den nachfolgenden Abschnitten beschrieben werden, unabhängig und in beliebiger Kombination aufgesetzt werden.
-Den MOA SP/SS Webservices kann optional ein MS IIS vorgeschaltet sein. In diesem Fall übernimmt der MS IIS die HTTP- bzw. HTTPS-Kommunikation mit dem Aufrufer des Webservices. Die Kommunikation zwischen MS IIS und dem in Tomcat eingerichteten MOA SP/SS Webservice wird durch Jakarta mod_jk durchgeführt. Die angeführten Konfigurationsschritte gehen von einer MS IIS Standard-Installation aus.
- Für die Kommunikation des MS IIS mit dem im Tomcat eingerichteten MOA SP/SS Webservice wird das ISAPI-Modul von Jakarta mod_jk im MS IIS installiert und konfiguriert. Eine detaillierte Installations- und Konfigurationsanleitung gibt das mod_jk IIS HowTo. Beispiele für workers.properties
und uriworkermap.properties
Dateien liegen im Verzeichnis $MOA_SL_INST/tomcat
bei.
Damit Tomcat die Aufrufe entgegennehmen kann, die von MS IIS mittels Jakarta mod_jk weiterleitet werden, muss in $CATALINA_HOME/conf/server.xml
der AJP 1.3 Connector aktiviert werden. Im Gegenzug können die Konnektoren für HTTP und HTTPS deaktiviert werden. Das geschieht am einfachsten durch Ein- bzw. Auskommentieren der entsprechenden Connector
Konfigurations-Elemente in dieser Datei. Die Datei $MOA_SL_INST/tomcat/server.mod_jk.xml
enthält eine Konfiguration, die ausschließlich den Port für den AJP 1.3 Connector offen lässt.
Die Dokumentation zum Einrichten von SSL auf dem MS IIS steht nach Installation des IIS unter http://localhost/iisHelp/ oder aber auch auf den Websiten vo Mircrosoft zur Verfügung.
-Den MOA SP/SS Webservices kann ein Apache Webserver vorgeschaltet sein. Das Prinzip funktioniert wie bei MS IIS, auch hier wird Jakarta mod_jk für die Kommunikation zwischen Webserver und Tomcat eingesetzt. Die angeführten Konfigurationsschritte gehen von einer Standard-Installation des Apache Webservers aus und sind ident für die Versionen 1.3.x und 2.0.x.
-Um das MOA-SPSS Webservice hinter einem Apache Webserver zu betreiben, ist die Konfiguration des Apache-Moduls mod_jk erforderlich. Eine detaillierte Installations- und Konfigurationsanleitung gibt das mod_jk Apache HowTo. Ein Beispiel für eine workers.properties
Datei liegt im Verzeichnis $MOA_SL_INST/tomcat
bei.
Um das MOA SP/SS Webservice dem Apache Webserver bekannt zu machen, sind zumindest folgende Einträge im globalen Kontext der Apache-Konfigurationsdatei notwendig:
-LoadModule jk_module /usr/lib/apache/mod_jk.so-
AddModule jk_module
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkWorkersFile conf/workers.properties
JkMount /moa-spss/* moaworker
Die Pfad- und Dateinamen können je nach existierender Apache Installation geringfügig variieren.
-Die Konfiguration von Tomcat ist analog zu Abschnitt 2.2.1.1.2 durchzuführen.
-Apache kann in Verbindung mit mod_SSL als SSL-Endpunkt für das MOA SP/SS Webservice fungieren. In diesem Fall entfällt die SSL-Konfiguration in Tomcat, da Apache und Tomcat auch im Fall von SSL Daten via mod_jk austauschen. Eine detaillierte Installations- und Konfigurationsanleitung enthält die Online-Dokumentation von mod_SSL.
-Bei der Verwendung von Client-Authentisierung muss darauf geachtet werden, dass mod_ssl die HTTP-Header mit den Informationen über das Client-Zertifikat exportiert. Dies wird durch Angabe der folgenden Option in der Apache-Konfiguration erreicht:
-SSLOptions +ExportCertData +StdEnvVars-
Je nach vorhandener SSL-Konfiguration des Apache Webservers kann diese Option im globalen Kontext, im Kontext des Virtual Hosts oder im Kontexts eines Verzeichnisses spezifiziert werden.
-Die MOA SP/SS Module können eine Datenbank zum Archivieren von Certificate Revocation Lists (CRLs), sowie zum Abspeichern von Log-Meldungen verwenden. In beiden Fällen wird eine installierte und konfigurierte Datenbank vorausgesetzt.
-Eine detaillierte Übersicht über die Installation und Konfiguration von PostgreSQL gibt die Online-Dokumentation.
-Bitte beachten Sie: Eine Möglichkeit, PostgreSQL unter MS Windows zu installieren, besteht darin, Cygwin mit dem PostgreSQL-Package zu installieren. Alternative Installationsvarianten werden auf dieser Seite angeführt.
-Damit die MOA SP/SS Module eine Verbindung zu PostgreSQL aufbauen kann, müssen der Name eines PostgreSQL-Benutzers und einer PostgreSQL-Datenbank bekannt sein. Sollten diese nicht vorhanden sein, kann mit folgenden Kommandos ein Benutzer namens moa
und eine Datenbank namens moadb
angelegt werden:
createuser -U postgres -d -A -P moa-
createdb -U moa moadb
Da die MOA SP/SS Module über JDBC mit der Datenbank kommunizieren, ist in der Folge die Angabe einer JDBC-URL notwendig, welche die Verbindungsparameter enthält. Wurden der Benutzer und die Datenbank wie im obigen Beispiel angelegt, ist folgende JDBC-URL anzugeben (Annahme: als Passwort für den Benutzer moa wurde moapass gewählt):
-jdbc:postgresql://host/moadb?user=moa&password=moapass-
Die Zeichen jdbc:postgresql://
sind unveränderliche Bestandteile einer PostgreSQL JDBC-URL. host
gibt den Rechner an, auf dem PostgreSQL läuft. moadb
identifiziert den Namen der Datenbank. Über die Parameter user=
und pass=
werden Benutzername und Passwort für den DB-User bekanntgegeben.
Zum Archivieren von CRLs müssen in der MOA SP/SS Konfigurationsdatei die Kinder des Elements cfg:MOAConfiguration/cfg:SignatureVerification/cfg:CertificateValidation/cfg:RevocationChecking/cfg:Archiving
entsprechend
- konfiguriert werden:
cfg:EnableArchiving
muss auf den Wert true
gesetzt sein;cfg:ArchiveDuration
muss als nichtnegative Ganzzahl die maximale Archivierungsdauer in Tagen enthalten;cfg:Archive
muss genau ein Element cfg:DatabaseArchive
enthalten, das wiederum aus zwei Elementen
- bestehen muss:
- cfg:JDBCURL
muss eine gültige JDBC-URL enthalten, mit der auf die Datenbank zur Archivierung
- zugegriffen werden kann (Hinweis: da es sich hierbei um einen Eintrag
- in eine XML-Datei handelt, muss das Zeichen &
in der in Abschnitt 2.2.2.1.1 gezeigten
- JDBC-URL
- durch die Zeichenfolge &
ersetzt werden.);cfg:JDBCDriverClassName
muss den vollständig qualifizierten Java-Klassennamen des JDBC-Treibers
- enthalten. Vergleiche auch Abschnitt 2.3.1.3.4 im - Konfigurationshandbuch.
-Für das Logging in eine PostgreSQL Datenbank mittels Jakarta Log4j muss zunächst eine Tabelle für die Log-Meldungen angelegt werden. Dies kann mit folgendem SQL-Statement erreicht werden:
-create table spss_log (log_time timestamp, log_level varchar(5), log_msg text);-
Damit Log4j die Log-Meldungen in diese Datenbanktabelle schreibt, muss die Log4j-Konfiguration adaptiert werden. Die mit MOA SP/SS mitgelieferte, beispielhafte Log4j-Konfiguration enthält bereits die notwendigen Einträge für das Logging in eine PostgreSQL Datenbank, die jedoch standardmäßig ausgeschaltet sind.
-Wie beim Caching von CRLs ist auch hier die Angabe einer JDBC-URL notwendig, damit die MOA SP/SS Module eine Verbindung zur Datenbank aufnehmen können.
-Bitte beachten Sie: Bei Tests hat sich das Logging in eine Datenbank mit Jakarta Log4j als Performance-Engpass herausgestellt. Es wird deshalb empfohlen, dieses Feature mit Bedacht einzusetzen.
-Über die generische Anbindung JDBC können auch andere Datenbanken für die Archivierung von CRLs bzw. für die Speicherung der Log-Meldungen eingesetzt werden. Hinweise zu bestimmten Datenbanken finden Sie in den FAQ.
-Die in Abschnitt 2.2.2.1 gemachten Angaben zu Archivierung von CRLs bzw. zur Speicherung von Log-Meldungen gelten sinngemäß.
-MOA SS kann für die Erstellung von Signaturen auf die Dienste eines HSM zurückgreifen. Voraussetzung dafür ist, dass für das HSM eine Implementierung der Schnittstelle PCKS#11 (PKCS#11-Bibliothek) angeboten wird.
-Für die Einbindung des HSM in MOA SS müssen zunächst die Bibliotheken aus $MOA_SL_INST/pkcs11
in ein beliebiges Verzeichnis kopiert werden, welches dann in den Libray-Pfad des jeweiligen Betriebssystems aufgenommen werden muss (Windows: Umgebungsvariable PATH
; Linux: Umgebungsvariable LD_LIBRARY_PATH
).
Der Name der für das HSM spezifischen PKCS#11-Bibliothek muss in der Konfigurationsdatei eingetragen werden (vergleiche Abschnitt 2.2.1.1 des Konfigurationshandbuchs).
-Dieser Abschnitt beschreibt die Verwendung von MOA SP/SS als Klassenbibliothek. Im ersten Unterkapitel wird eine minimale Basisinstallation beschrieben. Das zweite Unterkapitel zeigt eine Reihe von optionalen Erweiterungsmöglichkeiten auf.
-Die Basisinstallation der Klassenbibliothek stellt einerseits die minimalen Anforderungen für den Einsatz von MOA SP/SS als Klassenbibliothek dar, andererseits dient sie als Ausgangspunkt für optionale Erweiterungsmöglichkeiten.
-Folgende Software ist Voraussetzung für die Basisinstallation der Klassenbibliothek:
-Die folgenden Schritte dienen der Vorbereitung der Installation.
-$JAVA_HOME
bezeichnet. moa-spss-1.2.x-lib.zip
in ein beliebiges Verzeichnis. Dieses Verzeichnis wird im weiteren Verlauf als $MOA_SL_INST
bezeichnet. Die Installation der Kryptographiebibliotheken von SIC/IAIK ist abhängig vom eingesetzten J2SE SDK:
-$MOA_SL_INST/ext13
in das Verzeichnis $JAVA_HOME/jre/lib/ext
.$MOA_SL_INST/ext14
in das Verzeichnis $JAVA_HOME/jre/lib/ext
. Zusätzlich müssen Sie die Rechtedateien Ihres J2SE 1.4.2 SDK bzw. J2SE 5.0 SDK austauschen. Laden Sie dazu die Unlimited Strength Jurisdiction Policy Files von der J2SE 1.4.2 SDK Downloadseite bzw. J2SE 5.0 SDK Downloadseite und folgen Sie der darin enthaltenen Installationsanweisung. Um die MOA SP/SS Klassenbibliothek in einer Applikation verwenden zu können, müssen die mit MOA SP/SS ausgelieferten Bibliotheken in den Java Klassenpfad der Applikation eingebunden werden.
-Die nachfolgende Tabelle listet diese Klassenbibliotheken auf; die Einträge in der Spalte Dateien sind relativ zum Verzeichnis $MOA_SL_INST
zu interpretieren.
Klassenbibliothek | Version | Dateien | - -
---|---|---|
MOA SP/SS | -1.2.x | -moa-spss.jar , moa-common.jar |
-
MOA IAIK | -1.0.7 | -
|
-
JAXP | 1.2_01 | lib/jaxp-api.jar , lib/sax.jar , lib/dom.jar |
-
-
Xerces-J | 2.4.0 | lib/xercesImpl.jar , lib/xmlParserAPIs.jar |
-
Xalan-J | 2.5.1 |
Bitte beachten Sie: Wenn Sie J2SE 1.4.2 JRE oder J2SE 5.0 JRE verwenden, müssen Sie diese Bibliothek der Java VM als endorsed bekanntgeben. Sie können dies tun, indem Sie entweder -
|
-
Jaxen | 1.0 | lib/jaxen-core.jar , lib/jaxen-dom.jar , lib/saxpath.jar |
-
-
Commons-Logging | -1.0.4 | -lib/commons-logging-api.jar , lib/commons-logging.jar |
-
Log4j | 1.2.7 | lib/log4j-1.2.7.jar |
-
Commons-Discovery | 0.2 | lib/commons-discovery.jar |
-
-
JSSE | 1.0.3_01 | -Diese Bibliotheken benötigen Sie nur, wenn Sie J2SE 1.3.1 verwenden: -
Bitte beachten Sie: Diese Bibliotheken benötigen Sie nur, wenn Sie J2SE 1.3.1 verwenden. |
-
Postgres JDBC2 | 7.3 |
Bitte beachten Sie: Wenn Sie keine Datenbank für MOA SP/SS verwenden (vergleiche 2.2.2), benötigen Sie diese Bibliothek nicht. |
-
Die MOA SP/SS Klassenbibliothek verwendet Jakarta Log4j für die Ausgabe von Log-Meldungen am Bildschirm bzw. in Log-Dateien. Die im Abschnitt 2.1.3 gemachten Aussagen lassen sich großteils auf den Einsatz der MOA SP/SS Klassenbibliothek übertragen.
-Die im Abschnitt 2.2 angeführten Erweiterungsmöglichkeiten für die MOA SP/SS Webservices gelten in analoger Weise auch für die Klassenbibliothek.
-Auf folgende Software-Pakete wird in diesem Handbuch verwiesen:
-Name | -Beschreibung | -
---|---|
Apache Tomcat 4.1.x | -Servlet-Container des Apache Jakarta Projekts in der Version 4.1.x | -
J2SE 1.4.2 SDK/JRE | -Java 2 Standard Edition in der Version 1.4.2 (Software Development Kit bzw. Java Runtime Environment) | -
J2SE 5.0 SDK/JRE | -Java 2 Standard Edition in der Version 5.0 (Software Development Kit bzw. Java Runtime Environment) | -
Apache Log4J | -Logging Framework des Apache Projekts | -
- | Open Source - für das E-Government |
- - |
MOA: Serversignatur (SS) und Signaturprüfung (SP), V 1.3
-Installation
-Die Module Signaturprüfung (SP) und Serversignatur (SS) sind als plattformunabhängige Module ausgelegt, die entweder als Webservice über HTTP bzw. HTTPS oder als Klassenbibliothek über ein API angesprochen werden können. Dieses Handbuch beschreibt die Installation der beiden Module als Webservice oder als Klassenbibliothek, sowie die Einrichtung der Systemumgebung.
-Dieser Abschnitt beschreibt die Installation von MOA SP/SS als Webservice. Im ersten Unterkapitel wird eine minimale Basisinstallation beschrieben. Das zweite Unterkapitel zeigt eine Reihe von optionalen Erweiterungsmöglichkeiten auf.
-Die Basisinstallation des Webservices stellt einerseits die minimalen Anforderungen für den Betrieb von MOA SP/SS als Webservices dar, andererseits dient sie als Ausgangspunkt für optionale Erweiterungsmöglichkeiten.
-Folgende Software ist Voraussetzung für die Basisinstallation des Webservices:
- -In diesem Betriebs-Szenario wird das MOA SP/SS Webservice in Tomcat zum Einsatz gebracht. Tomcat fungiert gleichzeitig als HTTP- und HTTPS-Endpunkt für das MOA SP/SS Webservice. Beide Protokolle werden direkt in Tomcat konfiguriert. Das MOA SP/SS Webservice verwendet Log4j als Logging Toolkit.
-Die folgenden Schritte dienen der Vorbereitung der Installation.
-$JAVA_HOME
bezeichnet. $CATALINA_HOME
bezeichnet.moa-spss-1.2.x.zip
in ein beliebiges Verzeichnis. Dieses Verzeichnis wird im weiteren Verlauf als $MOA_SPSS_INST
bezeichnet. Die Installation der Kryptographiebibliotheken von SIC/IAIK ist abhängig vom eingesetzten J2SE SDK:
-$MOA_SPSS_INST/ext13
in das Verzeichnis $JAVA_HOME/jre/lib/ext
.$MOA_SPSS_INST/ext14
in das Verzeichnis $JAVA_HOME/jre/lib/ext
. Zusätzlich müssen Sie die Rechtedateien Ihres J2SE 1.4.2 SDK bzw. J2SE 5.0 SDK austauschen. Laden Sie dazu die Unlimited Strength
-
-
- Jurisdiction Policy Files von der J2SE 1.4.2 SDK Downloadseite bzw. J2SE 5.0 SDK Downloadseite und folgen Sie der darin enthaltenen Installationsanweisung. Die zentrale Konfigurations-Datei von Tomcat ist $CATALINA_HOME/conf/server.xml
. Tomcat wird grundsätzlich mit einer funktionierenden Default-Konfiguration ausgeliefert, die jedoch einiges an Ballast enthält und viele Ports offen lässt.
Die Datei $MOA_SPSS_INST/tomcat/server.xml
enthält eine minimale Tomcat-Konfiguration, die ausschließlich den Connector für HTTP auf Port 8080 freischaltet. Durch kopieren dieser Datei nach $CATALINA_HOME/conf/server.xml
kann Tomcat mit dieser Konfiguration gestartet werden. Wir empfehlen diese Konfiguration nur für Fälle, in denen das MOA SP/SS Webservice in einer abgeschlossenen Netzwerkumgebung betrieben wird.
Wird das MOA SP/SS Webservice in einer nicht abgeschlossenen Umgebung (z.B. Erreichbarkeit über das Internet) betrieben, ist die gegenseitige Identitätsfeststellung von Kunde und Webservice essentiell:
-Beide Identitätsprüfungen können mit hoher Qualität vorgenommen werden, wenn die Erreichbarkeit des Webservice auf SSL mit Server- (für MOA SP) bzw. Client- und Serverauthentisierung (für MOA SS) eingeschränkt wird.
-Für die dazu notwendige Konfiguration kann die im vorigen Abschnitt besprochene minimale Tomcat-Konfiguration als Ausgangspunkt verwendet werden: Zunächst ist der HTTP Connector abzuschalten (auszukommentieren). Anschließend ist der HTTPS Connector zu konfigurieren. Das Dokument Tomcat SSL Configuration HOW-TO gibt einen guten Überblick dazu. Grob zusammengefasst sind folgende Schritte durchzuführen:
-keytool
erstellen, einem Programm, das Ihrem J2SE SDK beiliegt.keytool
erstellt werden. Dieser Keystore ist optional und braucht nur erstellt zu werden, wenn sich die Kunden gegenüber dem Webservice authentisieren müssen. $CATALINA_HOME/conf/server.xml
.Die Konfiguration des HTTPS Connectors kann entfallen, wenn Tomcat ein Webserver vorgeschaltet ist, und dieser die SSL-Kommunikation mit dem Kunden übernimmt (siehe Abschnitt 2.2.1).
-Das MOA SP/SS Webservice kann remote durch den Aufruf einer speziellen URL des Webservices dazu veranlasst werden, seine Konfiguration neu einzulesen (vergleiche Abschnitt 2.1.2.5). Der Zugriff auf diese URL ist durch eine Passwort-Abfrage geschützt, und kann nur von Tomcat-Benutzern aufgerufen werden, denen die Tomcat-Benutzer-Rolle moa-admin
zugeordnet wurde.
Um diese Benutzer-Rolle und einen oder mehrere Benutzer einzurichten, müssen in der Datei $CATALINA_HOME/conf/tomcat-users.xml
unter dem Element <tomcat-users>
sinngemäß folgende Einträge hinzugefügt werden:
-
<role rolename="moa-admin"/> -<user username="moa-chief" password="openSesam" roles="moa-admin"/>-
Soll der Aufruf dieser URL niemandem ermöglicht werden, sind die oben beschriebenen Einträge einfach nicht vorzunehmen.
- -Um das MOA SP/SS Webservice in Tomcat für den Einsatz vorzubereiten, sind folgende Schritte notwendig:
-$MOA_SPSS_INST/moa-spss.war
enthält das einsatzfertige MOA SP/SS Webarchiv und muss ins Verzeichnis $CATALINA_HOME/webapps
kopiert werden. Dort wird sie beim ersten Start von Tomcat automatisch ins Verzeichnis $CATALINA_HOME/webapps/ moa-spss
entpackt. $CATALINA_HOME/conf/moa-spss
). Eine funktionsfähige Konfiguration, die als Ausgangspunkt für die Konfiguration des MOA SP/SS Webservices dienen kann, finden Sie hier. xalan.jar
, xercesImpl.jar
und xmlParserAPIs.jar
aus dem Verzeichnis $MOA_SPSS_INST/endorsed14
in das Tomcat-Verzeichnis $CATALINA_HOME/common/endorsed
kopiert werden. Sind gleichnamige Dateien dort bereits vorhanden, müssen sie überschrieben werden. Die ggf. in diesem Verzeichnis vorhandene Datei xml-apis.jar
muss gelöscht werden.CATALINA_OPTS
in der Form -D<name>=<wert>
übergeben):
- moa.spss.server.configuration
: Pfad und Name der zentralen Konfigurationsdatei für MOA SP/SS. Eine beispielhafte Konfigurationsdatei finden Sie hier. Wird ein relativer Pfad angegeben, wird dieser relativ zum Startverzeichnis der Java Virtual Machine interpretiert. Ist diese System Property nicht gesetzt, wird automatisch eine im Webarchiv unter WEB-INF/conf
enthaltene Default-Konfiguration herangezogen.log4j.configuration
: URL der Log4j Konfigurationsdatei. Eine beispielhafte Log4j-Konfiguration finden Sie hier. Wird eine relative URL angegeben, wird diese als File-URL relativ zum Startverzeichnis der Java Virtual Machine interpretiert. Ist diese System Property nicht gesetzt, wird automatisch eine im Webarchiv unter WEB-INF/classes
enthaltene Default-Konfiguration herangezogen.moa.node.id
: Frei wählbarer Name des Rechner-Knotens, auf dem MOA SP/SS läuft. Der Name des Knotens wird bei Log-Ausgaben von MOA SP/SS angeführt und dient zur Unterscheidung mehrerer gleichzeitig betriebener MOA SP/SS Webservice-Instanzen. javax.net.ssl.trustStore
: Pfad und Dateiname des Truststores für vertrauenswürdige SSL Client-Zertifikate (optional; nur, wenn SSL Client-Authentisierung durchgeführt werden soll). Ein relativer Pfad werden relativ zum Startverzeichnis der Java Virtual Machine interpretiert.javax.net.ssl.trustStorePassword
: Passwort für den Truststore (optional; nur, wenn SSL Client-Authentisierung durchgeführt werden soll). javax.net.ssl.trustStoreType
: Truststore-Typ (optional; nur, wenn SSL Client-Authentisierung durchgeführt werden soll). Je nach verwendetem Keystore-Typ muss jks
(Java Key Store) oder pkcs12
(PKCS#12-Datei) angegeben werden.Das Verzeichnis $MOA_SPSS_INST/tomcat/win32
enthält Script-Dateien zum Starten und Stoppen von Tomcat. Vor der erstmaligen Verwendung der Scripts müssen in den ersten Zeilen die Umgebungsvariablen JAVA_HOME
(Basisverzeichnis des eingesetzten J2SE SDK) und CATALINA_HOME
(Basisverzeichnis der eingesetzten Tomcat-Installation) angepasst werden. Evtl. müssen Sie auch noch die in den Script-Dateien gesetzten, in Abschnitt 2.1.2.3 besprochenen System Properties anpassen.
Zunächst müssen die in Abschnitt 2.1.2.3 besprochenen System Properties mit Hilfe der Umgebungsvariablen CATALINA_OPTS
gesetzt sein. Die Datei $MOA_SPSS_INST/tomcat/unix/moa-env.sh
enthält ein Beispiel dafür. Weiters müssen noch die Umgebungsvariablen JAVA_HOME
(Basisverzeichnis des eingesetzten J2SE SDK) und CATALINA_HOME
(Basisverzeichnis der eingesetzten Tomcat-Installation) angepasst werden.
Nun kann Tomcat aus seinem Basisverzeichnis mit
-bin/catalina.sh start-gestartet werden. Das Stoppen von Tomcat erfolgt analog mit -
bin/catalina.sh stop-
Ein erfolgreicher Start des MOA SP/SS Webservices ist an folgender Log-Meldung ersichtlich:
-
INFO | 18 10:09:45,155 | main | TID=startup NID=<null> MSG=MOA Konfiguration erfolgreich geladen --
Bei leichten Fehlern in der Konfiguration geben WARN
Log-Meldungen unmittelbar davor Aufschluss über fehlerhafte Konfigurations-Einträge.
- Nach dem Starten von Tomcat steht das MOA SP/SS Webservice für die Server-Signatur und Signatur-Prüfung unter den Endpunkten
http://<host>:<port>/moa-spss/services/SignatureCreation --
bzw. -
-http://<host>:<port>/moa-spss/services/SignatureVerification --
zur Verfügung. Die Verfügbarkeit des Services können Sie einfach überprüfen, indem Sie die Endpunkte mit einem Web-Browser aufgerufen; dies sollte nach erfolgreichem Start zur Anzeige einer Informationsseite führen.
-Konnte das MOA SP/SS Webservice nicht ordnungsgemäß gestartet werden, führt das zu folgender Log-Meldung:
-FATAL | 18 10:17:03,475 | main | TID=startup NID=<null>-In diesem Fall geben die
MSG=Fehler beim Lesen der MOA Konfiguration: das Service steht nicht zur Verfügung -
WARN
bzw. ERROR
Log-Meldungen unmittelbar davor Aufschluss über den genaueren Grund.
-Sie können die Konfiguration für MOA SP/SS im laufenden Betrieb aktualisieren, in dem Sie mittels eines Web-Browsers folgende URL aufrufen:
-http://<host>:<port>/moa-spss/ConfigurationUpdate-
Damit dies funktioniert, muss in der Konfiguration von Tomcat ein spezieller Benutzer sowie eine spezielle Benutzerrolle eingerichtet werden (vergleiche Abschnitt 2.1.2.2.3).
-Das MOA SP/SS Webservice verwendet Jakarta Log4j für die Ausgabe von Log-Meldungen am Bildschirm bzw. in Log-Dateien. Log4j bietet zahlreiche Konfigurationsmöglichkeiten, die ausführlich im Jakarta Log4j Handbuch beschrieben sind. Unter anderem gibt es die Möglichkeit, folgende Einstellungen vorzunehmen: -
Das verwendete Log-Level (DEBUG
, INFO
, WARN
, ERROR
, FATAL
);
Name und maximale Größe der Log-Datei(en);
-Das Aussehen der Log-Einträge.
-Das MOA SP/SS Webservice verwendet folgende Log-Hierarchien:
-moa.spss.server
für alle Log-Meldungen aus dem MOA/SPSS Webservice;
iaik.server
für alle Log-Meldungen aus den SIC/IAIK Kryptographie-Modulen.
Eine für MOA SP/SS passende Konfigurationsdatei für Log4j finden Sie hier. Wird diese Datei als Logging-Konfiguration verwendet, so werden alle Log-Meldungen sowohl in die Konsole, als auch in die Datei moa-spss.log
geschrieben.
Anhand einer konkreten Log-Meldung wird das Format der MOA SP/SS Log-Meldungen erläutert:
-INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=node1 - MSG=Starte neue Transaktion: TID=1049225059594-100, Service=SignatureVerification --
Der Wert INFO
besagt, dass die Log-Meldung im Log-Level INFO
entstanden ist. Folgende Log-Levels existieren:
DEBUG
: Log-Meldungen im Log-Level DEBUG
geben Auskunft über die innere Arbeitsweise des Systems. Sie sind hauptsächlich für Entwickler interessant.
INFO
: Diese Log-Meldungen geben Status-Informationen über den Ablauf des Webservices, wie z.B. über das Einlangen einer neuen Anfrage.
WARN
: Bei der Ausführung einer Anfrage sind leichte Fehler aufgetreten. Der Ablauf des Webservices ist nicht weiter beeinträchtigt.
ERROR
: Die Ausführung einer Anfrage musste abgebrochen werden. Das Webservice ist davon nicht beeinträchtigt.
FATAL
: Es ist ein Fehler aufgetreten, der den weiteren Betrieb des Webservices nicht mehr erlaubt.
Der nächste Wert 01 21:25:26,540
gibt den Zeitpunkt an, zu dem die Log-Meldung generiert wurde (in diesem Fall den 1. Tag im aktuellen Monat, sowie die genaue Uhrzeit).
Der Wert Thread-3
bezeichnet den Thread, von dem die Anfrage bearbeitet wird.
Der Wert von TID
gibt die für jede Anfrage eindeutige Transaktions-ID an. Log-Meldungen, die bei der Abarbeitung dieser Anfrage geschrieben werden, enthalten alle einen Hinweis auf die entsprechende Transaktions-ID.
Der Wert von NID
gibt den Rechner-Knoten an, auf dem das MOA SP/SS Webservice läuft (bei NID=<null>
ist dieser Wert nicht konfiguriert, vergleiche Abschnitt 2.1.2.3).
Der Rest der Zeile einer Log-Meldung ist der eigentliche Text, mit dem das System bestimmte Informationen anzeigt. Im Fehlerfall ist häufig ein Java Stack-Trace angefügt, der eine genauere Ursachen-Forschung ermöglicht.
-Neben den im Abschnitt 2.1.2.4.3 beschriebenen Log-Meldungen, die anzeigen, ob das Service ordnungsgemäß gestartet wurde, geben nachfolgenden Log-Meldungen Aufschluss über die Abarbeitung von Anfragen.
-Die Entgegennahme einer Anfrage wird angezeigt durch: - -
-INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null> - MSG=Starte neue Transaktion: TID=1049225059594-100, Service=SignatureVerification -INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null> - MSG=Aufruf von Adresse=127.0.0.1 -INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null> - MSG=Client-Zertifikat nicht verfügbar-
Die dritte Log-Meldung besagt, dass für die Abarbeitung dieser Anfrage kein Client-Zertifikat verfügbar ist (entweder, weil die Anfrage über HTTP eingelangt ist, oder weil die SSL Client-Authentisierung nicht eingeschaltet ist). Bei erfolgreicher SSL Client-Authentisierung, gibt beispielsweise folgende Log-Meldung Informationen über das Client-Zertifikat aus: -
INFO | 12 13:58:08,772 | Thread-10 | TID=1045054687159-2 NID=<null> - MSG=Client-Zertifikat: Subject=CN=Testuser, OU=MOA, O=BRZ, L=Vienna, ST=Vienna, C=AT, - Serial=1.039.104.204, Issuer=CN=TestCA, OU=MOA, O=BRZ, L=Vienna, ST=Vienna, C=AT-
Eine erfolgreich abgearbeitete Anfrage wird angezeigt durch: -
-INFO | 01 21:25:53,168 | Thread-3 | TID=1049225059594-106 NID=<null> - MSG=Anfrage erfolgreich abgearbeitet-
Ein Fehler beim Abarbeiten der Anfrage wird angezeigt durch:
-INFO | 01 21:25:27,642 | Thread-3 | TID=1049225059594-100 NID=<null> - MSG=Fehler beim Abarbeiten der Anfrage-
In diesem Fall gibt der mitgeloggte Stacktrace Auskunft über die Art des Fehlers. Der Aufrufer des MOA SP/SS Webservices bekommt einen Fehlercode sowie eine kurze Beschreibung des Fehlers als Antwort zurück.
- Die Tatsächlich übertragenen Anfragen bzw. Antworten werden aus Effizienzgründen nur im Log-Level DEBUG
angezeigt.
Ausgehend von der Basisinstallation können die optionalen Erweiterungen, die in den nachfolgenden Abschnitten beschrieben werden, unabhängig und in beliebiger Kombination aufgesetzt werden.
-Den MOA SP/SS Webservices kann optional ein MS IIS vorgeschaltet sein. In diesem Fall übernimmt der MS IIS die HTTP- bzw. HTTPS-Kommunikation mit dem Aufrufer des Webservices. Die Kommunikation zwischen MS IIS und dem in Tomcat eingerichteten MOA SP/SS Webservice wird durch Jakarta mod_jk durchgeführt. Die angeführten Konfigurationsschritte gehen von einer MS IIS Standard-Installation aus.
- Für die Kommunikation des MS IIS mit dem im Tomcat eingerichteten MOA SP/SS Webservice wird das ISAPI-Modul von Jakarta mod_jk im MS IIS installiert und konfiguriert. Eine detaillierte Installations- und Konfigurationsanleitung gibt das mod_jk IIS HowTo. Beispiele für workers.properties
und uriworkermap.properties
Dateien liegen im Verzeichnis $MOA_SPSS_INST/tomcat
bei.
Damit Tomcat die Aufrufe entgegennehmen kann, die von MS IIS mittels Jakarta mod_jk weiterleitet werden, muss in $CATALINA_HOME/conf/server.xml
der AJP 1.3 Connector aktiviert werden. Im Gegenzug können die Konnektoren für HTTP und HTTPS deaktiviert werden. Das geschieht am einfachsten durch Ein- bzw. Auskommentieren der entsprechenden Connector
Konfigurations-Elemente in dieser Datei. Die Datei $MOA_SPSS_INST/tomcat/server.mod_jk.xml
enthält eine Konfiguration, die ausschließlich den Port für den AJP 1.3 Connector offen lässt.
Die Dokumentation zum Einrichten von SSL auf dem MS IIS steht nach Installation des IIS unter http://localhost/iisHelp/ oder aber auch auf den Websiten vo Mircrosoft zur Verfügung.
-Den MOA SP/SS Webservices kann ein Apache Webserver vorgeschaltet sein. Das Prinzip funktioniert wie bei MS IIS, auch hier wird Jakarta mod_jk für die Kommunikation zwischen Webserver und Tomcat eingesetzt. Die angeführten Konfigurationsschritte gehen von einer Standard-Installation des Apache Webservers aus und sind ident für die Versionen 1.3.x und 2.0.x.
-Um das MOA-SPSS Webservice hinter einem Apache Webserver zu betreiben, ist die Konfiguration des Apache-Moduls mod_jk erforderlich. Eine detaillierte Installations- und Konfigurationsanleitung gibt das mod_jk Apache HowTo. Ein Beispiel für eine workers.properties
Datei liegt im Verzeichnis $MOA_SPSS_INST/tomcat
bei.
Um das MOA SP/SS Webservice dem Apache Webserver bekannt zu machen, sind zumindest folgende Einträge im globalen Kontext der Apache-Konfigurationsdatei notwendig:
-LoadModule jk_module /usr/lib/apache/mod_jk.so-
AddModule jk_module
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkWorkersFile conf/workers.properties
JkMount /moa-spss/* moaworker
Die Pfad- und Dateinamen können je nach existierender Apache Installation geringfügig variieren.
-Die Konfiguration von Tomcat ist analog zu Abschnitt 2.2.1.1.2 durchzuführen.
-Apache kann in Verbindung mit mod_SSL als SSL-Endpunkt für das MOA SP/SS Webservice fungieren. In diesem Fall entfällt die SSL-Konfiguration in Tomcat, da Apache und Tomcat auch im Fall von SSL Daten via mod_jk austauschen. Eine detaillierte Installations- und Konfigurationsanleitung enthält die Online-Dokumentation von mod_SSL.
-Bei der Verwendung von Client-Authentisierung muss darauf geachtet werden, dass mod_ssl die HTTP-Header mit den Informationen über das Client-Zertifikat exportiert. Dies wird durch Angabe der folgenden Option in der Apache-Konfiguration erreicht:
-SSLOptions +ExportCertData +StdEnvVars-
Je nach vorhandener SSL-Konfiguration des Apache Webservers kann diese Option im globalen Kontext, im Kontext des Virtual Hosts oder im Kontexts eines Verzeichnisses spezifiziert werden.
-Die MOA SP/SS Module können eine Datenbank zum Archivieren von Certificate Revocation Lists (CRLs), sowie zum Abspeichern von Log-Meldungen verwenden. In beiden Fällen wird eine installierte und konfigurierte Datenbank vorausgesetzt.
-Eine detaillierte Übersicht über die Installation und Konfiguration von PostgreSQL gibt die Online-Dokumentation.
-Bitte beachten Sie: Eine Möglichkeit, PostgreSQL unter MS Windows zu installieren, besteht darin, Cygwin mit dem PostgreSQL-Package zu installieren. Alternative Installationsvarianten werden auf dieser Seite angeführt.
-Damit die MOA SP/SS Module eine Verbindung zu PostgreSQL aufbauen kann, müssen der Name eines PostgreSQL-Benutzers und einer PostgreSQL-Datenbank bekannt sein. Sollten diese nicht vorhanden sein, kann mit folgenden Kommandos ein Benutzer namens moa
und eine Datenbank namens moadb
angelegt werden:
createuser -U postgres -d -A -P moa-
createdb -U moa moadb
Da die MOA SP/SS Module über JDBC mit der Datenbank kommunizieren, ist in der Folge die Angabe einer JDBC-URL notwendig, welche die Verbindungsparameter enthält. Wurden der Benutzer und die Datenbank wie im obigen Beispiel angelegt, ist folgende JDBC-URL anzugeben (Annahme: als Passwort für den Benutzer moa wurde moapass gewählt):
-jdbc:postgresql://host/moadb?user=moa&password=moapass-
Die Zeichen jdbc:postgresql://
sind unveränderliche Bestandteile einer PostgreSQL JDBC-URL. host
gibt den Rechner an, auf dem PostgreSQL läuft. moadb
identifiziert den Namen der Datenbank. Über die Parameter user=
und pass=
werden Benutzername und Passwort für den DB-User bekanntgegeben.
Zum Archivieren von CRLs müssen in der MOA SP/SS Konfigurationsdatei die Kinder des Elements cfg:MOAConfiguration/cfg:SignatureVerification/cfg:CertificateValidation/cfg:RevocationChecking/cfg:Archiving
entsprechend
- konfiguriert werden:
cfg:EnableArchiving
muss auf den Wert true
gesetzt sein;cfg:ArchiveDuration
muss als nichtnegative Ganzzahl die maximale Archivierungsdauer in Tagen enthalten;cfg:Archive
muss genau ein Element cfg:DatabaseArchive
enthalten, das wiederum aus zwei Elementen
- bestehen muss:
- cfg:JDBCURL
muss eine gültige JDBC-URL enthalten, mit der auf die Datenbank zur Archivierung
- zugegriffen werden kann (Hinweis: da es sich hierbei um einen Eintrag
- in eine XML-Datei handelt, muss das Zeichen &
in der in Abschnitt 2.2.2.1.1 gezeigten
- JDBC-URL
- durch die Zeichenfolge &
ersetzt werden.);cfg:JDBCDriverClassName
muss den vollständig qualifizierten Java-Klassennamen des JDBC-Treibers
- enthalten. Vergleiche auch Abschnitt 2.3.1.3.4 im - Konfigurationshandbuch.
-Für das Logging in eine PostgreSQL Datenbank mittels Jakarta Log4j muss zunächst eine Tabelle für die Log-Meldungen angelegt werden. Dies kann mit folgendem SQL-Statement erreicht werden:
-create table spss_log (log_time timestamp, log_level varchar(5), log_msg text);-
Damit Log4j die Log-Meldungen in diese Datenbanktabelle schreibt, muss die Log4j-Konfiguration adaptiert werden. Die mit MOA SP/SS mitgelieferte, beispielhafte Log4j-Konfiguration enthält bereits die notwendigen Einträge für das Logging in eine PostgreSQL Datenbank, die jedoch standardmäßig ausgeschaltet sind.
-Wie beim Caching von CRLs ist auch hier die Angabe einer JDBC-URL notwendig, damit die MOA SP/SS Module eine Verbindung zur Datenbank aufnehmen können.
-Bitte beachten Sie: Bei Tests hat sich das Logging in eine Datenbank mit Jakarta Log4j als Performance-Engpass herausgestellt. Es wird deshalb empfohlen, dieses Feature mit Bedacht einzusetzen.
-Über die generische Anbindung JDBC können auch andere Datenbanken für die Archivierung von CRLs bzw. für die Speicherung der Log-Meldungen eingesetzt werden. Hinweise zu bestimmten Datenbanken finden Sie in den FAQ.
-Die in Abschnitt 2.2.2.1 gemachten Angaben zu Archivierung von CRLs bzw. zur Speicherung von Log-Meldungen gelten sinngemäß.
-MOA SS kann für die Erstellung von Signaturen auf die Dienste eines HSM zurückgreifen. Voraussetzung dafür ist, dass für das HSM eine Implementierung der Schnittstelle PCKS#11 (PKCS#11-Bibliothek) angeboten wird.
-Für die Einbindung des HSM in MOA SS müssen zunächst die Bibliotheken aus $MOA_SPSS_INST/pkcs11
in ein beliebiges Verzeichnis kopiert werden, welches dann in den Libray-Pfad des jeweiligen Betriebssystems aufgenommen werden muss (Windows: Umgebungsvariable PATH
; Linux: Umgebungsvariable LD_LIBRARY_PATH
).
Der Name der für das HSM spezifischen PKCS#11-Bibliothek muss in der Konfigurationsdatei eingetragen werden (vergleiche Abschnitt 2.2.1.1 des Konfigurationshandbuchs).
-Dieser Abschnitt beschreibt die Verwendung von MOA SP/SS als Klassenbibliothek. Im ersten Unterkapitel wird eine minimale Basisinstallation beschrieben. Das zweite Unterkapitel zeigt eine Reihe von optionalen Erweiterungsmöglichkeiten auf.
-Die Basisinstallation der Klassenbibliothek stellt einerseits die minimalen Anforderungen für den Einsatz von MOA SP/SS als Klassenbibliothek dar, andererseits dient sie als Ausgangspunkt für optionale Erweiterungsmöglichkeiten.
-Folgende Software ist Voraussetzung für die Basisinstallation der Klassenbibliothek:
-Die folgenden Schritte dienen der Vorbereitung der Installation.
-$JAVA_HOME
bezeichnet. moa-spss-1.2.x-lib.zip
in ein beliebiges Verzeichnis. Dieses Verzeichnis wird im weiteren Verlauf als $MOA_SPSS_INST
bezeichnet. Die Installation der Kryptographiebibliotheken von SIC/IAIK ist abhängig vom eingesetzten J2SE SDK:
-$MOA_SPSS_INST/ext13
in das Verzeichnis $JAVA_HOME/jre/lib/ext
.$MOA_SPSS_INST/ext14
in das Verzeichnis $JAVA_HOME/jre/lib/ext
. Zusätzlich müssen Sie die Rechtedateien Ihres J2SE 1.4.2 SDK bzw. J2SE 5.0 SDK austauschen. Laden Sie dazu die Unlimited Strength Jurisdiction Policy Files von der J2SE 1.4.2 SDK Downloadseite bzw. J2SE 5.0 SDK Downloadseite und folgen Sie der darin enthaltenen Installationsanweisung. Um die MOA SP/SS Klassenbibliothek in einer Applikation verwenden zu können, müssen die mit MOA SP/SS ausgelieferten Bibliotheken in den Java Klassenpfad der Applikation eingebunden werden.
-Die nachfolgende Tabelle listet diese Klassenbibliotheken auf; die Einträge in der Spalte Dateien sind relativ zum Verzeichnis $MOA_SPSS_INST
zu interpretieren.
Klassenbibliothek | Version | Dateien | - -
---|---|---|
MOA SP/SS | -1.2.x | -moa-spss.jar , moa-common.jar |
-
MOA IAIK | -1.0.7 | -
|
-
JAXP | 1.2_01 | lib/jaxp-api.jar , lib/sax.jar , lib/dom.jar |
-
-
Xerces-J | 2.4.0 | lib/xercesImpl.jar , lib/xmlParserAPIs.jar |
-
Xalan-J | 2.5.1 |
Bitte beachten Sie: Wenn Sie J2SE 1.4.2 JRE oder J2SE 5.0 JRE verwenden, müssen Sie diese Bibliothek der Java VM als endorsed bekanntgeben. Sie können dies tun, indem Sie entweder -
|
-
Jaxen | 1.0 | lib/jaxen-core.jar , lib/jaxen-dom.jar , lib/saxpath.jar |
-
-
Commons-Logging | -1.0.4 | -lib/commons-logging-api.jar , lib/commons-logging.jar |
-
Log4j | 1.2.7 | lib/log4j-1.2.7.jar |
-
Commons-Discovery | 0.2 | lib/commons-discovery.jar |
-
-
JSSE | 1.0.3_01 | -Diese Bibliotheken benötigen Sie nur, wenn Sie J2SE 1.3.1 verwenden: -
Bitte beachten Sie: Diese Bibliotheken benötigen Sie nur, wenn Sie J2SE 1.3.1 verwenden. |
-
Postgres JDBC2 | 7.3 |
Bitte beachten Sie: Wenn Sie keine Datenbank für MOA SP/SS verwenden (vergleiche 2.2.2), benötigen Sie diese Bibliothek nicht. |
-
Die MOA SP/SS Klassenbibliothek verwendet Jakarta Log4j für die Ausgabe von Log-Meldungen am Bildschirm bzw. in Log-Dateien. Die im Abschnitt 2.1.3 gemachten Aussagen lassen sich großteils auf den Einsatz der MOA SP/SS Klassenbibliothek übertragen.
-Die im Abschnitt 2.2 angeführten Erweiterungsmöglichkeiten für die MOA SP/SS Webservices gelten in analoger Weise auch für die Klassenbibliothek.
-Auf folgende Software-Pakete wird in diesem Handbuch verwiesen:
-Name | -Beschreibung | -
---|---|
Apache Tomcat 4.1.x | -Servlet-Container des Apache Jakarta Projekts in der Version 4.1.x | -
J2SE 1.3.1 SDK/JRE | -Java 2 Standard Edition in der Version 1.3.1 (Software Development Kit bzw. Java Runtime Environment) | -
J2SE 1.4.2 SDK/JRE | -Java 2 Standard Edition in der Version 1.4.2 (Software Development Kit bzw. Java Runtime Environment) | -
J2SE 5.0 SDK/JRE | -Java 2 Standard Edition in der Version 5.0 (Software Development Kit bzw. Java Runtime Environment) | -
Jakarta Log4J | -Logging Framework des Apache Jakarta Projekts | -
-
Nachfolgend finden Sie das Ergebnis der Prüfung der eingereichten elektronischen Signatur. - -- "> - Zurück zur Anwendung ... - - - - - - -
|
-
-
- - \ No newline at end of file diff --git a/spss.slinterface/res/resources/properties/init.properties b/spss.slinterface/res/resources/properties/init.properties deleted file mode 100644 index 8efc9c8f6..000000000 --- a/spss.slinterface/res/resources/properties/init.properties +++ /dev/null @@ -1,67 +0,0 @@ -# [Styleshets] - -# Stylesheet für die Transformation des eingehenden SL-Requests in den korrespondierenen -# MOA SP Request -location.stylesheet.sl2moa = /WEB-INF/classes/resources/stylesheets/sl2moa.xsl - -# Stylesheet für die Transformation des MOA SP Responses in den korrespondierenden -# SL-Response -location.stylesheet.moa2sl = /WEB-INF/classes/resources/stylesheets/moa2sl.xsl - -# [Schemata] - -# Schema für XML-Signaturen -location.schema.sl = /WEB-INF/classes/resources/schemas/Core.20031231.xsd - -# Schema für MOA SP/SS -location.schema.moa = /WEB-INF/classes/resources/schemas/MOA-SPSS-1.2.xsd - -# Schema für das Anzeigeformat aus SL 1.2 -location.schema.slxhtml = /WEB-INF/classes/resources/schemas/slxhtml-1.0/slxhtml.xsd - -# [Arbeitsverzeichnisse] - -# Arbeitsverzeichnis zum Ablegen der von der geprüften XML-Signatur signierten Daten -location.tempdir = /workDir/temp/ - -# [Parameter der verwendeten MOA SP Installation] - -# URL des Zugangspunkts -service.sp.endpoint = http://localhost:8080/moa-spss/services/SignatureVerification - -# Zu verwendendes Vertrauensprofil -service.sp.trustProfileId = E-Recht - -# [Konfiguration der Antwortseite] - -# Sollen die ggf. vorhandenen Signatureigenschaften (z.B. Signaturdatum) in der Liste -# der signierten Daten als XML-Datei angezeigt werden? -result.showetsi = false - -# Sollen ggf. vorhandene XMLDSIG-Manifeste in der Liste der signierten Daten als -# XML-Dateien angezeigt werden? -result.showslmanifest = false - -[ Parameter für das Umschreiben der URLs in der Antwortseite] - -# URL des Proxys zu MOA SL, d. h. jenes Rechners, der vom Internet aus erreichbar ist -rewrite.proxyURL = http://
1
- 2
- 2
- 3
-
-