You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rampart-dev@ws.apache.org by na...@apache.org on 2008/01/10 11:10:23 UTC

svn commit: r610736 - in /webservices/rampart/trunk/java/modules: rampart-core/src/main/java/org/apache/rampart/ rampart-core/src/main/java/org/apache/rampart/builder/ rampart-core/src/main/java/org/apache/rampart/handler/ rampart-core/src/main/java/or...

Author: nandana
Date: Thu Jan 10 02:10:18 2008
New Revision: 610736

URL: http://svn.apache.org/viewvc?rev=610736&view=rev
Log:
Fixing issues RAMPART-131, RAMPART-125, RAMPART-90.

Modified:
    webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/MessageBuilder.java
    webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartConstants.java
    webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java
    webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/AsymmetricBindingBuilder.java
    webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/SymmetricBindingBuilder.java
    webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/handler/RampartReceiver.java
    webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyBuilder.java
    webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyData.java
    webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/conf/axis2.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/rampart/policy/1.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/rampart/services-1.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/complete.client.axis2.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/complete.service.axis2.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s1.client.axis2.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s1.service.axis2.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s2.client.axis2.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s2.service.axis2.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s2a.client.axis2.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s2a.service.axis2.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s3.client.axis2.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s3.service.axis2.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s4.client.axis2.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s4.service.axis2.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s5.client.axis2.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s5.service.axis2.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s6.client.axis2.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s6.service.axis2.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s7.client.axis2.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s7.service.axis2.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/sST1.client.axis2.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/sST1.service.axis2.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/secMtom.client.axis2.xml
    webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/secMtom.service.axis2.xml
    webservices/rampart/trunk/java/modules/rampart-mar/module.xml
    webservices/rampart/trunk/java/modules/rampart-samples/basic/sample09/client.axis2.xml
    webservices/rampart/trunk/java/modules/rampart-tests/test-resources/axis2.xml

Modified: webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/MessageBuilder.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/MessageBuilder.java?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/MessageBuilder.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/MessageBuilder.java Thu Jan 10 02:10:18 2008
@@ -42,9 +42,11 @@
 import org.apache.ws.secpolicy.WSSPolicyException;
 import org.apache.ws.security.WSSecurityException;
 import org.apache.ws.security.handler.WSHandlerConstants;
+import org.apache.ws.security.message.WSSecHeader;
 import org.apache.ws.security.message.token.SecurityContextToken;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
+import org.w3c.dom.Document;
 
 import javax.xml.namespace.QName;
 
@@ -61,7 +63,7 @@
         
         
         RampartPolicyData rpd = rmd.getPolicyData();
-        if(rpd == null) {
+        if(rpd == null || isSecurityValidationFault(msgCtx)) {
             return;
         }
         
@@ -136,6 +138,13 @@
             AsymmetricBindingBuilder builder = new AsymmetricBindingBuilder();
             builder.build(rmd);
         }
