Skip to Content.
Sympa Menu

perfsonar-dev - perfsonar: r3699 - trunk/functional-testing/aa-test

Subject: perfsonar development work

List archive

perfsonar: r3699 - trunk/functional-testing/aa-test


Chronological Thread 
  • From:
  • To:
  • Subject: perfsonar: r3699 - trunk/functional-testing/aa-test
  • Date: Wed, 16 Apr 2008 08:45:57 -0400

Author: david.schmitz
Date: 2008-04-16 08:45:57 -0400 (Wed, 16 Apr 2008)
New Revision: 3699

Modified:
trunk/functional-testing/aa-test/aa-func-test-soapui-project.xml
Log:
adapted to newly changed AS response codes, added additional tests for faulty
authentication


Modified: trunk/functional-testing/aa-test/aa-func-test-soapui-project.xml
===================================================================
--- trunk/functional-testing/aa-test/aa-func-test-soapui-project.xml
2008-04-16 12:44:22 UTC (rev 3698)
+++ trunk/functional-testing/aa-test/aa-func-test-soapui-project.xml
2008-04-16 12:45:57 UTC (rev 3699)
@@ -2449,6 +2449,235 @@

//

+]]></script></con:config></con:testStep><con:properties/></con:testCase><con:testCase
failOnError="true" failTestCaseOnErrors="true" keepSession="false"
name="Faulty AuthNEE Certificate/ digest2" searchProperties="true"
id="b4ca5f48-9235-4185-a652-397655755a17"><con:settings/><con:testStep
type="groovy" name="SignRequestMessage"
id="e7882f04-81a4-4748-91d5-dabed62e1a48"><con:settings/><con:config><script><![CDATA[
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// necesasry java imports
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+
+//import java.security.Provider;
+//import java.security.KeyFactory;
+//import java.security.PrivateKey;
+//import java.security.cert.X509Certificate;
+//import java.security.spec.PKCS8EncodedKeySpec;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.message.SOAPEnvelope;
+import org.apache.axis.utils.XMLUtils;
+
+//import org.bouncycastle.jce.provider.BouncyCastleProvider;
+
+//import org.perfsonar.base.auxiliary.components.authn.DynamicCrypto;
+import org.perfsonar.client.base.authn.AuthNDataFactory;
+//import org.perfsonar.client.base.authn.AuthNData;
+import org.perfsonar.client.base.authn.AuthNX509Data;
+import org.perfsonar.client.base.authn.WSSAuthNX509Data;
+
+import org.w3c.dom.Document;
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// get security token from files (java)
+
+//AuthNData authnData = AuthNDataFactory.getDefaultAuthNData();
+AuthNX509Data authnData = new WSSAuthNX509Data();
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// get current request soap message (groovy)
+
+// get request property
+def test_case = testRunner.testCase.getTestStepByName( "AuthNEE" );
+//log.info("a $test_case")
+def request_groovy = test_case.getProperty( "request" );
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// extract soap body contents of soap message (java)
+
+DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+factory.setNamespaceAware(true);
+DocumentBuilder builder = factory.newDocumentBuilder();
+InputStream is = new ByteArrayInputStream(request_groovy.value.getBytes());
+request = builder.parse(is);
+org.w3c.dom.NodeList nodeList = request.getElementsByTagName("nmwg:message");
+SOAPBodyElement requestMessage = new SOAPBodyElement(nodeList.item(0));
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// sign soap body contents (java)
+
+//log.info("step1")
+Object reqRaw = authnData.addX509STInMessage(requestMessage,
"/cert/privkey-edugain-cnm.pem", "/cert/cert-edugain-cnm.pem");
+//log.info("step2")
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// soap body -> xml formatted string (java + some variable references for
groovy)
+
+envelope = (SOAPEnvelope) reqRaw;
+Document doc = envelope.getAsDocument();
+
+def StringWriter outWriter = new java.io.StringWriter();
+XMLUtils.ElementToWriter(doc.getDocumentElement(), outWriter);
+outWriter.close();
+
+log.info( "signed soap message='"+outWriter.toString()+"'" )
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// replace request soap message (groovy)
+
+request_groovy.setValue( outWriter.toString() )
+
+//
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+]]></script></con:config></con:testStep><con:testStep type="groovy"
name="AlterSecurityElement_digest"
id="2d66cdc2-7d82-4414-b0a4-3e1c80f884dd"><con:settings/><con:config><script><![CDATA[
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// necesasry java imports
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+
+//import java.security.Provider;
+//import java.security.KeyFactory;
+//import java.security.PrivateKey;
+//import java.security.cert.X509Certificate;
+//import java.security.spec.PKCS8EncodedKeySpec;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.message.SOAPEnvelope;
+import org.apache.axis.utils.XMLUtils;
+
+//import org.bouncycastle.jce.provider.BouncyCastleProvider;
+
+//import org.perfsonar.base.auxiliary.components.authn.DynamicCrypto;
+import org.perfsonar.client.base.authn.AuthNDataFactory;
+//import org.perfsonar.client.base.authn.AuthNData
+import org.perfsonar.client.base.authn.AuthNX509Data;
+import org.perfsonar.client.base.authn.WSSAuthNX509Data;
+
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// get current request soap message (groovy)
+
+// get request property
+def test_case = testRunner.testCase.getTestStepByName( "AuthNEE" );
+def request_groovy = test_case.getProperty( "request" );
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// extract soap body contents of soap message (java)
+
+DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+factory.setNamespaceAware(true);
+DocumentBuilder builder = factory.newDocumentBuilder();
+InputStream is = new ByteArrayInputStream(request_groovy.value.getBytes());
+request = builder.parse(is);
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// alter first digest
+
+org.w3c.dom.NodeList nodeList =
request.getElementsByTagName("ds:DigestValue");
+// first digest appearing
+//Node digest = nodeList.item(0);
+// second digest appearing
+Node digest = nodeList.item(1);
+String data = digest.getFirstChild().getNodeValue();
+digest.getFirstChild().setNodeValue("AA"+data.substring(2));
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// soap body -> xml formatted string (java + some variable references for
groovy)
+
+def StringWriter outWriter = new java.io.StringWriter();
+XMLUtils.ElementToWriter(request.getDocumentElement(), outWriter);
+outWriter.close();
+
+log.info( "altered soap message='"+outWriter.toString()+"'" )
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// replace request soap message (groovy)
+
+request_groovy.setValue( outWriter.toString() )
+
+//
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+]]></script></con:config></con:testStep><con:testStep type="delay"
name="DelayBecauseOfTimestampProblem"
id="0ae96ab0-44b6-49e0-a387-96e7e7c9830a"><con:settings/><con:config><delay>1000</delay></con:config></con:testStep><con:testStep
type="request" name="AuthNEE"
id="588846f0-6890-4b9e-80a5-783d8982be33"><con:settings/><con:config
xsi:type="con:RequestStep"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><con:interface>AuthNEEBinding</con:interface><con:operation>AuthNEE</con:operation><con:request

