You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by co...@apache.org on 2014/01/14 17:12:50 UTC

svn commit: r1558092 - in /cxf/trunk: rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/ systests/ws-security/src/test/java/org/apache/cxf/systest/ws/bindings/

Author: coheigea
Date: Tue Jan 14 16:12:50 2014
New Revision: 1558092

URL: http://svn.apache.org/r1558092
Log:
Added support for LaxTsFirst policies for the DOM code

Modified:
    cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AbstractBindingBuilder.java
    cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AsymmetricBindingHandler.java
    cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/SymmetricBindingHandler.java
    cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/bindings/BindingPropertiesTest.java

Modified: cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AbstractBindingBuilder.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AbstractBindingBuilder.java?rev=1558092&r1=1558091&r2=1558092&view=diff
==============================================================================
--- cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AbstractBindingBuilder.java (original)
+++ cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AbstractBindingBuilder.java Tue Jan 14 16:12:50 2014
@@ -50,6 +50,7 @@ import javax.xml.xpath.XPathFactory;
 import org.w3c.dom.Attr;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
+import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 import org.apache.cxf.Bus;
 import org.apache.cxf.binding.soap.SoapMessage;
@@ -364,6 +365,25 @@ public abstract class AbstractBindingBui
         return timestamp;
     }
     
+    protected void reshuffleTimestamp() {
+        // Make sure that the Timestamp is in first place, if that is what the policy requires
+        if (binding.getLayout() != null && timestampEl != null) {
+            if (binding.getLayout().getLayoutType() == LayoutType.LaxTsFirst
+                && secHeader.getSecurityHeader().getFirstChild() != timestampEl.getElement()) {
+                Node firstChild = secHeader.getSecurityHeader().getFirstChild();
+                while (firstChild != null && firstChild.getNodeType() != Node.ELEMENT_NODE) {
+                    firstChild = firstChild.getNextSibling();
+                }
+                if (firstChild != null && firstChild != timestampEl.getElement()) {
+                    secHeader.getSecurityHeader().insertBefore(timestampEl.getElement(), firstChild);
+                }
+            } else if (binding.getLayout().getLayoutType() == LayoutType.LaxTsLast
+                && secHeader.getSecurityHeader().getLastChild() != timestampEl.getElement()) {
+                secHeader.getSecurityHeader().appendChild(timestampEl.getElement());
+            } 
+        }
+    }
+    
     private List<SupportingToken> handleSupportingTokens(
         Collection<AssertionInfo> tokensInfos, 
         boolean endorse

Modified: cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AsymmetricBindingHandler.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AsymmetricBindingHandler.java?rev=1558092&r1=1558091&r2=1558092&view=diff
==============================================================================
--- cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AsymmetricBindingHandler.java (original)
+++ cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AsymmetricBindingHandler.java Tue Jan 14 16:12:50 2014
@@ -110,6 +110,7 @@ public class AsymmetricBindingHandler ex
             assertPolicy(
                 new QName(abinding.getName().getNamespaceURI(), SPConstants.SIGN_BEFORE_ENCRYPTING));
         }
+        reshuffleTimestamp();
         
         assertAlgorithmSuite(abinding.getAlgorithmSuite());
         assertWSSProperties(abinding.getName().getNamespaceURI());

Modified: cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/SymmetricBindingHandler.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/SymmetricBindingHandler.java?rev=1558092&r1=1558091&r2=1558092&view=diff
==============================================================================
--- cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/SymmetricBindingHandler.java (original)
+++ cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/SymmetricBindingHandler.java Tue Jan 14 16:12:50 2014
@@ -126,6 +126,7 @@ public class SymmetricBindingHandler ext
             assertPolicy(
                 new QName(sbinding.getName().getNamespaceURI(), SPConstants.SIGN_BEFORE_ENCRYPTING));
         }
+        reshuffleTimestamp();
         
         assertAlgorithmSuite(sbinding.getAlgorithmSuite());
         assertWSSProperties(sbinding.getName().getNamespaceURI());

Modified: cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/bindings/BindingPropertiesTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/bindings/BindingPropertiesTest.java?rev=1558092&r1=1558091&r2=1558092&view=diff
==============================================================================
--- cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/bindings/BindingPropertiesTest.java (original)
+++ cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/bindings/BindingPropertiesTest.java Tue Jan 14 16:12:50 2014
@@ -338,9 +338,8 @@ public class BindingPropertiesTest exten
             SecurityTestUtil.enableStreaming(port);
         }
         
-        // TODO It's not sending the Timestamp "first" correctly - DOM
         // TODO Timestamp First/Last validation not working - see WSS-444
-        if (test.isStreaming() && !STAX_PORT.equals(test.getPort())) {
+        if (!STAX_PORT.equals(test.getPort())) {
             port.doubleIt(25);
         }
         
@@ -354,15 +353,14 @@ public class BindingPropertiesTest exten
         }
         
         try {
-            // TODO DOM not working as above
             // TODO Timestamp First/Last validation not working - see WSS-444
-            if (test.isStreaming() && !STAX_PORT.equals(test.getPort())) {
+            if (!STAX_PORT.equals(test.getPort())) {
                 port.doubleIt(25);
                 fail("Failure expected on on sending the timestamp last");
             }
         } catch (javax.xml.ws.soap.SOAPFaultException ex) {
-            // String error = "Layout does not match the requirements";
-            // assertTrue(ex.getMessage().contains(error));
+            String error = "Layout does not match the requirements";
+            assertTrue(ex.getMessage().contains(error));
         }
         
         ((java.io.Closeable)port).close();