+       
+       Document doc = rmd.getDocument();
+       WSSecHeader secHeader = rmd.getSecHeader();
+       
+       if ( secHeader != null && secHeader.isEmpty(doc) ) {
+           secHeader.removeSecurityHeader(doc);
+       }
         
        /*
         * Checking whether MTOMSerializable is there. If so set optimizeElement.
@@ -148,5 +157,21 @@
         	}
         }
         
+    }
+    
+    private boolean isSecurityValidationFault(MessageContext msgCtx) throws AxisFault {
+        
+        OperationContext opCtx = msgCtx.getOperationContext();
+        MessageContext inMsgCtx;
+        if(opCtx != null && 
+                (inMsgCtx = opCtx.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE)) != null) {
+                 Boolean secErrorFlag = (Boolean) inMsgCtx.getProperty(RampartConstants.SEC_FAULT);
+                 
+                 if (secErrorFlag != null && secErrorFlag.equals(Boolean.TRUE)) {
+                     return true;
+                 }
+        }
+        
+        return false;
     }
 }

Modified: webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartConstants.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartConstants.java?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartConstants.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartConstants.java Thu Jan 10 02:10:18 2008
@@ -4,5 +4,6 @@
 		
 	public static final String TIME_LOG = "org.apache.rampart.TIME";
 	public static final String MESSAGE_LOG = "org.apache.rampart.MESSAGE";
+	public static final String SEC_FAULT = "SECURITY_VALIDATION_FAILURE";
 
 }

Modified: webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java Thu Jan 10 02:10:18 2008
@@ -17,9 +17,15 @@
 package org.apache.rampart;
 
 import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
 import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFault;
+import org.apache.axiom.soap.SOAPFaultCode;
+import org.apache.axiom.soap.SOAPFaultSubCode;
 import org.apache.axiom.soap.SOAPHeader;
 import org.apache.axiom.soap.SOAPHeaderBlock;
+import org.apache.axiom.soap.SOAPFaultValue;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.context.MessageContext;
 import org.apache.commons.logging.Log;
@@ -39,6 +45,7 @@
 import org.apache.ws.security.saml.SAMLUtil;
 import org.apache.ws.security.util.WSSecurityUtil;
 import org.opensaml.SAMLAssertion;
+import org.w3c.dom.Node;
 
 import javax.xml.namespace.QName;
 
@@ -64,12 +71,10 @@
 
 		RampartMessageData rmd = new RampartMessageData(msgCtx, false);
 
-		//If there is no policy information or if the message is a fault
+		//If there is no policy information or if the message is a security fault or no security
+		// header required by the policy
 		RampartPolicyData rpd = rmd.getPolicyData();
-		if(rpd == null || 
-				WSSecurityUtil.findElement(rmd.getDocument().getDocumentElement(), 
-						"Fault", 
-						rmd.getSoapConstants().getEnvelopeURI()) != null) {
+		if(rpd == null || isSecurityFault(rmd) || !RampartUtil.isSecHeaderRequired(rmd)) {
 			SOAPEnvelope env = Axis2Util.getSOAPEnvelopeFromDOMDocument(rmd.getDocument(), true);
 
 			//Convert back to llom since the inflow cannot use llom
@@ -93,7 +98,7 @@
 		    throw new RampartException("missingSOAPHeader");
 		}
 		
-        ArrayList headerBlocks = header.getHeaderBlocksWithNSURI(WSConstants.WSSE_NS);
+                ArrayList headerBlocks = header.getHeaderBlocksWithNSURI(WSConstants.WSSE_NS);
 		SOAPHeaderBlock secHeader = null;
 		//Issue is axiom - a returned collection must not be null
 		if(headerBlocks != null) {
@@ -207,6 +212,55 @@
 			log.debug("Return process(MessageContext msgCtx)");
 		}
 		return results;
+	}
+	
+	// Check whether this a soap fault because of failure in processing the security header 
+	//and if so, we don't expect the security header
+	//
+	//
+
+	
+	private boolean isSecurityFault(RampartMessageData rmd) {
+	    
+	    SOAPEnvelope soapEnvelope = rmd.getMsgContext().getEnvelope();    
+	    
+	    SOAPFault soapFault = soapEnvelope.getBody().getFault();
+            
+            // This is not a soap fault
+            if (soapFault == null) {
+                return false;
+            }
+            
+            String soapVersionURI =  rmd.getMsgContext().getEnvelope().getNamespace().getNamespaceURI();
+	   	    
+	    if (soapVersionURI.equals(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI) ) {
+	        
+	        SOAPFaultCode faultCode = soapFault.getCode();
+	        
+	        // This is a fault processing the security header 
+                if (faultCode.getTextAsQName().getNamespaceURI().equals(WSConstants.WSSE_NS)) {
+                   return true;
+                }
+	        
+	        	        
+	    } else if (soapVersionURI.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
+	        
+	        //TODO AXIOM API returns only one fault sub code, there can be many
+	        SOAPFaultSubCode faultSubCode = soapFault.getCode().getSubCode();
+	        
+	        if (faultSubCode != null) {
+        	        SOAPFaultValue faultSubCodeValue = faultSubCode.getValue();
+        	        
+        	        // This is a fault processing the security header 
+        	        if (faultSubCodeValue != null &&
+        	                faultSubCodeValue.getTextAsQName().getNamespaceURI().equals(WSConstants.WSSE_NS)) {
+        	           return true;
+        	        }
+	        }
+	        
+	    }
+	    
+	    return false;
 	}
 
 }

Modified: webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/AsymmetricBindingBuilder.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/AsymmetricBindingBuilder.java?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/AsymmetricBindingBuilder.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/AsymmetricBindingBuilder.java Thu Jan 10 02:10:18 2008
@@ -129,7 +129,11 @@
             encryptionToken = rpd.getInitiatorToken();
         }
         Vector encrParts = RampartUtil.getEncryptedParts(rmd);
-
+        
+        //Signed parts are determined before encryption because encrypted signed  headers
+        //will not be included otherwise
+        this.sigParts = RampartUtil.getSignedParts(rmd);
+        
         if(encryptionToken == null && encrParts.size() > 0) {
             throw new RampartException("encryptionTokenMissing");
         }
@@ -200,10 +204,11 @@
             
             this.setInsertionLocation(encrTokenElement);
 
+            RampartUtil.handleEncryptedSignedHeaders(encrParts, this.sigParts, doc);
+            
             HashMap sigSuppTokMap = null;
             HashMap endSuppTokMap = null;
             HashMap sgndEndSuppTokMap = null;
-            this.sigParts = RampartUtil.getSignedParts(rmd);
             
             if(this.timestampElement != null){
             	sigParts.add(new WSEncryptionPart(RampartUtil

Modified: webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/SymmetricBindingBuilder.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/SymmetricBindingBuilder.java?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/SymmetricBindingBuilder.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/SymmetricBindingBuilder.java Thu Jan 10 02:10:18 2008
@@ -110,6 +110,8 @@
         Token encryptionToken = rpd.getEncryptionToken();
         Vector encrParts = RampartUtil.getEncryptedParts(rmd);
 
+        Vector sigParts = RampartUtil.getSignedParts(rmd);
+        
         if(encryptionToken == null && encrParts.size() > 0) {
             throw new RampartException("encryptionTokenMissing");
         }
@@ -245,11 +247,13 @@
             } else if (timestampElement != null) {
             	this.setInsertionLocation(timestampElement);
             }
+            
+            RampartUtil.handleEncryptedSignedHeaders(encrParts, sigParts, doc);
 
             HashMap sigSuppTokMap = null;
             HashMap endSuppTokMap = null;
             HashMap sgndEndSuppTokMap = null;
-            Vector sigParts = RampartUtil.getSignedParts(rmd);
+            
             
             if(this.timestampElement != null){
             	sigParts.add(new WSEncryptionPart(RampartUtil

Modified: webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/handler/RampartReceiver.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/handler/RampartReceiver.java?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/handler/RampartReceiver.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/handler/RampartReceiver.java Thu Jan 10 02:10:18 2008
@@ -17,6 +17,8 @@
 package org.apache.rampart.handler;
 
 import org.apache.axiom.om.OMException;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
 import org.apache.axiom.soap.SOAPHeader;
 import org.apache.axiom.soap.SOAPHeaderBlock;
 import org.apache.axis2.AxisFault;
@@ -35,9 +37,13 @@
 import org.apache.ws.security.handler.WSHandlerConstants;
 import org.apache.ws.security.handler.WSHandlerResult;
 
+import java.util.ArrayList;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Vector;
 
+import javax.xml.namespace.QName;
+
 /**
  * Rampart inflow handler.
  * This processes the incoming message and validates it against the effective 
@@ -45,7 +51,7 @@
  */
 public class RampartReceiver implements Handler {
 	
-	private static Log mlog = LogFactory.getLog(RampartConstants.MESSAGE_LOG);
+    private static Log mlog = LogFactory.getLog(RampartConstants.MESSAGE_LOG);
 	
     private static HandlerDescription EMPTY_HANDLER_METADATA =
         new HandlerDescription("default Handler");
@@ -80,16 +86,16 @@
         }
         
         RampartEngine engine = new RampartEngine();