name="AuthNEE"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://mdm-4.par.fr.geant2.net:8080/geant2_java-as/services/AuthService</con:endpoint><con:request><![CDATA[<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><soapenv:Header/><soapenv:Body><nmwg:message
id="authNMessage1" type="AuthNEERequest" xmlns:nmwg="http://ggf.org/ns/n
mwg/base/2.0/">
+ <nmwg:metadata id="authNMetadata">
+ <nmwg:parameters id="keys">
+ <nmwg:parameter
name="SecurityToken">http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3</nmwg:parameter>
+ </nmwg:parameters>
+ </nmwg:metadata>
+ <nmwg:data id="authN1" metadataIdRef="authNMetadata"/>
+
</nmwg:message></soapenv:Body></soapenv:Envelope>]]></con:request><con:assertion
type="Schema Compliance" disabled="true"
id="1fdd36d8-3e08-45d6-affc-79d7600bdfa8"><con:configuration><definition/></con:configuration></con:assertion><con:assertion
type="XQuery Match"
id="5025f1fc-d632-4d18-9f7e-9555f363a24e"><con:configuration><path>declare
namespace soapenv='http://schemas.xmlsoap.org/soap/envelope/';
+declare namespace nmwg='http://ggf.org/ns/nmwg/base/2.0/';
+
+&lt;items>
+{
+ for $z in
//soapenv:Envelope/soapenv:Body/nmwg:message/nmwg:metadata/nmwg:eventType/text()
+ order by $z
+ return &lt;id>{data($z)}&lt;/id>
+}
+&lt;/items></path><content>&lt;items>
+&lt;id>error.authn.wssec&lt;/id>
+&lt;/items></content><allowWildcards>false</allowWildcards></con:configuration></con:assertion><con:wssConfig/></con:request></con:config></con:testStep><con:testStep
type="groovy" name="UnsignRequestMessage"
id="b11e31a2-b3b2-4e98-94a0-28b50c396395"><con:settings/><con:config><script><![CDATA[
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.message.SOAPEnvelope;
+import org.apache.axis.utils.XMLUtils;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Node;
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// get request soap message (groovy)
+
+// get request property
+def test_case = testRunner.testCase.getTestStepByName( "AuthNEE" );
+//log.info("a $test_case")
+def request_groovy = test_case.getProperty( "request" );
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+factory.setNamespaceAware(true);
+DocumentBuilder builder = factory.newDocumentBuilder();
+InputStream is = new ByteArrayInputStream(request_groovy.value.getBytes());
+request = builder.parse(is);
+
+org.w3c.dom.NodeList nodeList1 =
request.getElementsByTagName("soapenv:Header");
+Node soap_header = nodeList1.item(0);
+log.info("debug:"+soap_header);
+
+if (soap_header != null) {
+org.w3c.dom.NodeList nodeList2 =
soap_header.getElementsByTagName("wsse:Security");
+Node wsse_node = nodeList2.item(0);
+log.info("debug:"+wsse_node);
+ if (wsse_node != null) {
+ soap_header.removeChild(wsse_node);
+}
+}
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// soap message -> xml formatted string (java + some groovy)
+
+def StringWriter outWriter = new java.io.StringWriter();
+XMLUtils.ElementToWriter(request.getDocumentElement(), outWriter);
+outWriter.close();
+
+log.info( "unsigned soap message='"+outWriter.toString()+"'" )
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// replace request soap message (groovy)
+
+request_groovy.setValue( outWriter.toString() )
+
+//
+

]]></script></con:config></con:testStep><con:properties/></con:testCase><con:testCase
failOnError="true" failTestCaseOnErrors="true" keepSession="false"
name="Faulty AuthNEE Certificate/ signature" searchProperties="true"
id="75622f74-d993-4d7e-b12d-c16e4ffff745"><con:settings/><con:testStep
type="groovy" name="SignRequestMessage"
id="e7882f04-81a4-4748-91d5-dabed62e1a48"><con:settings/><con:config><script><![CDATA[
//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// necesasry java imports
@@ -2995,7 +3224,7 @@
org.w3c.dom.NodeList nodeList =
request.getElementsByTagName("wsse:BinarySecurityToken");
Node binSecToken = nodeList.item(0);
String data = binSecToken.getFirstChild().getNodeValue();
-binSecToken.getFirstChild().setNodeValue("AA"+data);
+binSecToken.getFirstChild().setNodeValue("AA"+data.substring(2));


//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
@@ -3091,6 +3320,1444 @@

//

+]]></script></con:config></con:testStep><con:properties/></con:testCase><con:testCase
failOnError="true" failTestCaseOnErrors="true" keepSession="false"
name="Faulty AuthNEE SAML Assertion / early timestamp"
searchProperties="true"
id="0524428c-67cc-4461-a8fc-804b030e28f9"><con:settings/><con:testStep
type="groovy" name="AddSAMLAssertionToRequestMessage"
id="6c422e1b-a40d-42e3-bf8f-a08d31424fde"><con:settings/><con:config><script><![CDATA[
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.message.SOAPEnvelope;
+import org.apache.axis.utils.XMLUtils;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Node;
+
+import java.io.FileInputStream;
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+factory.setNamespaceAware(true);
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+// get copy pasted string of SAML assertion auth template xml
+
+DocumentBuilder builder1 = factory.newDocumentBuilder();
+String saml_assertion_auth_xml_filename="/cert/saml-auth-template.xml";
+FileInputStream is1 = new FileInputStream(saml_assertion_auth_xml_filename);
+Document saml_assertion_auth_xml = builder1.parse(is1);
+
+org.w3c.dom.NodeList nodeList01 =
saml_assertion_auth_xml.getElementsByTagName("soapenv:Header");
+Node soap_header0 = nodeList01.item(0);
+log.info("debug:"+soap_header0);
+
+Node wsse_node0 = null;
+if (soap_header0 != null) {
+ org.w3c.dom.NodeList nodeList02 =
soap_header0.getElementsByTagName("wsse:Security");
+ wsse_node0 = nodeList02.item(0);
+}
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// get request soap message (groovy)
+
+// get request property
+def test_case = testRunner.testCase.getTestStepByName( "AuthNEE" );
+//log.info("a $test_case")
+def request_groovy = test_case.getProperty( "request" );
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+DocumentBuilder builder = factory.newDocumentBuilder();
+InputStream is = new ByteArrayInputStream(request_groovy.value.getBytes());
+request = builder.parse(is);
+
+org.w3c.dom.NodeList nodeList1 =
request.getElementsByTagName("soapenv:Header");
+Node soap_header = nodeList1.item(0);
+log.info("debug:"+soap_header);
+if (soap_header != null) {
+ org.w3c.dom.NodeList nodeList2 =
soap_header.getElementsByTagName("wsse:Security");
+ Node wsse_node = nodeList2.item(0);
+ log.info("debug:"+wsse_node);
+ if (wsse_node != null) {
+ soap_header.removeChild(wsse_node);
+ }
+}
+
+Node newNode = wsse_node0.cloneNode(true);
+request.adoptNode(newNode);
+soap_header.appendChild(newNode);
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// soap message -> xml formatted string (java + some groovy)
+
+def StringWriter outWriter = new java.io.StringWriter();
+//XMLUtils.ElementToWriter(request.getDocumentElement(), outWriter);
+XMLUtils.ElementToWriter(saml_assertion_auth_xml.getDocumentElement(),
outWriter);
+
+outWriter.close();
+
+log.info( "soap message with SAML assertion auth='"+outWriter.toString()+"'"
)
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// replace request soap message (groovy)
+
+request_groovy.setValue( outWriter.toString() )
+
+//
+]]></script></con:config></con:testStep><con:testStep type="groovy"
name="AlterSecurityTokenSAMLAssertion_early_timestamp"
id="f3d4dccb-c13c-4c3a-b1a7-b08b9317dd9e"><con:settings/><con:config><script><![CDATA[
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// necesasry java imports
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+
+//import java.security.Provider;
+//import java.security.KeyFactory;
+//import java.security.PrivateKey;
+//import java.security.cert.X509Certificate;
+//import java.security.spec.PKCS8EncodedKeySpec;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.message.SOAPEnvelope;
+import org.apache.axis.utils.XMLUtils;
+
+//import org.bouncycastle.jce.provider.BouncyCastleProvider;
+
+//import org.perfsonar.base.auxiliary.components.authn.DynamicCrypto;
+import org.perfsonar.client.base.authn.AuthNDataFactory;
+//import org.perfsonar.client.base.authn.AuthNData
+import org.perfsonar.client.base.authn.AuthNX509Data;
+import org.perfsonar.client.base.authn.WSSAuthNX509Data;
+
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// get current request soap message (groovy)
+
+// get request property
+def test_case = testRunner.testCase.getTestStepByName( "AuthNEE" );
+def request_groovy = test_case.getProperty( "request" );
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// extract soap body contents of soap message (java)
+
+DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+factory.setNamespaceAware(true);
+DocumentBuilder builder = factory.newDocumentBuilder();
+InputStream is = new ByteArrayInputStream(request_groovy.value.getBytes());
+request = builder.parse(is);
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// actual code to alter some part of security element
+
+org.w3c.dom.NodeList nodeList = request.getElementsByTagName("wsu:Created");
+Node node1 = nodeList.item(0);
+String data = node1.getFirstChild().getNodeValue();
+
+// fromat 'yyyy-mm-ddThh-mm-ss.hhhZ'
+
+int year = Integer.parseInt(data.substring(0, 4));
+int month = Integer.parseInt(data.substring(5, 7));
+int day = Integer.parseInt(data.substring(8, 10));
+
+int hour = Integer.parseInt(data.substring(11, 13));
+int minute = Integer.parseInt(data.substring(14, 16));
+int second = Integer.parseInt(data.substring(17, 19));
+
+log.info("old
time="+year+"-"+month+"-"+day+"T"+hour+":"+minute+":"+second+".000Z")
+
+// rough estimation:
+double tsec = second+((double) 60)*(minute+((double) 60)*(hour+((double)
24)*(day+((double) 31)*(month+((double) 12)*year))));
+log.info("tsec="+tsec)
+
+// use difference value which is much greater than the error introduced by
assumption each month=31 days
+tsec -= ((double) 60)*60*24*10;
+
+double second2 = tsec % 60;
+tsec = (tsec - second2) / 60;
+
+double minute2 = tsec % 60;
+tsec = (tsec - minute2) / 60;
+
+double hour2 = tsec % 24;
+tsec = (tsec - hour2) / 24;
+
+double day2 = tsec % 31;
+tsec = (tsec - day2) / 31;
+
+double month2 = tsec % 12;
+tsec = (tsec - month2) / 12;
+
+double year2 = tsec;
+
+String year_s = (int) year2;
+String month_s = (int) month2;
+String day_s = (int) day2;
+String hour_s = (int) hour2;
+String minute_s = (int) minute2;
+String second_s = (int) second2;
+
+year_s = "0000".substring(year_s.length()) + year_s;
+month_s = "00".substring(month_s.length()) + month_s;
+day_s = "00".substring(day_s.length()) + day_s;
+hour_s = "00".substring(hour_s.length()) + hour_s;
+minute_s = "00".substring(minute_s.length()) + minute_s;
+second_s = "00".substring(second_s.length()) + second_s;
+
+String data2 =
year_s+"-"+month_s+"-"+day_s+"T"+hour_s+":"+minute_s+":"+second_s+".000Z";
+
+log.info("new time="+data2)
+
+node1.getFirstChild().setNodeValue(data2);
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+nodeList = request.getElementsByTagName("wsu:Expires");
+node1 = nodeList.item(0);
+data = node1.getFirstChild().getNodeValue();
+
+// fromat 'yyyy-mm-ddThh-mm-ss.hhhZ'
+
+year = Integer.parseInt(data.substring(0, 4));
+month = Integer.parseInt(data.substring(5, 7));
+day = Integer.parseInt(data.substring(8, 10));
+
+hour = Integer.parseInt(data.substring(11, 13));
+minute = Integer.parseInt(data.substring(14, 16));
+second = Integer.parseInt(data.substring(17, 19));
+
+log.info("old
time="+year+"-"+month+"-"+day+"T"+hour+":"+minute+":"+second+".000Z")
+
+// rough estimation:
+tsec = second+((double) 60)*(minute+((double) 60)*(hour+((double)
24)*(day+((double) 31)*(month+((double) 12)*year))));
+log.info("tsec="+tsec)
+
+// use difference value which is much greater than the error introduced by
assumption each month=31 days
+tsec -= ((double) 60)*60*24*10;
+
+second2 = tsec % 60;
+tsec = (tsec - second2) / 60;
+
+minute2 = tsec % 60;
+tsec = (tsec - minute2) / 60;
+
+hour2 = tsec % 24;
+tsec = (tsec - hour2) / 24;
+
+day2 = tsec % 31;
+tsec = (tsec - day2) / 31;
+
+month2 = tsec % 12;
+tsec = (tsec - month2) / 12;
+
+year2 = tsec;
+
+year_s = (int) year2;
+month_s = (int) month2;
+day_s = (int) day2;
+hour_s = (int) hour2;
+minute_s = (int) minute2;
+second_s = (int) second2;
+
+year_s = "0000".substring(year_s.length()) + year_s;
+month_s = "00".substring(month_s.length()) + month_s;
+day_s = "00".substring(day_s.length()) + day_s;
+hour_s = "00".substring(hour_s.length()) + hour_s;
+minute_s = "00".substring(minute_s.length()) + minute_s;
+second_s = "00".substring(second_s.length()) + second_s;
+
+data2 =
year_s+"-"+month_s+"-"+day_s+"T"+hour_s+":"+minute_s+":"+second_s+".000Z";
+
+log.info("new time="+data2)
+
+node1.getFirstChild().setNodeValue(data2);
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// soap body -> xml formatted string (java + some variable references for
groovy)
+
+def StringWriter outWriter = new java.io.StringWriter();
+XMLUtils.ElementToWriter(request.getDocumentElement(), outWriter);
+outWriter.close();
+
+log.info( "altered soap message='"+outWriter.toString()+"'" )
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// replace request soap message (groovy)
+
+request_groovy.setValue( outWriter.toString() )
+
+//
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+]]></script></con:config></con:testStep><con:testStep type="delay"
name="DelayBecauseOfTimestampProblem"
id="4032732d-bf68-4ad7-a3d4-6e7496ecbe65"><con:settings/><con:config><delay>1000</delay></con:config></con:testStep><con:testStep
type="request" name="AuthNEE"
id="6096575f-d6d3-4faa-9fda-0f89b0bde39b"><con:settings/><con:config
xsi:type="con:RequestStep"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><con:interface>AuthNEEBinding</con:interface><con:operation>AuthNEE</con:operation><con:request

name="AuthNEE"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://mdm-4.par.fr.geant2.net:8080/geant2_java-as/services/AuthService</con:endpoint><con:request><![CDATA[<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><soapenv:Header/><soapenv:Body><nmwg:message
id="authNMessage1" type="AuthNEERequest" xmlns:nmwg="http://ggf.org/ns/n
mwg/base/2.0/">
+ <nmwg:metadata id="authNMetadata">
+ <nmwg:parameters id="keys">
+ <nmwg:parameter
name="SecurityToken">http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1</nmwg:parameter>
+ </nmwg:parameters>
+ </nmwg:metadata>
+ <nmwg:data id="authN1" metadataIdRef="authNMetadata"/>
+</nmwg:message></soapenv:Body></soapenv:Envelope>]]></con:request><con:assertion
type="Schema Compliance" disabled="true"
id="cb8b53b2-ac84-440f-a0d6-741a9910fd94"><con:configuration><definition/></con:configuration></con:assertion><con:assertion
type="XQuery Match"
id="ff604576-a8f8-40f1-a30a-53a9d59880df"><con:configuration><path>declare
namespace soapenv='http://schemas.xmlsoap.org/soap/envelope/';
+declare namespace nmwg='http://ggf.org/ns/nmwg/base/2.0/';
+
+&lt;items>
+{
+ for $z in
//soapenv:Envelope/soapenv:Body/nmwg:message/nmwg:metadata/nmwg:eventType/text()
+ order by $z
+ return &lt;id>{data($z)}&lt;/id>
+}
+&lt;/items></path><content>&lt;items>
+&lt;id>error.authn.wssec&lt;/id>
+&lt;/items></content><allowWildcards>false</allowWildcards></con:configuration></con:assertion><con:wssConfig/></con:request></con:config></con:testStep><con:testStep
type="groovy" name="UnsignRequestMessage"
id="6b532c9e-001d-414d-a7e8-f479f1056f6c"><con:settings/><con:config><script><![CDATA[
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.message.SOAPEnvelope;
+import org.apache.axis.utils.XMLUtils;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Node;
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// get request soap message (groovy)
+
+// get request property
+def test_case = testRunner.testCase.getTestStepByName( "AuthNEE" );
+//log.info("a $test_case")
+def request_groovy = test_case.getProperty( "request" );
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+factory.setNamespaceAware(true);
+DocumentBuilder builder = factory.newDocumentBuilder();
+InputStream is = new ByteArrayInputStream(request_groovy.value.getBytes());
+request = builder.parse(is);
+
+org.w3c.dom.NodeList nodeList1 =
request.getElementsByTagName("soapenv:Header");
+Node soap_header = nodeList1.item(0);
+log.info("debug:"+soap_header);
+
+if (soap_header != null) {
+org.w3c.dom.NodeList nodeList2 =
soap_header.getElementsByTagName("wsse:Security");
+Node wsse_node = nodeList2.item(0);
+log.info("debug:"+wsse_node);
+ if (wsse_node != null) {
+ soap_header.removeChild(wsse_node);
+}
+}
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// soap message -> xml formatted string (java + some groovy)
+
+def StringWriter outWriter = new java.io.StringWriter();
+XMLUtils.ElementToWriter(request.getDocumentElement(), outWriter);
+outWriter.close();
+
+log.info( "unsigned soap message='"+outWriter.toString()+"'" )
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// replace request soap message (groovy)
+
+request_groovy.setValue( outWriter.toString() )
+
+//
+
+]]></script></con:config></con:testStep><con:properties/></con:testCase><con:testCase
failOnError="true" failTestCaseOnErrors="true" keepSession="false"
name="Faulty AuthNEE SAML Assertion / late timestamp" searchProperties="true"
id="70906045-a305-404c-99e2-84a25f520540"><con:settings/><con:testStep
type="groovy" name="AddSAMLAssertionToRequestMessage"
id="6c422e1b-a40d-42e3-bf8f-a08d31424fde"><con:settings/><con:config><script><![CDATA[
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.message.SOAPEnvelope;
+import org.apache.axis.utils.XMLUtils;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Node;
+
+import java.io.FileInputStream;
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+factory.setNamespaceAware(true);
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+// get copy pasted string of SAML assertion auth template xml
+
+DocumentBuilder builder1 = factory.newDocumentBuilder();
+String saml_assertion_auth_xml_filename="/cert/saml-auth-template.xml";
+FileInputStream is1 = new FileInputStream(saml_assertion_auth_xml_filename);
+Document saml_assertion_auth_xml = builder1.parse(is1);
+
+org.w3c.dom.NodeList nodeList01 =
saml_assertion_auth_xml.getElementsByTagName("soapenv:Header");
+Node soap_header0 = nodeList01.item(0);
+log.info("debug:"+soap_header0);
+
+Node wsse_node0 = null;
+if (soap_header0 != null) {
+ org.w3c.dom.NodeList nodeList02 =
soap_header0.getElementsByTagName("wsse:Security");
+ wsse_node0 = nodeList02.item(0);
+}
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// get request soap message (groovy)
+
+// get request property
+def test_case = testRunner.testCase.getTestStepByName( "AuthNEE" );
+//log.info("a $test_case")
+def request_groovy = test_case.getProperty( "request" );
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+DocumentBuilder builder = factory.newDocumentBuilder();
+InputStream is = new ByteArrayInputStream(request_groovy.value.getBytes());
+request = builder.parse(is);
+
+org.w3c.dom.NodeList nodeList1 =
request.getElementsByTagName("soapenv:Header");
+Node soap_header = nodeList1.item(0);
+log.info("debug:"+soap_header);
+if (soap_header != null) {
+ org.w3c.dom.NodeList nodeList2 =
soap_header.getElementsByTagName("wsse:Security");
+ Node wsse_node = nodeList2.item(0);
+ log.info("debug:"+wsse_node);
+ if (wsse_node != null) {
+ soap_header.removeChild(wsse_node);
+ }
+}
+
+Node newNode = wsse_node0.cloneNode(true);
+request.adoptNode(newNode);
+soap_header.appendChild(newNode);
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// soap message -> xml formatted string (java + some groovy)
+
+def StringWriter outWriter = new java.io.StringWriter();
+//XMLUtils.ElementToWriter(request.getDocumentElement(), outWriter);
+XMLUtils.ElementToWriter(saml_assertion_auth_xml.getDocumentElement(),
outWriter);
+
+outWriter.close();
+
+log.info( "soap message with SAML assertion auth='"+outWriter.toString()+"'"
)
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// replace request soap message (groovy)
+
+request_groovy.setValue( outWriter.toString() )
+
+//
+]]></script></con:config></con:testStep><con:testStep type="groovy"
name="AlterSecurityTokenSAMLAssertion_late_timestamp"
id="f3d4dccb-c13c-4c3a-b1a7-b08b9317dd9e"><con:settings/><con:config><script><![CDATA[
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// necesasry java imports
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+
+//import java.security.Provider;
+//import java.security.KeyFactory;
+//import java.security.PrivateKey;
+//import java.security.cert.X509Certificate;
+//import java.security.spec.PKCS8EncodedKeySpec;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.message.SOAPEnvelope;
+import org.apache.axis.utils.XMLUtils;
+
+//import org.bouncycastle.jce.provider.BouncyCastleProvider;
+
+//import org.perfsonar.base.auxiliary.components.authn.DynamicCrypto;
+import org.perfsonar.client.base.authn.AuthNDataFactory;
+//import org.perfsonar.client.base.authn.AuthNData
+import org.perfsonar.client.base.authn.AuthNX509Data;
+import org.perfsonar.client.base.authn.WSSAuthNX509Data;
+
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// get current request soap message (groovy)
+
+// get request property
+def test_case = testRunner.testCase.getTestStepByName( "AuthNEE" );
+def request_groovy = test_case.getProperty( "request" );
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// extract soap body contents of soap message (java)
+
+DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+factory.setNamespaceAware(true);
+DocumentBuilder builder = factory.newDocumentBuilder();
+InputStream is = new ByteArrayInputStream(request_groovy.value.getBytes());
+request = builder.parse(is);
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// actual code to alter some part of security element
+
+org.w3c.dom.NodeList nodeList = request.getElementsByTagName("wsu:Created");
+Node node1 = nodeList.item(0);
+String data = node1.getFirstChild().getNodeValue();
+
+// fromat 'yyyy-mm-ddThh-mm-ss.hhhZ'
+
+int year = Integer.parseInt(data.substring(0, 4));
+int month = Integer.parseInt(data.substring(5, 7));
+int day = Integer.parseInt(data.substring(8, 10));
+
+int hour = Integer.parseInt(data.substring(11, 13));
+int minute = Integer.parseInt(data.substring(14, 16));
+int second = Integer.parseInt(data.substring(17, 19));
+
+log.info("old
time="+year+"-"+month+"-"+day+"T"+hour+":"+minute+":"+second+".000Z")
+
+// rough estimation:
+double tsec = second+((double) 60)*(minute+((double) 60)*(hour+((double)
24)*(day+((double) 31)*(month+((double) 12)*year))));
+log.info("tsec="+tsec)
+
+// use difference value which is much greater than the error introduced by
assumption each month=31 days
+tsec -= ((double) 60)*60*24*10;
+
+double second2 = tsec % 60;
+tsec = (tsec - second2) / 60;
+
+double minute2 = tsec % 60;
+tsec = (tsec - minute2) / 60;
+
+double hour2 = tsec % 24;
+tsec = (tsec - hour2) / 24;
+
+double day2 = tsec % 31;
+tsec = (tsec - day2) / 31;
+
+double month2 = tsec % 12;
+tsec = (tsec - month2) / 12;
+
+double year2 = tsec;
+
+String year_s = (int) year2;
+String month_s = (int) month2;
+String day_s = (int) day2;
+String hour_s = (int) hour2;
+String minute_s = (int) minute2;
+String second_s = (int) second2;
+
+year_s = "0000".substring(year_s.length()) + year_s;
+month_s = "00".substring(month_s.length()) + month_s;
+day_s = "00".substring(day_s.length()) + day_s;
+hour_s = "00".substring(hour_s.length()) + hour_s;
+minute_s = "00".substring(minute_s.length()) + minute_s;
+second_s = "00".substring(second_s.length()) + second_s;
+
+String data2 =
year_s+"-"+month_s+"-"+day_s+"T"+hour_s+":"+minute_s+":"+second_s+".000Z";
+
+log.info("new time="+data2)
+
+node1.getFirstChild().setNodeValue(data2);
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+nodeList = request.getElementsByTagName("wsu:Expires");
+node1 = nodeList.item(0);
+data = node1.getFirstChild().getNodeValue();
+
+// fromat 'yyyy-mm-ddThh-mm-ss.hhhZ'
+
+year = Integer.parseInt(data.substring(0, 4));
+month = Integer.parseInt(data.substring(5, 7));
+day = Integer.parseInt(data.substring(8, 10));
+
+hour = Integer.parseInt(data.substring(11, 13));
+minute = Integer.parseInt(data.substring(14, 16));
+second = Integer.parseInt(data.substring(17, 19));
+
+log.info("old
time="+year+"-"+month+"-"+day+"T"+hour+":"+minute+":"+second+".000Z")
+
+// rough estimation:
+tsec = second+((double) 60)*(minute+((double) 60)*(hour+((double)
24)*(day+((double) 31)*(month+((double) 12)*year))));
+log.info("tsec="+tsec)
+
+// use difference value which is much greater than the error introduced by
assumption each month=31 days
+tsec += ((double) 60)*60*24*10;
+
+second2 = tsec % 60;
+tsec = (tsec - second2) / 60;
+
+minute2 = tsec % 60;
+tsec = (tsec - minute2) / 60;
+
+hour2 = tsec % 24;
+tsec = (tsec - hour2) / 24;
+
+day2 = tsec % 31;
+tsec = (tsec - day2) / 31;
+
+month2 = tsec % 12;
+tsec = (tsec - month2) / 12;
+
+year2 = tsec;
+
+year_s = (int) year2;
+month_s = (int) month2;
+day_s = (int) day2;
+hour_s = (int) hour2;
+minute_s = (int) minute2;
+second_s = (int) second2;
+
+year_s = "0000".substring(year_s.length()) + year_s;
+month_s = "00".substring(month_s.length()) + month_s;
+day_s = "00".substring(day_s.length()) + day_s;
+hour_s = "00".substring(hour_s.length()) + hour_s;
+minute_s = "00".substring(minute_s.length()) + minute_s;
+second_s = "00".substring(second_s.length()) + second_s;
+
+data2 =
year_s+"-"+month_s+"-"+day_s+"T"+hour_s+":"+minute_s+":"+second_s+".000Z";
+
+log.info("new time="+data2)
+
+node1.getFirstChild().setNodeValue(data2);
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// soap body -> xml formatted string (java + some variable references for
groovy)
+
+def StringWriter outWriter = new java.io.StringWriter();
+XMLUtils.ElementToWriter(request.getDocumentElement(), outWriter);
+outWriter.close();
+
+log.info( "altered soap message='"+outWriter.toString()+"'" )
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// replace request soap message (groovy)
+
+request_groovy.setValue( outWriter.toString() )
+
+//
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+]]></script></con:config></con:testStep><con:testStep type="delay"
name="DelayBecauseOfTimestampProblem"
id="4032732d-bf68-4ad7-a3d4-6e7496ecbe65"><con:settings/><con:config><delay>1000</delay></con:config></con:testStep><con:testStep
type="request" name="AuthNEE"
id="6096575f-d6d3-4faa-9fda-0f89b0bde39b"><con:settings/><con:config
xsi:type="con:RequestStep"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><con:interface>AuthNEEBinding</con:interface><con:operation>AuthNEE</con:operation><con:request

name="AuthNEE"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://mdm-4.par.fr.geant2.net:8080/geant2_java-as/services/AuthService</con:endpoint><con:request><![CDATA[<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><soapenv:Header/><soapenv:Body><nmwg:message
id="authNMessage1" type="AuthNEERequest" xmlns:nmwg="http://ggf.org/ns/n
mwg/base/2.0/">
+ <nmwg:metadata id="authNMetadata">
+ <nmwg:parameters id="keys">
+ <nmwg:parameter
name="SecurityToken">http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1</nmwg:parameter>
+ </nmwg:parameters>
+ </nmwg:metadata>
+ <nmwg:data id="authN1" metadataIdRef="authNMetadata"/>
+</nmwg:message></soapenv:Body></soapenv:Envelope>]]></con:request><con:assertion
type="Schema Compliance" disabled="true"
id="cb8b53b2-ac84-440f-a0d6-741a9910fd94"><con:configuration><definition/></con:configuration></con:assertion><con:assertion
type="XQuery Match"
id="ff604576-a8f8-40f1-a30a-53a9d59880df"><con:configuration><path>declare
namespace soapenv='http://schemas.xmlsoap.org/soap/envelope/';
+declare namespace nmwg='http://ggf.org/ns/nmwg/base/2.0/';
+
+&lt;items>
+{
+ for $z in
//soapenv:Envelope/soapenv:Body/nmwg:message/nmwg:metadata/nmwg:eventType/text()
+ order by $z
+ return &lt;id>{data($z)}&lt;/id>
+}
+&lt;/items></path><content>&lt;items>
+&lt;id>error.authn.wssec&lt;/id>
+&lt;/items></content><allowWildcards>false</allowWildcards></con:configuration></con:assertion><con:wssConfig/></con:request></con:config></con:testStep><con:testStep
type="groovy" name="UnsignRequestMessage"
id="6b532c9e-001d-414d-a7e8-f479f1056f6c"><con:settings/><con:config><script><![CDATA[
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.message.SOAPEnvelope;
+import org.apache.axis.utils.XMLUtils;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Node;
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// get request soap message (groovy)
+
+// get request property
+def test_case = testRunner.testCase.getTestStepByName( "AuthNEE" );
+//log.info("a $test_case")
+def request_groovy = test_case.getProperty( "request" );
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+factory.setNamespaceAware(true);
+DocumentBuilder builder = factory.newDocumentBuilder();
+InputStream is = new ByteArrayInputStream(request_groovy.value.getBytes());
+request = builder.parse(is);
+
+org.w3c.dom.NodeList nodeList1 =
request.getElementsByTagName("soapenv:Header");
+Node soap_header = nodeList1.item(0);
+log.info("debug:"+soap_header);
+
+if (soap_header != null) {
+org.w3c.dom.NodeList nodeList2 =
soap_header.getElementsByTagName("wsse:Security");
+Node wsse_node = nodeList2.item(0);
+log.info("debug:"+wsse_node);
+ if (wsse_node != null) {
+ soap_header.removeChild(wsse_node);
+}
+}
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// soap message -> xml formatted string (java + some groovy)
+
+def StringWriter outWriter = new java.io.StringWriter();
+XMLUtils.ElementToWriter(request.getDocumentElement(), outWriter);
+outWriter.close();
+
+log.info( "unsigned soap message='"+outWriter.toString()+"'" )
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// replace request soap message (groovy)
+
+request_groovy.setValue( outWriter.toString() )
+
+//
+
+]]></script></con:config></con:testStep><con:properties/></con:testCase><con:testCase
failOnError="true" failTestCaseOnErrors="true" keepSession="false"
name="Faulty AuthNEE SAML Assertion / digest" searchProperties="true"
id="c0300260-898b-4af9-b182-7dd13bdee5e2"><con:settings/><con:testStep
type="groovy" name="AddSAMLAssertionToRequestMessage"
id="6c422e1b-a40d-42e3-bf8f-a08d31424fde"><con:settings/><con:config><script><![CDATA[
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.message.SOAPEnvelope;
+import org.apache.axis.utils.XMLUtils;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Node;
+
+import java.io.FileInputStream;
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+factory.setNamespaceAware(true);
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+// get copy pasted string of SAML assertion auth template xml
+
+DocumentBuilder builder1 = factory.newDocumentBuilder();
+String saml_assertion_auth_xml_filename="/cert/saml-auth-template.xml";
+FileInputStream is1 = new FileInputStream(saml_assertion_auth_xml_filename);
+Document saml_assertion_auth_xml = builder1.parse(is1);
+
+org.w3c.dom.NodeList nodeList01 =
saml_assertion_auth_xml.getElementsByTagName("soapenv:Header");
+Node soap_header0 = nodeList01.item(0);
+log.info("debug:"+soap_header0);
+
+Node wsse_node0 = null;
+if (soap_header0 != null) {
+ org.w3c.dom.NodeList nodeList02 =
soap_header0.getElementsByTagName("wsse:Security");
+ wsse_node0 = nodeList02.item(0);
+}
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// get request soap message (groovy)
+
+// get request property
+def test_case = testRunner.testCase.getTestStepByName( "AuthNEE" );
+//log.info("a $test_case")
+def request_groovy = test_case.getProperty( "request" );
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+DocumentBuilder builder = factory.newDocumentBuilder();
+InputStream is = new ByteArrayInputStream(request_groovy.value.getBytes());
+request = builder.parse(is);
+
+org.w3c.dom.NodeList nodeList1 =
request.getElementsByTagName("soapenv:Header");
+Node soap_header = nodeList1.item(0);
+log.info("debug:"+soap_header);
+if (soap_header != null) {
+ org.w3c.dom.NodeList nodeList2 =
soap_header.getElementsByTagName("wsse:Security");
+ Node wsse_node = nodeList2.item(0);
+ log.info("debug:"+wsse_node);
+ if (wsse_node != null) {
+ soap_header.removeChild(wsse_node);
+ }
+}
+
+Node newNode = wsse_node0.cloneNode(true);
+request.adoptNode(newNode);
+soap_header.appendChild(newNode);
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// soap message -> xml formatted string (java + some groovy)
+
+def StringWriter outWriter = new java.io.StringWriter();
+//XMLUtils.ElementToWriter(request.getDocumentElement(), outWriter);
+XMLUtils.ElementToWriter(saml_assertion_auth_xml.getDocumentElement(),
outWriter);
+
+outWriter.close();
+
+log.info( "soap message with SAML assertion auth='"+outWriter.toString()+"'"
)
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// replace request soap message (groovy)
+
+request_groovy.setValue( outWriter.toString() )
+
+//
+]]></script></con:config></con:testStep><con:testStep type="groovy"
name="AlterSecurityTokenSAMLAssertion_digest"
id="f3d4dccb-c13c-4c3a-b1a7-b08b9317dd9e"><con:settings/><con:config><script><![CDATA[
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// necesasry java imports
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+
+//import java.security.Provider;
+//import java.security.KeyFactory;
+//import java.security.PrivateKey;
+//import java.security.cert.X509Certificate;
+//import java.security.spec.PKCS8EncodedKeySpec;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.message.SOAPEnvelope;
+import org.apache.axis.utils.XMLUtils;
+
+//import org.bouncycastle.jce.provider.BouncyCastleProvider;
+
+//import org.perfsonar.base.auxiliary.components.authn.DynamicCrypto;
+import org.perfsonar.client.base.authn.AuthNDataFactory;
+//import org.perfsonar.client.base.authn.AuthNData
+import org.perfsonar.client.base.authn.AuthNX509Data;
+import org.perfsonar.client.base.authn.WSSAuthNX509Data;
+
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// get current request soap message (groovy)
+
+// get request property
+def test_case = testRunner.testCase.getTestStepByName( "AuthNEE" );
+def request_groovy = test_case.getProperty( "request" );
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// extract soap body contents of soap message (java)
+
+DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+factory.setNamespaceAware(true);
+DocumentBuilder builder = factory.newDocumentBuilder();
+InputStream is = new ByteArrayInputStream(request_groovy.value.getBytes());
+request = builder.parse(is);
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// alter first digest
+
+org.w3c.dom.NodeList nodeList =
request.getElementsByTagName("ds:DigestValue");
+// first digest appearing
+Node digest = nodeList.item(0);
+// second digest appearing
+//Node digest = nodeList.item(1);
+String data = digest.getFirstChild().getNodeValue();
+digest.getFirstChild().setNodeValue("AA"+data.substring(2));
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// soap body -> xml formatted string (java + some variable references for
groovy)
+
+def StringWriter outWriter = new java.io.StringWriter();
+XMLUtils.ElementToWriter(request.getDocumentElement(), outWriter);
+outWriter.close();
+
+log.info( "altered soap message='"+outWriter.toString()+"'" )
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// replace request soap message (groovy)
+
+request_groovy.setValue( outWriter.toString() )
+
+//
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+]]></script></con:config></con:testStep><con:testStep type="delay"
name="DelayBecauseOfTimestampProblem"
id="4032732d-bf68-4ad7-a3d4-6e7496ecbe65"><con:settings/><con:config><delay>1000</delay></con:config></con:testStep><con:testStep
type="request" name="AuthNEE"
id="6096575f-d6d3-4faa-9fda-0f89b0bde39b"><con:settings/><con:config
xsi:type="con:RequestStep"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><con:interface>AuthNEEBinding</con:interface><con:operation>AuthNEE</con:operation><con:request

