You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ru...@apache.org on 2005/09/08 13:02:25 UTC

svn commit: r279554 - in /webservices/axis2/trunk/java/modules: integration/ integration/test-resources/security/ integration/test/org/apache/axis2/security/ security/interop/org/apache/axis2/security/ xml/src/org/apache/axis2/om/impl/llom/

Author: ruchithf
Date: Thu Sep  8 04:01:58 2005
New Revision: 279554

URL: http://svn.apache.org/viewcvs?rev=279554&view=rev
Log:
Test case added to test Signed addressing headers and encrypted body with AES128 and MOTOM optimized the cipher value, and fixed OMTextImpl to handle base64 correctly (a problem was discoved coz decryption didn't work)

Added:
    webservices/axis2/trunk/java/modules/integration/test-resources/security/complete.client.axis2.xml
    webservices/axis2/trunk/java/modules/integration/test-resources/security/complete.service.axis2.xml
    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/security/AddressingMTOMSecurityTest.java
Modified:
    webservices/axis2/trunk/java/modules/integration/maven.xml
    webservices/axis2/trunk/java/modules/integration/test-resources/security/secMtom.client.axis2.xml
    webservices/axis2/trunk/java/modules/integration/test-resources/security/secMtom.service.axis2.xml
    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/security/InteropTestBase.java
    webservices/axis2/trunk/java/modules/security/interop/org/apache/axis2/security/InteropScenarioClient.java
    webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMTextImpl.java

Modified: webservices/axis2/trunk/java/modules/integration/maven.xml
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/integration/maven.xml?rev=279554&r1=279553&r2=279554&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/maven.xml (original)
+++ webservices/axis2/trunk/java/modules/integration/maven.xml Thu Sep  8 04:01:58 2005
@@ -311,6 +311,32 @@
             tofile="target/test-resources/mtom_sec_service_repo/modules/security.mar"/>
         <copy file="../security/target/PingPort.aar"
             tofile="target/test-resources/mtom_sec_service_repo/services/PingPort.aar"/>
+
+	<!-- Test with addressing and MTOM  -->
+        <mkdir dir="target/test-resources/complete_client_repo"/>
+        <mkdir dir="target/test-resources/complete_client_repo/modules"/>
+
+        <mkdir dir="target/test-resources/complete_service_repo"/>
+        <mkdir dir="target/test-resources/complete_service_repo/services"/>
+        <mkdir dir="target/test-resources/complete_service_repo/modules"/>
+
+	<!-- Test with addressing and MTOM client repository-->
+        <copy file="test-resources/security/complete.client.axis2.xml"
+            tofile="target/test-resources/complete_client_repo/axis2.xml"/>
+        <copy file="../security/target/security.mar"
+            tofile="target/test-resources/complete_client_repo/modules/security.mar"/>
+        <copy file="../addressing/target/addressing.mar"
+            tofile="target/test-resources/complete_client_repo/modules/addressing.mar"/>
+
+	<!-- Test with addressing and MTOMservice repository-->
+        <copy file="test-resources/security/complete.service.axis2.xml"
+            tofile="target/test-resources/complete_service_repo/axis2.xml"/>
+        <copy file="../security/target/security.mar"
+            tofile="target/test-resources/complete_service_repo/modules/security.mar"/>
+        <copy file="../security/target/PingPort.aar"
+            tofile="target/test-resources/complete_service_repo/services/PingPort.aar"/>
+        <copy file="../addressing/target/addressing.mar"
+            tofile="target/test-resources/complete_service_repo/modules/addressing.mar"/>
 
     <!-- Standard repository -->
     <mkdir dir="target/Repository"/>

Added: webservices/axis2/trunk/java/modules/integration/test-resources/security/complete.client.axis2.xml
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/integration/test-resources/security/complete.client.axis2.xml?rev=279554&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test-resources/security/complete.client.axis2.xml (added)
+++ webservices/axis2/trunk/java/modules/integration/test-resources/security/complete.client.axis2.xml Thu Sep  8 04:01:58 2005
@@ -0,0 +1,72 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <module ref="addressing"/>
+
+    <!-- Engage the security module -->
+    <module ref="security"/>
+
+    <!-- This is only till we get the service specific parameters fixed in service.xml -->
+    <!-- Also we can switch back to hte normal parameter names when we can seperately assign them to the flows -->
+
+    <!-- Test with addressing and MTOM: Client's Configuration:START-->
+
+    <parameter name="OutAction" locked="false">Timestamp Signature Encrypt</parameter>
+    <parameter name="user" locked="false">alice</parameter>
+    <parameter name="OutPasswordCallbackClass" locked="false">org.apache.axis2.security.PWCallback</parameter>
+    <parameter name="OutSignaturePropFile" locked="false">interop.properties</parameter>
+    <parameter name="OutSignatureKeyIdentifier" locked="false">DirectReference</parameter>
+    <parameter name="encryptionKeyIdentifier" locked="false">SKIKeyIdentifier</parameter>
+    <parameter name="encryptionUser" locked="false">bob</parameter>
+    <parameter name="encryptionSymAlgorithm" locked="false">http://www.w3.org/2001/04/xmlenc#aes128-cbc</parameter>
+    <parameter name="OutSignatureParts" locked="false">{Element}{http://schemas.xmlsoap.org/ws/2004/08/addressing}To;{Element}{http://schemas.xmlsoap.org/ws/2004/08/addressing}ReplyTo;{Element}{http://schemas.xmlsoap.org/ws/2004/08/addressing}MessageID</parameter>
+
+
+    <parameter name="optimizeParts" locked="false">//xenc:EncryptedData/xenc:CipherData/xenc:CipherValue</parameter>
+
+    <parameter name="InAction" locked="false">Timestamp Signature Encrypt</parameter>
+    <parameter name="InPasswordCallbackClass" locked="false">org.apache.axis2.security.PWCallback</parameter>
+    <parameter name="InSignaturePropFile" locked="false">interop.properties</parameter>
+
+    <parameter name="InSignaturePropFile" locked="false">interop.properties</parameter>
+
+    <!-- Test with addressing and MTOM: Client's Configuration:END-->
+
+
+    <transportReceiver name="http">
+    </transportReceiver>
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+
+
+    
+    <phaseOrder type="inflow">
+        <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch"/>
+        <phase name="PostDispatch"/>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="outflow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <!--        This is temporray solution will be change soon-->
+        <phase name="security"/>
+    </phaseOrder>
+    <phaseOrder type="INfaultflow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="Outfaultflow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+</axisconfig>
+

Added: webservices/axis2/trunk/java/modules/integration/test-resources/security/complete.service.axis2.xml
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/integration/test-resources/security/complete.service.axis2.xml?rev=279554&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test-resources/security/complete.service.axis2.xml (added)
+++ webservices/axis2/trunk/java/modules/integration/test-resources/security/complete.service.axis2.xml Thu Sep  8 04:01:58 2005
@@ -0,0 +1,103 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <module ref="addressing"/>
+
+    <!-- Engage the security module -->
+    <module ref="security"/>
+
+    <!-- This is only till we get the service specific parameters fixed in service.xml -->
+
+    <!-- Test with addressing and MTOM: Service's Configuration: START-->
+    <!-- Also we can switch back to hte normal parameter names when we can seperately assign them to the flows -->
+
+    <parameter name="InAction" locked="false">Timestamp Signature Encrypt</parameter>
+    <parameter name="InPasswordCallbackClass" locked="false">org.apache.axis2.security.PWCallback</parameter>
+    <parameter name="InSignaturePropFile" locked="false">interop.properties</parameter>
+
+    <parameter name="OutAction" locked="false">Timestamp Signature Encrypt</parameter>
+    <parameter name="user" locked="false">bob</parameter>
+    <parameter name="OutPasswordCallbackClass" locked="false">org.apache.axis2.security.PWCallback</parameter>
+    <parameter name="OutSignaturePropFile" locked="false">interop.properties</parameter>
+    <parameter name="OutSignatureKeyIdentifier" locked="false">DirectReference</parameter>
+    <parameter name="encryptionKeyIdentifier" locked="false">SKIKeyIdentifier</parameter>
+    <parameter name="encryptionUser" locked="false">alice</parameter>
+    <parameter name="encryptionSymAlgorithm" locked="false">http://www.w3.org/2001/04/xmlenc#aes128-cbc</parameter>
+    <parameter name="OutSignatureParts" locked="false">{}{http://schemas.xmlsoap.org/ws/2004/08/addressing}To</parameter>
+
+    <parameter name="optimizeParts" locked="false">//xenc:EncryptedData/xenc:CipherData/xenc:CipherValue</parameter>
+
+    <!-- Test with addressing and MTOM: Service's Configuration: END-->
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+      </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+    <transportSender name="https" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+   </transportSender>
+   -->
+
+    
+    <phaseOrder type="inflow">
+        <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch"/>
+        <phase name="PostDispatch"/>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="outflow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <!--        This is temporray solution will be change soon-->
+        <phase name="security"/>
+    </phaseOrder>
+    <phaseOrder type="INfaultflow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="Outfaultflow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+</axisconfig>
+

Modified: webservices/axis2/trunk/java/modules/integration/test-resources/security/secMtom.client.axis2.xml
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/integration/test-resources/security/secMtom.client.axis2.xml?rev=279554&r1=279553&r2=279554&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test-resources/security/secMtom.client.axis2.xml (original)
+++ webservices/axis2/trunk/java/modules/integration/test-resources/security/secMtom.client.axis2.xml Thu Sep  8 04:01:58 2005
@@ -10,7 +10,7 @@
     <!-- This is only till we get the service specific parameters fixed in service.xml -->
     <!-- Also we can switch back to hte normal parameter names when we can seperately assign them to the flows -->
 
-    <!-- Scenario 3: Client's Configuration:START-->
+    <!-- Scenario 3 with MTOM: Client's Configuration:START-->
 
     <parameter name="OutAction" locked="false">Signature Encrypt Timestamp</parameter>
     <parameter name="user" locked="false">alice</parameter>
@@ -29,7 +29,7 @@
 
     <parameter name="optimizeParts" locked="false">//xenc:EncryptedData/xenc:CipherData/xenc:CipherValue</parameter>
 
-    <!-- Scenario 3: Client's Configuration:END-->
+    <!-- Scenario 3 with MTOM: Client's Configuration:END-->
 
 
     <transportReceiver name="http">

Modified: webservices/axis2/trunk/java/modules/integration/test-resources/security/secMtom.service.axis2.xml
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/integration/test-resources/security/secMtom.service.axis2.xml?rev=279554&r1=279553&r2=279554&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test-resources/security/secMtom.service.axis2.xml (original)
+++ webservices/axis2/trunk/java/modules/integration/test-resources/security/secMtom.service.axis2.xml Thu Sep  8 04:01:58 2005
@@ -9,7 +9,7 @@
 
     <!-- This is only till we get the service specific parameters fixed in service.xml -->
 
-    <!-- Scenario 3: Service's Configuration: START-->
+    <!-- Scenario 3 with MTOM: Service's Configuration: START-->
     <!-- Also we can switch back to hte normal parameter names when we can seperately assign them to the flows -->
 
     <parameter name="InAction" locked="false">Signature Encrypt Timestamp</parameter>
@@ -26,7 +26,7 @@
 
     <parameter name="optimizeParts" locked="false">//xenc:EncryptedData/xenc:CipherData/xenc:CipherValue</parameter>
 
-    <!-- Scenario 3: Service's Configuration: END-->
+    <!-- Scenario 3 with MTOM: Service's Configuration: END-->
 
     <!-- ================================================= -->
     <!-- Transport Ins -->

Added: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/security/AddressingMTOMSecurityTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/security/AddressingMTOMSecurityTest.java?rev=279554&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/security/AddressingMTOMSecurityTest.java (added)
+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/security/AddressingMTOMSecurityTest.java Thu Sep  8 04:01:58 2005
@@ -0,0 +1,9 @@
+package org.apache.axis2.security;
+
+public class AddressingMTOMSecurityTest extends InteropTestBase {
+	protected void setUp() throws Exception {
+		this.setClientRepo(COMPLETE_CLIENT_REPOSITORY);
+		this.setServiceRepo(COMPLETE_SERVICE_REPOSITORY);
+		super.setUp();
+	}
+}

Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/security/InteropTestBase.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/security/InteropTestBase.java?rev=279554&r1=279553&r2=279554&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/security/InteropTestBase.java (original)
+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/security/InteropTestBase.java Thu Sep  8 04:01:58 2005
@@ -74,6 +74,10 @@
     
     protected static final String MTOM_SEC_CLIENT_REPOSITORY = "mtom_sec_client_repo";
     
+    protected static final String COMPLETE_SERVICE_REPOSITORY = "complete_service_repo";
+    
+    protected static final String COMPLETE_CLIENT_REPOSITORY = "complete_client_repo";
+    
     /*
      * We have to create different a client repository and a service repository
      * for each scenarion since we dont have the support to get the parameter 

Modified: webservices/axis2/trunk/java/modules/security/interop/org/apache/axis2/security/InteropScenarioClient.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/security/interop/org/apache/axis2/security/InteropScenarioClient.java?rev=279554&r1=279553&r2=279554&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/security/interop/org/apache/axis2/security/InteropScenarioClient.java (original)
+++ webservices/axis2/trunk/java/modules/security/interop/org/apache/axis2/security/InteropScenarioClient.java Thu Sep  8 04:01:58 2005
@@ -48,6 +48,8 @@
 
 		PingPortStub stub = new PingPortStub(clientRepo,url);
 		
+		//Enable MTOM to those scenarios where they are configured using:
+		//<parameter name="optimizeParts" locked="false">xpathExpression</parameter>
 		stub._put(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
 		
 		PingResponseDocument pingResDoc = stub.Ping(pingDoc);

Modified: webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMTextImpl.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMTextImpl.java?rev=279554&r1=279553&r2=279554&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMTextImpl.java (original)
+++ webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMTextImpl.java Thu Sep  8 04:01:58 2005
@@ -15,20 +15,26 @@
  */
 package org.apache.axis2.om.impl.llom;
 
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.activation.DataHandler;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
 import org.apache.axis2.attachments.Base64;
 import org.apache.axis2.attachments.ByteArrayDataSource;
-import org.apache.axis2.attachments.utils.IOUtils;
-import org.apache.axis2.om.*;
+import org.apache.axis2.om.OMAttribute;
+import org.apache.axis2.om.OMConstants;
+import org.apache.axis2.om.OMElement;
+import org.apache.axis2.om.OMException;
+import org.apache.axis2.om.OMNamespace;
+import org.apache.axis2.om.OMText;
+import org.apache.axis2.om.OMXMLParserWrapper;
 import org.apache.axis2.om.impl.OMOutputImpl;
 import org.apache.axis2.om.impl.llom.mtom.MTOMStAXSOAPModelBuilder;
 import org.apache.axis2.util.UUIDGenerator;
 
-import javax.activation.DataHandler;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
-import java.io.IOException;
-import java.io.InputStream;
-
 public class OMTextImpl extends OMNodeImpl implements OMText, OMConstants {
     protected String value = null;
 
@@ -200,14 +206,15 @@
                 //int x = inStream.available();
                 byte[] data;
                 StringBuffer text = new StringBuffer();
-                // There are times, this inStream reports the Available bytes
-                // incorrectly.
-                // Reading the First byte & then getting the available number of
-                // bytes fixed it.
                 do {
-                    data = new byte[3];
-                    IOUtils.readFully(inStream, data, 0, 3);
-                    text.append(Base64.encode(data));
+                	data = new byte[1024];
+                	int len;
+                	while((len = inStream.read(data)) > 0) {
+                		byte[] temp = new byte[len];
+                		System.arraycopy(data,0,temp,0,len);
+                		text.append(Base64.encode(temp));
+                	}
+
                 } while (inStream.available() > 0);
                 return text.toString();
             } catch (Exception e) {