-        Vector wsResult;
+        Vector wsResult = null;
         try {
             wsResult = engine.process(msgContext);
             
         } catch (WSSecurityException e) {
-            throw new AxisFault(e.getMessage(), e);
+            setFaultCodeAndThrowAxisFault(msgContext, e);
         } catch (WSSPolicyException e) {
-            throw new AxisFault(e.getMessage(), e);
+            setFaultCodeAndThrowAxisFault(msgContext, e);
         } catch (RampartException e) {
-            throw new AxisFault(e.getMessage(), e);
+            setFaultCodeAndThrowAxisFault(msgContext, e);
         } 
         
         if(wsResult == null) {
@@ -143,6 +149,26 @@
 
     public Parameter getParameter(String name) {
         return this.handlerDesc.getParameter(name);
+    }
+    
+    private void setFaultCodeAndThrowAxisFault(MessageContext msgContext, Exception e) throws AxisFault {
+        
+        msgContext.setProperty(RampartConstants.SEC_FAULT, Boolean.TRUE);    
+        String soapVersionURI =  msgContext.getEnvelope().getNamespace().getNamespaceURI();
+        QName invalidSecurity = new QName(WSConstants.INVALID_SECURITY.getNamespaceURI(),WSConstants.INVALID_SECURITY.getLocalPart(),"wsse");
+        
+        if (soapVersionURI.equals(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI) ) {
+            
+            throw new AxisFault(invalidSecurity,e.getMessage(),e);
+                            
+        } else if (soapVersionURI.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
+            
+            List subfaultCodes = new ArrayList();
+            subfaultCodes.add(invalidSecurity);
+            throw new AxisFault(null,subfaultCodes,e.getMessage(),e);
+        
+        }        
+        
     }
 
 }