name="AuthNEE"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://mdm-4.par.fr.geant2.net:8080/geant2_java-as/services/AuthService</con:endpoint><con:request><![CDATA[<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><soapenv:Header/><soapenv:Body><nmwg:message
id="authNMessage1" type="AuthNEERequest" xmlns:nmwg="http://ggf.org/ns/n
mwg/base/2.0/">
+ <nmwg:metadata id="authNMetadata">
+ <nmwg:parameters id="keys">
+ <nmwg:parameter
name="SecurityToken">http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1</nmwg:parameter>
+ </nmwg:parameters>
+ </nmwg:metadata>
+ <nmwg:data id="authN1" metadataIdRef="authNMetadata"/>
+</nmwg:message></soapenv:Body></soapenv:Envelope>]]></con:request><con:assertion
type="Schema Compliance" disabled="true"
id="cb8b53b2-ac84-440f-a0d6-741a9910fd94"><con:configuration><definition/></con:configuration></con:assertion><con:assertion
type="XQuery Match"
id="ff604576-a8f8-40f1-a30a-53a9d59880df"><con:configuration><path>declare
namespace soapenv='http://schemas.xmlsoap.org/soap/envelope/';
+declare namespace nmwg='http://ggf.org/ns/nmwg/base/2.0/';
+
+&lt;items>
+{
+ for $z in
//soapenv:Envelope/soapenv:Body/nmwg:message/nmwg:metadata/nmwg:eventType/text()
+ order by $z
+ return &lt;id>{data($z)}&lt;/id>
+}
+&lt;/items></path><content>&lt;items>
+&lt;id>error.authn.wssec&lt;/id>
+&lt;/items></content><allowWildcards>false</allowWildcards></con:configuration></con:assertion><con:wssConfig/></con:request></con:config></con:testStep><con:testStep
type="groovy" name="UnsignRequestMessage"
id="6b532c9e-001d-414d-a7e8-f479f1056f6c"><con:settings/><con:config><script><![CDATA[
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.message.SOAPEnvelope;
+import org.apache.axis.utils.XMLUtils;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Node;
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// get request soap message (groovy)
+
+// get request property
+def test_case = testRunner.testCase.getTestStepByName( "AuthNEE" );
+//log.info("a $test_case")
+def request_groovy = test_case.getProperty( "request" );
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+factory.setNamespaceAware(true);
+DocumentBuilder builder = factory.newDocumentBuilder();
+InputStream is = new ByteArrayInputStream(request_groovy.value.getBytes());
+request = builder.parse(is);
+
+org.w3c.dom.NodeList nodeList1 =
request.getElementsByTagName("soapenv:Header");
+Node soap_header = nodeList1.item(0);
+log.info("debug:"+soap_header);
+
+if (soap_header != null) {
+org.w3c.dom.NodeList nodeList2 =
soap_header.getElementsByTagName("wsse:Security");
+Node wsse_node = nodeList2.item(0);
+log.info("debug:"+wsse_node);
+ if (wsse_node != null) {
+ soap_header.removeChild(wsse_node);
+}
+}
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// soap message -> xml formatted string (java + some groovy)
+
+def StringWriter outWriter = new java.io.StringWriter();
+XMLUtils.ElementToWriter(request.getDocumentElement(), outWriter);
+outWriter.close();
+
+log.info( "unsigned soap message='"+outWriter.toString()+"'" )
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// replace request soap message (groovy)
+
+request_groovy.setValue( outWriter.toString() )
+
+//
+
+]]></script></con:config></con:testStep><con:properties/></con:testCase><con:testCase
failOnError="true" failTestCaseOnErrors="true" keepSession="false"
name="Faulty AuthNEE SAML Assertion / digest2" searchProperties="true"
id="c0d60f3a-ff1f-4a14-9513-201a0b47eda3"><con:settings/><con:testStep
type="groovy" name="AddSAMLAssertionToRequestMessage"
id="6c422e1b-a40d-42e3-bf8f-a08d31424fde"><con:settings/><con:config><script><![CDATA[
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.message.SOAPEnvelope;
+import org.apache.axis.utils.XMLUtils;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Node;
+
+import java.io.FileInputStream;
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+factory.setNamespaceAware(true);
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+// get copy pasted string of SAML assertion auth template xml
+
+DocumentBuilder builder1 = factory.newDocumentBuilder();
+String saml_assertion_auth_xml_filename="/cert/saml-auth-template.xml";
+FileInputStream is1 = new FileInputStream(saml_assertion_auth_xml_filename);
+Document saml_assertion_auth_xml = builder1.parse(is1);
+
+org.w3c.dom.NodeList nodeList01 =
saml_assertion_auth_xml.getElementsByTagName("soapenv:Header");
+Node soap_header0 = nodeList01.item(0);
+log.info("debug:"+soap_header0);
+
+Node wsse_node0 = null;
+if (soap_header0 != null) {
+ org.w3c.dom.NodeList nodeList02 =
soap_header0.getElementsByTagName("wsse:Security");
+ wsse_node0 = nodeList02.item(0);
+}
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// get request soap message (groovy)
+
+// get request property
+def test_case = testRunner.testCase.getTestStepByName( "AuthNEE" );
+//log.info("a $test_case")
+def request_groovy = test_case.getProperty( "request" );
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+DocumentBuilder builder = factory.newDocumentBuilder();
+InputStream is = new ByteArrayInputStream(request_groovy.value.getBytes());
+request = builder.parse(is);
+
+org.w3c.dom.NodeList nodeList1 =
request.getElementsByTagName("soapenv:Header");
+Node soap_header = nodeList1.item(0);
+log.info("debug:"+soap_header);
+if (soap_header != null) {
+ org.w3c.dom.NodeList nodeList2 =
soap_header.getElementsByTagName("wsse:Security");
+ Node wsse_node = nodeList2.item(0);
+ log.info("debug:"+wsse_node);
+ if (wsse_node != null) {
+ soap_header.removeChild(wsse_node);
+ }
+}
+
+Node newNode = wsse_node0.cloneNode(true);
+request.adoptNode(newNode);
+soap_header.appendChild(newNode);
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// soap message -> xml formatted string (java + some groovy)
+
+def StringWriter outWriter = new java.io.StringWriter();
+//XMLUtils.ElementToWriter(request.getDocumentElement(), outWriter);
+XMLUtils.ElementToWriter(saml_assertion_auth_xml.getDocumentElement(),
outWriter);
+
+outWriter.close();
+
+log.info( "soap message with SAML assertion auth='"+outWriter.toString()+"'"
)
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// replace request soap message (groovy)
+
+request_groovy.setValue( outWriter.toString() )
+
+//
+]]></script></con:config></con:testStep><con:testStep type="groovy"
name="AlterSecurityTokenSAMLAssertion_digest2"
id="f3d4dccb-c13c-4c3a-b1a7-b08b9317dd9e"><con:settings/><con:config><script><![CDATA[
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// necesasry java imports
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+
+//import java.security.Provider;
+//import java.security.KeyFactory;
+//import java.security.PrivateKey;
+//import java.security.cert.X509Certificate;
+//import java.security.spec.PKCS8EncodedKeySpec;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.message.SOAPEnvelope;
+import org.apache.axis.utils.XMLUtils;
+
+//import org.bouncycastle.jce.provider.BouncyCastleProvider;
+
+//import org.perfsonar.base.auxiliary.components.authn.DynamicCrypto;
+import org.perfsonar.client.base.authn.AuthNDataFactory;
+//import org.perfsonar.client.base.authn.AuthNData
+import org.perfsonar.client.base.authn.AuthNX509Data;
+import org.perfsonar.client.base.authn.WSSAuthNX509Data;
+
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// get current request soap message (groovy)
+
+// get request property
+def test_case = testRunner.testCase.getTestStepByName( "AuthNEE" );
+def request_groovy = test_case.getProperty( "request" );
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// extract soap body contents of soap message (java)
+
+DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+factory.setNamespaceAware(true);
+DocumentBuilder builder = factory.newDocumentBuilder();
+InputStream is = new ByteArrayInputStream(request_groovy.value.getBytes());
+request = builder.parse(is);
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// alter first digest
+
+org.w3c.dom.NodeList nodeList =
request.getElementsByTagName("ds:DigestValue");
+// first digest appearing
+//Node digest = nodeList.item(0);
+// second digest appearing
+Node digest = nodeList.item(1);
+String data = digest.getFirstChild().getNodeValue();
+digest.getFirstChild().setNodeValue("AA"+data.substring(2));
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// soap body -> xml formatted string (java + some variable references for
groovy)
+
+def StringWriter outWriter = new java.io.StringWriter();
+XMLUtils.ElementToWriter(request.getDocumentElement(), outWriter);
+outWriter.close();
+
+log.info( "altered soap message='"+outWriter.toString()+"'" )
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// replace request soap message (groovy)
+
+request_groovy.setValue( outWriter.toString() )
+
+//
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+]]></script></con:config></con:testStep><con:testStep type="delay"
name="DelayBecauseOfTimestampProblem"
id="4032732d-bf68-4ad7-a3d4-6e7496ecbe65"><con:settings/><con:config><delay>1000</delay></con:config></con:testStep><con:testStep
type="request" name="AuthNEE"
id="6096575f-d6d3-4faa-9fda-0f89b0bde39b"><con:settings/><con:config
xsi:type="con:RequestStep"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><con:interface>AuthNEEBinding</con:interface><con:operation>AuthNEE</con:operation><con:request

