Author: coheigea
Date: Fri May  6 16:28:42 2011
New Revision: 1100270

URL: http://svn.apache.org/viewvc?rev=1100270&view=rev
Log:
Skip policy checking for SIGNED_PARTS and ENCRYPTED_PARTS when using the 
Transport Binding

Modified:
    
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/PolicyBasedWSS4JInInterceptor.java

Modified: 
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/PolicyBasedWSS4JInInterceptor.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/PolicyBasedWSS4JInInterceptor.java?rev=1100270&r1=1100269&r2=1100270&view=diff
==============================================================================
--- 
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/PolicyBasedWSS4JInInterceptor.java
 (original)
+++ 
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/PolicyBasedWSS4JInInterceptor.java
 Fri May  6 16:28:42 2011
@@ -604,10 +604,18 @@ public class PolicyBasedWSS4JInIntercept
         
         CryptoCoverageUtil.reconcileEncryptedSignedRefs(signed, encrypted);
         
-        assertTokens(aim, SP12Constants.SIGNED_PARTS, signed, msg, soapHeader, 
soapBody, CoverageType.SIGNED);
-        assertTokens(
-            aim, SP12Constants.ENCRYPTED_PARTS, encrypted, msg, soapHeader, 
soapBody, CoverageType.ENCRYPTED
-        );
+        //
+        // SIGNED_PARTS and ENCRYPTED_PARTS only apply to non-Transport 
bindings
+        //
+        if (!isTransportBinding(aim)) {
+            assertTokens(
+                aim, SP12Constants.SIGNED_PARTS, signed, msg, soapHeader, 
soapBody, CoverageType.SIGNED
+            );
+            assertTokens(
+                aim, SP12Constants.ENCRYPTED_PARTS, encrypted, msg, 
soapHeader, soapBody, 
+                CoverageType.ENCRYPTED
+            );
+        }
         Element soapEnvelope = 
soapHeader.getOwnerDocument().getDocumentElement();
         assertXPathTokens(aim, SP12Constants.SIGNED_ELEMENTS, signed, msg, 
soapEnvelope,
                 CoverageType.SIGNED, CoverageScope.ELEMENT);
@@ -780,5 +788,21 @@ public class PolicyBasedWSS4JInIntercept
         assertPolicy(aim, SP12Constants.SIGNED_PARTS);
         return true;
     }
+    
+    private boolean isTransportBinding(AssertionInfoMap aim) {
+        Collection<AssertionInfo> ais = 
aim.get(SP12Constants.TRANSPORT_BINDING);
+        if (ais != null && ais.size() > 0) {
+            ais = aim.get(SP12Constants.SYMMETRIC_BINDING);
+            if (ais != null && ais.size() > 0) {
+                return false;
+            }
+            ais = aim.get(SP12Constants.ASYMMETRIC_BINDING);
+            if (ais != null && ais.size() > 0) {
+                return false;
+            }
+            return true;
+        }
+        return false;
+    }
 
 }


Reply via email to