Modified: webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyBuilder.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyBuilder.java?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyBuilder.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyBuilder.java Thu Jan 10 02:10:18 2008
@@ -177,7 +177,7 @@
     private static void processAsymmetricPolicyBinding(
             AsymmetricBinding binding, RampartPolicyData rpd)
             throws WSSPolicyException {
-        rpd.setSymmetricBinding(false);
+        rpd.setAsymmetricBinding(true);
         binding(binding, rpd);
         symmAsymmBinding(binding, rpd);
         asymmetricBinding(binding, rpd);

Modified: webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyData.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyData.java?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyData.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyData.java Thu Jan 10 02:10:18 2008
@@ -43,6 +43,8 @@
     private boolean symmetricBinding;
     
     private boolean transportBinding;
+    
+    private boolean asymmetricBinding;
 
     private String layout;
 
@@ -142,7 +144,21 @@
     public void setSymmetricBinding(boolean symmetricBinding) {
         this.symmetricBinding = symmetricBinding;
     }
+    
+    /**
+     * @return Returns a boolean value indicating whether a Asymmetric Binding
+     */
+    public boolean isAsymmetricBinding() {
+        return asymmetricBinding;
+    }
 
+    /**
+     * @param asymmetricBinding
+     *            boolean value indicating whether a Asymmetric Binding
+     */
+    public void setAsymmetricBinding(boolean asymmetricBinding) {
+        this.asymmetricBinding = asymmetricBinding;
+    }
     /**
      * @return Returns the entireHeaderAndBodySignatures.
      */

Modified: webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java Thu Jan 10 02:10:18 2008
@@ -44,6 +44,7 @@
 import org.apache.ws.secpolicy.Constants;
 import org.apache.ws.secpolicy.model.IssuedToken;
 import org.apache.ws.secpolicy.model.SecureConversationToken;
+import org.apache.ws.secpolicy.model.SupportingToken;
 import org.apache.ws.secpolicy.model.Wss10;
 import org.apache.ws.secpolicy.model.Wss11;
 import org.apache.ws.secpolicy.model.X509Token;
@@ -62,8 +63,10 @@
 import org.apache.ws.security.message.WSSecBase;
 import org.apache.ws.security.message.WSSecEncryptedKey;
 import org.apache.ws.security.util.Loader;
+import org.apache.ws.security.util.WSSecurityUtil;
 import org.jaxen.JaxenException;
 import org.jaxen.XPath;
+import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
@@ -1066,5 +1069,93 @@
         
         return retElem;
     }