name="AuthNEE"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://mdm-4.par.fr.geant2.net:8080/geant2_java-as/services/AuthService</con:endpoint><con:request><![CDATA[<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><soapenv:Header/><soapenv:Body><nmwg:message
id="authNMessage1" type="AuthNEERequest" xmlns:nmwg="http://ggf.org/ns/n
mwg/base/2.0/">
+ <nmwg:metadata id="authNMetadata">
+ <nmwg:parameters id="keys">
+ <nmwg:parameter
name="SecurityToken">http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1</nmwg:parameter>
+ </nmwg:parameters>
+ </nmwg:metadata>
+ <nmwg:data id="authN1" metadataIdRef="authNMetadata"/>
+</nmwg:message></soapenv:Body></soapenv:Envelope>]]></con:request><con:assertion
type="Schema Compliance" disabled="true"
id="cb8b53b2-ac84-440f-a0d6-741a9910fd94"><con:configuration><definition/></con:configuration></con:assertion><con:assertion
type="XQuery Match"
id="ff604576-a8f8-40f1-a30a-53a9d59880df"><con:configuration><path>declare
namespace soapenv='http://schemas.xmlsoap.org/soap/envelope/';
+declare namespace nmwg='http://ggf.org/ns/nmwg/base/2.0/';
+
+&lt;items>
+{
+ for $z in
//soapenv:Envelope/soapenv:Body/nmwg:message/nmwg:metadata/nmwg:eventType/text()
+ order by $z
+ return &lt;id>{data($z)}&lt;/id>
+}
+&lt;/items></path><content>&lt;items>
+&lt;id>error.authn.wssec&lt;/id>
+&lt;/items></content><allowWildcards>false</allowWildcards></con:configuration></con:assertion><con:wssConfig/></con:request></con:config></con:testStep><con:testStep
type="groovy" name="UnsignRequestMessage"
id="6b532c9e-001d-414d-a7e8-f479f1056f6c"><con:settings/><con:config><script><![CDATA[
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.message.SOAPEnvelope;
+import org.apache.axis.utils.XMLUtils;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Node;
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// get request soap message (groovy)
+
+// get request property
+def test_case = testRunner.testCase.getTestStepByName( "AuthNEE" );
+//log.info("a $test_case")
+def request_groovy = test_case.getProperty( "request" );
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+factory.setNamespaceAware(true);
+DocumentBuilder builder = factory.newDocumentBuilder();
+InputStream is = new ByteArrayInputStream(request_groovy.value.getBytes());
+request = builder.parse(is);
+
+org.w3c.dom.NodeList nodeList1 =
request.getElementsByTagName("soapenv:Header");
+Node soap_header = nodeList1.item(0);
+log.info("debug:"+soap_header);
+
+if (soap_header != null) {
+org.w3c.dom.NodeList nodeList2 =
soap_header.getElementsByTagName("wsse:Security");
+Node wsse_node = nodeList2.item(0);
+log.info("debug:"+wsse_node);
+ if (wsse_node != null) {
+ soap_header.removeChild(wsse_node);
+}
+}
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// soap message -> xml formatted string (java + some groovy)
+
+def StringWriter outWriter = new java.io.StringWriter();
+XMLUtils.ElementToWriter(request.getDocumentElement(), outWriter);
+outWriter.close();
+
+log.info( "unsigned soap message='"+outWriter.toString()+"'" )
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// replace request soap message (groovy)
+
+request_groovy.setValue( outWriter.toString() )
+
+//
+
+]]></script></con:config></con:testStep><con:properties/></con:testCase><con:testCase
failOnError="true" failTestCaseOnErrors="true" keepSession="false"
name="Faulty AuthNEE SAML Assertion / signature" searchProperties="true"
id="bd86eb47-9e73-463b-9bed-ac14575a0e2b"><con:settings/><con:testStep
type="groovy" name="AddSAMLAssertionToRequestMessage"
id="6c422e1b-a40d-42e3-bf8f-a08d31424fde"><con:settings/><con:config><script><![CDATA[
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.message.SOAPEnvelope;
+import org.apache.axis.utils.XMLUtils;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Node;
+
+import java.io.FileInputStream;
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+factory.setNamespaceAware(true);
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+// get copy pasted string of SAML assertion auth template xml
+
+DocumentBuilder builder1 = factory.newDocumentBuilder();
+String saml_assertion_auth_xml_filename="/cert/saml-auth-template.xml";
+FileInputStream is1 = new FileInputStream(saml_assertion_auth_xml_filename);
+Document saml_assertion_auth_xml = builder1.parse(is1);
+
+org.w3c.dom.NodeList nodeList01 =
saml_assertion_auth_xml.getElementsByTagName("soapenv:Header");
+Node soap_header0 = nodeList01.item(0);
+log.info("debug:"+soap_header0);
+
+Node wsse_node0 = null;
+if (soap_header0 != null) {
+ org.w3c.dom.NodeList nodeList02 =
soap_header0.getElementsByTagName("wsse:Security");
+ wsse_node0 = nodeList02.item(0);
+}
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// get request soap message (groovy)
+
+// get request property
+def test_case = testRunner.testCase.getTestStepByName( "AuthNEE" );
+//log.info("a $test_case")
+def request_groovy = test_case.getProperty( "request" );
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+DocumentBuilder builder = factory.newDocumentBuilder();
+InputStream is = new ByteArrayInputStream(request_groovy.value.getBytes());
+request = builder.parse(is);
+
+org.w3c.dom.NodeList nodeList1 =
request.getElementsByTagName("soapenv:Header");
+Node soap_header = nodeList1.item(0);
+log.info("debug:"+soap_header);
+if (soap_header != null) {
+ org.w3c.dom.NodeList nodeList2 =
soap_header.getElementsByTagName("wsse:Security");
+ Node wsse_node = nodeList2.item(0);
+ log.info("debug:"+wsse_node);
+ if (wsse_node != null) {
+ soap_header.removeChild(wsse_node);
+ }
+}
+
+Node newNode = wsse_node0.cloneNode(true);
+request.adoptNode(newNode);
+soap_header.appendChild(newNode);
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// soap message -> xml formatted string (java + some groovy)
+
+def StringWriter outWriter = new java.io.StringWriter();
+//XMLUtils.ElementToWriter(request.getDocumentElement(), outWriter);
+XMLUtils.ElementToWriter(saml_assertion_auth_xml.getDocumentElement(),
outWriter);
+
+outWriter.close();
+
+log.info( "soap message with SAML assertion auth='"+outWriter.toString()+"'"
)
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// replace request soap message (groovy)
+
+request_groovy.setValue( outWriter.toString() )
+
+//
+]]></script></con:config></con:testStep><con:testStep type="groovy"
name="AlterSecurityTokenSAMLAssertion_signature"
id="f3d4dccb-c13c-4c3a-b1a7-b08b9317dd9e"><con:settings/><con:config><script><![CDATA[
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// necesasry java imports
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+
+//import java.security.Provider;
+//import java.security.KeyFactory;
+//import java.security.PrivateKey;
+//import java.security.cert.X509Certificate;
+//import java.security.spec.PKCS8EncodedKeySpec;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.message.SOAPEnvelope;
+import org.apache.axis.utils.XMLUtils;
+
+//import org.bouncycastle.jce.provider.BouncyCastleProvider;
+
+//import org.perfsonar.base.auxiliary.components.authn.DynamicCrypto;
+import org.perfsonar.client.base.authn.AuthNDataFactory;
+//import org.perfsonar.client.base.authn.AuthNData
+import org.perfsonar.client.base.authn.AuthNX509Data;
+import org.perfsonar.client.base.authn.WSSAuthNX509Data;
+
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// get current request soap message (groovy)
+
+// get request property
+def test_case = testRunner.testCase.getTestStepByName( "AuthNEE" );
+def request_groovy = test_case.getProperty( "request" );
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// extract soap body contents of soap message (java)
+
+DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+factory.setNamespaceAware(true);
+DocumentBuilder builder = factory.newDocumentBuilder();
+InputStream is = new ByteArrayInputStream(request_groovy.value.getBytes());
+request = builder.parse(is);
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// alter first digest
+
+org.w3c.dom.NodeList nodeList =
request.getElementsByTagName("ds:SignatureValue");
+Node signature = nodeList.item(0);
+String data = signature.getFirstChild().getNodeValue();
+signature.getFirstChild().setNodeValue("AA"+data.substring(2));
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// soap body -> xml formatted string (java + some variable references for
groovy)
+
+def StringWriter outWriter = new java.io.StringWriter();
+XMLUtils.ElementToWriter(request.getDocumentElement(), outWriter);
+outWriter.close();
+
+log.info( "altered soap message='"+outWriter.toString()+"'" )
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// replace request soap message (groovy)
+
+request_groovy.setValue( outWriter.toString() )
+
+//
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+]]></script></con:config></con:testStep><con:testStep type="delay"
name="DelayBecauseOfTimestampProblem"
id="4032732d-bf68-4ad7-a3d4-6e7496ecbe65"><con:settings/><con:config><delay>1000</delay></con:config></con:testStep><con:testStep
type="request" name="AuthNEE"
id="6096575f-d6d3-4faa-9fda-0f89b0bde39b"><con:settings/><con:config
xsi:type="con:RequestStep"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><con:interface>AuthNEEBinding</con:interface><con:operation>AuthNEE</con:operation><con:request