+    
+    public static boolean isSecHeaderRequired(RampartMessageData rmd) {
+        RampartPolicyData rpd = rmd.getPolicyData();
+        
+        // Checking for time stamp
+        if ( rpd.isIncludeTimestamp() ) {
+            return true;
+        } 
+        
+        // Checking for signed parts and elements
+        if (rpd.isSignBody() || rpd.getSignedParts().size() != 0 && 
+                                    rpd.getSignedElements().size() != 0) {
+            return true;
+        }
+        
+        // Checking for encrypted parts and elements
+        if (rpd.isEncryptBody() || rpd.getEncryptedParts().size() != 0 && 
+                                    rpd.getEncryptedElements().size() != 0 ) {
+            return true;
+        }   
+        
+        // Checking for supporting tokens
+        SupportingToken supportingTokens;
+        
+        supportingTokens = rpd.getSupportingTokens();
+        if (supportingTokens != null && supportingTokens.getTokens().size() != 0) {
+            return true;
+        }
+        
+        supportingTokens = rpd.getSignedSupportingTokens();
+        if (supportingTokens != null && supportingTokens.getTokens().size() != 0) {
+            return true;
+        }
+        
+        supportingTokens = rpd.getEndorsingSupportingTokens();
+        if (supportingTokens != null && supportingTokens.getTokens().size() != 0) {
+            return true;
+        }
+        
+        supportingTokens = rpd.getSignedEndorsingSupportingTokens();
+        if (supportingTokens != null && supportingTokens.getTokens().size() != 0) {
+            return true;
+        }
+        
+        return false;
+        
+    }
+    
+    public static void handleEncryptedSignedHeaders(Vector encryptedParts, Vector signedParts, Document doc) {
+         
+        //TODO Is there a more efficient  way to do this ? better search algorithm 
+        for (int i = 0 ; i < signedParts.size() ; i++) {
+            WSEncryptionPart signedPart = (WSEncryptionPart)signedParts.get(i);
+            
+            //This signed part is not a header
+            if (signedPart.getNamespace() == null || signedPart.getName() == null) {
+                continue;
+            }
+             
+            for (int j = 0 ; j < encryptedParts.size() ; j ++) {
+                WSEncryptionPart encryptedPart = (WSEncryptionPart) encryptedParts.get(j);
+                
+                if (encryptedPart.getNamespace() == null || encryptedPart.getName() == null ) {
+                    continue;
+                }
+                
+                if (signedPart.getName().equals(encryptedPart.getName()) &&
+                        signedPart.getNamespace().equals(encryptedPart.getNamespace())) {
+                    
+                    String encDataID =  encryptedPart.getEncId();                    
+                    Element encDataElem = WSSecurityUtil.findElementById(doc.getDocumentElement(), encDataID, null);
+                    
+                    if (encDataElem != null) {
+                        Element encHeader = (Element)encDataElem.getParentNode();
+                        String encHeaderId = encHeader.getAttributeNS(WSConstants.WSU_NS, "Id");
+                        
+                        signedParts.remove(signedPart);
+                        WSEncryptionPart encHeaderToSign = new WSEncryptionPart(encHeaderId);
+                        signedParts.add(encHeaderToSign);
+                        
+                    }
+                }
+            }
+            
+            
+        }
+        
+    }
 
-}
+}
\ No newline at end of file

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/conf/axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/conf/axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/conf/axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/conf/axis2.xml Thu Jan 10 02:10:18 2008
@@ -273,7 +273,8 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="RMPhase"/>
         <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>    
 </axisconfig>
 

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/rampart/policy/1.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/rampart/policy/1.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/rampart/policy/1.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/rampart/policy/1.xml Thu Jan 10 02:10:18 2008
@@ -5,7 +5,7 @@
 	  <wsp:Policy>
 		<sp:TransportToken>
 		  <wsp:Policy>
-			<sp:HttpsToken RequireClientCertificate="false"/>
+			<sp:HttpsToken RequireClientCertificate="false"/> 
 		  </wsp:Policy>
 		</sp:TransportToken>
 		<sp:AlgorithmSuite>

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/rampart/services-1.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/rampart/services-1.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/rampart/services-1.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/rampart/services-1.xml Thu Jan 10 02:10:18 2008
@@ -17,7 +17,7 @@
 		  <wsp:Policy>
 			<sp:TransportToken>
 			  <wsp:Policy>
-				<sp:HttpsToken RequireClientCertificate="false"/>
+				<sp:HttpsToken RequireClientCertificate="false"/> 
 			  </wsp:Policy>
 			</sp:TransportToken>
 			<sp:AlgorithmSuite>

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/complete.client.axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/complete.client.axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/complete.client.axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/complete.client.axis2.xml Thu Jan 10 02:10:18 2008
@@ -126,7 +126,8 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="RMPhase"/>
         <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 </axisconfig>
 

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/complete.service.axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/complete.service.axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/complete.service.axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/complete.service.axis2.xml Thu Jan 10 02:10:18 2008
@@ -140,7 +140,8 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="RMPhase"/>
         <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 </axisconfig>
 

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s1.client.axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s1.client.axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s1.client.axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s1.client.axis2.xml Thu Jan 10 02:10:18 2008
@@ -102,7 +102,8 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="RMPhase"/>
         <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 </axisconfig>
 

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s1.service.axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s1.service.axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s1.service.axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s1.service.axis2.xml Thu Jan 10 02:10:18 2008
@@ -132,7 +132,8 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="RMPhase"/>
         <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 </axisconfig>
 

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s2.client.axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s2.client.axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s2.client.axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s2.client.axis2.xml Thu Jan 10 02:10:18 2008
@@ -110,7 +110,8 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="RMPhase"/>
         <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 
 </axisconfig>

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s2.service.axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s2.service.axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s2.service.axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s2.service.axis2.xml Thu Jan 10 02:10:18 2008
@@ -132,7 +132,8 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="RMPhase"/>
         <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 </axisconfig>
 

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s2a.client.axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s2a.client.axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s2a.client.axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s2a.client.axis2.xml Thu Jan 10 02:10:18 2008
@@ -109,7 +109,8 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="RMPhase"/>
         <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 </axisconfig>
 

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s2a.service.axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s2a.service.axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s2a.service.axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s2a.service.axis2.xml Thu Jan 10 02:10:18 2008
@@ -131,7 +131,8 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="RMPhase"/>
         <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 </axisconfig>
 

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s3.client.axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s3.client.axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s3.client.axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s3.client.axis2.xml Thu Jan 10 02:10:18 2008
@@ -120,7 +120,8 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="RMPhase"/>
         <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 </axisconfig>
 

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s3.service.axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s3.service.axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s3.service.axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s3.service.axis2.xml Thu Jan 10 02:10:18 2008
@@ -131,7 +131,8 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="RMPhase"/>
         <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 </axisconfig>
 

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s4.client.axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s4.client.axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s4.client.axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s4.client.axis2.xml Thu Jan 10 02:10:18 2008
@@ -116,7 +116,8 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="RMPhase"/>
         <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 
 </axisconfig>

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s4.service.axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s4.service.axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s4.service.axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s4.service.axis2.xml Thu Jan 10 02:10:18 2008
@@ -132,7 +132,8 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="RMPhase"/>
         <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 </axisconfig>
 

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s5.client.axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s5.client.axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s5.client.axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s5.client.axis2.xml Thu Jan 10 02:10:18 2008
@@ -115,7 +115,8 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="RMPhase"/>
         <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 </axisconfig>
 

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s5.service.axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s5.service.axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s5.service.axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s5.service.axis2.xml Thu Jan 10 02:10:18 2008
@@ -133,7 +133,8 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="RMPhase"/>
         <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 </axisconfig>
 

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s6.client.axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s6.client.axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s6.client.axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s6.client.axis2.xml Thu Jan 10 02:10:18 2008
@@ -117,7 +117,8 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="RMPhase"/>
         <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 
 </axisconfig>

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s6.service.axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s6.service.axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s6.service.axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s6.service.axis2.xml Thu Jan 10 02:10:18 2008
@@ -133,7 +133,8 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="RMPhase"/>
         <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 </axisconfig>
 

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s7.client.axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s7.client.axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s7.client.axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s7.client.axis2.xml Thu Jan 10 02:10:18 2008
@@ -118,7 +118,8 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="RMPhase"/>
         <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 </axisconfig>
 

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s7.service.axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s7.service.axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s7.service.axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/s7.service.axis2.xml Thu Jan 10 02:10:18 2008
@@ -133,7 +133,8 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="RMPhase"/>
         <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 
 </axisconfig>

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/sST1.client.axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/sST1.client.axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/sST1.client.axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/sST1.client.axis2.xml Thu Jan 10 02:10:18 2008
@@ -102,7 +102,8 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="RMPhase"/>
         <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 </axisconfig>
 

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/sST1.service.axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/sST1.service.axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/sST1.service.axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/sST1.service.axis2.xml Thu Jan 10 02:10:18 2008
@@ -132,7 +132,8 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="RMPhase"/>
         <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 
 </axisconfig>

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/secMtom.client.axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/secMtom.client.axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/secMtom.client.axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/secMtom.client.axis2.xml Thu Jan 10 02:10:18 2008
@@ -119,7 +119,8 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="RMPhase"/>
         <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 </axisconfig>
 