name="AuthNEE"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://mdm-4.par.fr.geant2.net:8080/geant2_java-as/services/AuthService</con:endpoint><con:request><![CDATA[<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><soapenv:Header/><soapenv:Body><nmwg:message
id="authNMessage1" type="AuthNEERequest" xmlns:nmwg="http://ggf.org/ns/n
mwg/base/2.0/">
+ <nmwg:metadata id="authNMetadata">
+ <nmwg:parameters id="keys">
+ <nmwg:parameter
name="SecurityToken">http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1</nmwg:parameter>
+ </nmwg:parameters>
+ </nmwg:metadata>
+ <nmwg:data id="authN1" metadataIdRef="authNMetadata"/>
+</nmwg:message></soapenv:Body></soapenv:Envelope>]]></con:request><con:assertion
type="Schema Compliance" disabled="true"
id="cb8b53b2-ac84-440f-a0d6-741a9910fd94"><con:configuration><definition/></con:configuration></con:assertion><con:assertion
type="XQuery Match"
id="ff604576-a8f8-40f1-a30a-53a9d59880df"><con:configuration><path>declare
namespace soapenv='http://schemas.xmlsoap.org/soap/envelope/';
+declare namespace nmwg='http://ggf.org/ns/nmwg/base/2.0/';
+
+&lt;items>
+{
+ for $z in
//soapenv:Envelope/soapenv:Body/nmwg:message/nmwg:metadata/nmwg:eventType/text()
+ order by $z
+ return &lt;id>{data($z)}&lt;/id>
+}
+&lt;/items></path><content>&lt;items>
+&lt;id>error.authn.wssec&lt;/id>
+&lt;/items></content><allowWildcards>false</allowWildcards></con:configuration></con:assertion><con:wssConfig/></con:request></con:config></con:testStep><con:testStep
type="groovy" name="UnsignRequestMessage"
id="6b532c9e-001d-414d-a7e8-f479f1056f6c"><con:settings/><con:config><script><![CDATA[
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.message.SOAPEnvelope;
+import org.apache.axis.utils.XMLUtils;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Node;
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// get request soap message (groovy)
+
+// get request property
+def test_case = testRunner.testCase.getTestStepByName( "AuthNEE" );
+//log.info("a $test_case")
+def request_groovy = test_case.getProperty( "request" );
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+factory.setNamespaceAware(true);
+DocumentBuilder builder = factory.newDocumentBuilder();
+InputStream is = new ByteArrayInputStream(request_groovy.value.getBytes());
+request = builder.parse(is);
+
+org.w3c.dom.NodeList nodeList1 =
request.getElementsByTagName("soapenv:Header");
+Node soap_header = nodeList1.item(0);
+log.info("debug:"+soap_header);
+
+if (soap_header != null) {
+org.w3c.dom.NodeList nodeList2 =
soap_header.getElementsByTagName("wsse:Security");
+Node wsse_node = nodeList2.item(0);
+log.info("debug:"+wsse_node);
+ if (wsse_node != null) {
+ soap_header.removeChild(wsse_node);
+}
+}
+
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// soap message -> xml formatted string (java + some groovy)
+
+def StringWriter outWriter = new java.io.StringWriter();
+XMLUtils.ElementToWriter(request.getDocumentElement(), outWriter);
+outWriter.close();
+
+log.info( "unsigned soap message='"+outWriter.toString()+"'" )
+
+//
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+// replace request soap message (groovy)
+
+request_groovy.setValue( outWriter.toString() )
+
+//
+

]]></script></con:config></con:testStep><con:properties/></con:testCase><con:properties/></con:testSuite><con:testSuite
name="EchoRequest for AS"
id="c8ce7572-b4f5-4889-abc9-a5f0abfb1944"><con:settings/><con:runType>SEQUENTIAL</con:runType><con:testCase
failOnError="true" failTestCaseOnErrors="true" keepSession="false"
name="Valid and well formed requests" searchProperties="true"
id="a193e98c-b28d-4ead-9a22-2f450e0e081c"><con:settings/><con:testStep
type="request" name="Echo"
id="4f6ce581-7f89-47da-bd29-6f729b609c1a"><con:settings/><con:config
xsi:type="con:RequestStep"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><con:interface>EchoRequest</con:interface><con:operation>Echo</con:operation><con:request

name="Echo"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://homer.rediris.es:8080/perfSONAR-AS/services/AuthService</con:endpoint><con:request><![CDATA[<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:ns="http://g
gf.org/ns/nmwg/base/2.0/">
<soapenv:Header/>
<soapenv:Body>



  • perfsonar: r3699 - trunk/functional-testing/aa-test, svnlog, 04/16/2008

Archive powered by MHonArc 2.6.16.

Top of Page