Modified: webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/secMtom.service.axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/secMtom.service.axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/secMtom.service.axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-integration/src/test/resources/security/secMtom.service.axis2.xml Thu Jan 10 02:10:18 2008
@@ -134,7 +134,8 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="RMPhase"/>
         <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 </axisconfig>
 

Modified: webservices/rampart/trunk/java/modules/rampart-mar/module.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-mar/module.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-mar/module.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-mar/module.xml Thu Jan 10 02:10:18 2008
@@ -26,6 +26,19 @@
             <order phase="Security" phaseLast="true"/>
         </handler>
     </OutFlow>
+    
+    <OutFaultFlow>
+        <handler name="PolicyBasedSecurityOutHandler" class="org.apache.rampart.handler.RampartSender">
+            <order phase="Security" phaseLast="true"/>
+        </handler>
+    </OutFaultFlow>
+
+    <InFaultFlow>
+        <handler name="PolicyBasedSecurityInHandler" class="org.apache.rampart.handler.RampartReceiver">
+            <order phase="Security" phaseFirst="true"/>
+        </handler>
+    </InFaultFlow>
+    
     <supported-policy-namespaces namespaces="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"/>
     <local-policy-assertions>
     	<rampart:RampartConfig xmlns:rampart="http://ws.apache.org/rampart/policy" />

Modified: webservices/rampart/trunk/java/modules/rampart-samples/basic/sample09/client.axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-samples/basic/sample09/client.axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-samples/basic/sample09/client.axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-samples/basic/sample09/client.axis2.xml Thu Jan 10 02:10:18 2008
@@ -25,7 +25,7 @@
             <user>client</user>
             <encryptionKeyIdentifier>EmbeddedKeyName</encryptionKeyIdentifier>
             <EmbeddedKeyCallbackClass>org.apache.rampart.samples.sample09.PWCBHandler</EmbeddedKeyCallbackClass>
-            <encryptionPropFile>client.properties</encryptionPropFile>
+            <!--  <encryptionPropFile>client.properties</encryptionPropFile> -->
             <EmbeddedKeyName>SessionKey</EmbeddedKeyName>
         </action>
     </parameter>
@@ -34,7 +34,7 @@
         <action>
             <items>Encrypt</items>
             <passwordCallbackClass>org.apache.rampart.samples.sample09.PWCBHandler</passwordCallbackClass>
-            <decryptionPropFile>client.properties</decryptionPropFile>
+            <!--  <decryptionPropFile>client.properties</decryptionPropFile> -->
         </action>
     </parameter>
 

Modified: webservices/rampart/trunk/java/modules/rampart-tests/test-resources/axis2.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-tests/test-resources/axis2.xml?rev=610736&r1=610735&r2=610736&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-tests/test-resources/axis2.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-tests/test-resources/axis2.xml Thu Jan 10 02:10:18 2008
@@ -92,6 +92,7 @@
         <phase name="OperationOutFaultPhase"/>
         <phase name="PolicyDetermination"/>
         <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 </axisconfig>