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 2006/09/18 22:42:35 UTC

svn commit: r447547 - in /webservices/axis2/trunk/java/modules/security: src/org/apache/rampart/ src/org/apache/rampart/handler/ src/org/apache/rampart/util/ test/org/apache/rampart/

Author: ruchithf
Date: Mon Sep 18 13:42:34 2006
New Revision: 447547

URL: http://svn.apache.org/viewvc?view=rev&rev=447547
Log:
- Cleaned up Rampart module implementation class
- Added RampartReceiver handler
- Added RampartEngine to process the incoming message
- Moved common init code into RampartMessageData


Added:
    webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/RampartEngine.java
    webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/TokenCallbackHandler.java
    webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/handler/RampartReceiver.java
Modified:
    webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/MessageBuilder.java
    webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/Rampart.java
    webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/RampartMessageData.java
    webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/errors.properties
    webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/handler/WSDoAllReceiver.java
    webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/util/RampartUtil.java
    webservices/axis2/trunk/java/modules/security/test/org/apache/rampart/MessageBuilderTest.java

Modified: webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/MessageBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/MessageBuilder.java?view=diff&rev=447547&r1=447546&r2=447547
==============================================================================
--- webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/MessageBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/MessageBuilder.java Mon Sep 18 13:42:34 2006
@@ -16,27 +16,15 @@
 
 package org.apache.rampart;
 
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.impl.dom.jaxp.DocumentBuilderFactoryImpl;
-import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.description.Parameter;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.neethi.Policy;
-import org.apache.neethi.PolicyEngine;
+import org.apache.rampart.builder.SymmetricBindingBuilder;
 import org.apache.rampart.builder.TransportBindingBuilder;
-import org.apache.rampart.policy.RampartPolicyBuilder;
 import org.apache.rampart.policy.RampartPolicyData;
-import org.apache.rampart.util.Axis2Util;
 import org.apache.ws.secpolicy.WSSPolicyException;
 import org.apache.ws.security.WSSecurityException;
-import org.apache.ws.security.message.WSSecHeader;
-import org.w3c.dom.Document;
-
-import java.io.ByteArrayInputStream;
-import java.util.List;
 
 public class MessageBuilder {
     
@@ -46,70 +34,21 @@
             RampartException, WSSecurityException, AxisFault {
         
 
-        DocumentBuilderFactoryImpl.setDOOMRequired(true);
-        
-        /*
-         * First get the SOAP envelope as document, then create a security
-         * header and insert into the document (Envelope)
-         */
-        Document doc = Axis2Util.getDocumentFromSOAPEnvelope(msgCtx.getEnvelope(), false);
-        msgCtx.setEnvelope((SOAPEnvelope)doc.getDocumentElement());
-
-        WSSecHeader secHeader = new WSSecHeader();
-        secHeader.insertSecurityHeader(doc);
-
-        RampartMessageData rmd = new RampartMessageData(msgCtx, doc, true);
-
-        Policy policy = null;
-        /*
-         * When creating the RampartMessageData instance we 
-         * extract the service policy is set in the msgCtx.
-         * If it is missing then try to obtain from the configuration files.
-         */
-        if(rmd.getServicePolicy() == null) {
-            if(msgCtx.isServerSide()) {
-                String policyXml = msgCtx.getEffectivePolicy().toString();
-                policy = PolicyEngine.getPolicy(new ByteArrayInputStream(policyXml.getBytes()));
-                
-            } else {
-                Parameter param = msgCtx.getParameter(RampartMessageData.KEY_RAMPART_POLICY);
-                if(param != null) {
-                    OMElement policyElem = param.getParameterElement().getFirstElement();
-                    policy = PolicyEngine.getPolicy(policyElem);
-                }
-            }
-            
-            //Set the policy in the config ctx
-            msgCtx.getConfigurationContext().setProperty(
-                    RampartMessageData.getPolicyKey(msgCtx), policy);
-            
-            //Set the service policy
-            rmd.setServicePolicy(policy);
-        }
-        
-        List it = (List)rmd.getServicePolicy().getAlternatives().next();
-        
-        RampartPolicyData policyData = RampartPolicyBuilder.build(it);
-     
-        rmd.setPolicyData(policyData);
-        rmd.setSecHeader(secHeader);
-        
-        processEnvelope(rmd);
-    }
-
-
-    
-    private void processEnvelope(RampartMessageData rmd)
-            throws RampartException, WSSecurityException {
-        log.info("Before create Message assym....");
+        RampartMessageData rmd = new RampartMessageData(msgCtx, true);
         
-        //Nothing to do to handle the other bindings
+//      Nothing to do to handle the other bindings
         RampartPolicyData rpd = rmd.getPolicyData();
         if(rpd.isTransportBinding()) {
+            log.debug("Building transport binding");
             TransportBindingBuilder building = new TransportBindingBuilder();
             building.build(rmd);
+        } else if(rpd.isSymmetricBinding()) {
+            log.debug("Building SymmetricBinding");
+            SymmetricBindingBuilder builder = new SymmetricBindingBuilder();
+            builder.build(rmd);
+        } else {
+           //TODO Handle AsymmtricBinding 
         }
-        
     }
-    
+
 }

Modified: webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/Rampart.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/Rampart.java?view=diff&rev=447547&r1=447546&r2=447547
==============================================================================
--- webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/Rampart.java (original)
+++ webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/Rampart.java Mon Sep 18 13:42:34 2006
@@ -20,22 +20,10 @@
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.description.AxisDescription;
 import org.apache.axis2.description.AxisModule;
-import org.apache.axis2.description.AxisOperation;
-import org.apache.axis2.description.AxisService;
-import org.apache.axis2.description.Parameter;
 import org.apache.axis2.modules.Module;
 import org.apache.axis2.modules.ModulePolicyExtension;
 import org.apache.axis2.modules.PolicyExtension;
-import org.apache.neethi.Policy;
-import org.apache.rampart.util.HandlerParameterDecoder;
-import org.apache.rampart.handler.WSSHandlerConstants;
-import org.apache.rampart.handler.config.InflowConfiguration;
-import org.apache.rampart.handler.config.OutflowConfiguration;
-
-import org.apache.ws.security.policy1.WSS4JConfig;
-import org.apache.ws.security.policy1.WSS4JConfigBuilder;
 import org.apache.ws.security.policy1.extension.WSSCodegenPolicyExtension;
-import org.apache.ws.security.policy1.parser.WSSPolicyProcessor;
 
 public class Rampart implements Module, ModulePolicyExtension  {
     private AxisModule module;
@@ -46,72 +34,8 @@
     }
 
     public void engageNotify(AxisDescription axisDescription) throws AxisFault {
-        
-        // TODO do the appropriate based on the Neethi2 policy object ..        
-        Policy policy = axisDescription.getPolicyInclude().getEffectivePolicy();
-        
-        
-//        if (axisDescription instanceof AxisOperation && policy != null) {
-//            try {
-//                WSSPolicyProcessor wssPolicyProcessor = new WSSPolicyProcessor();
-//                wssPolicyProcessor.setup();
-//                wssPolicyProcessor.processPolicy((Policy)policy.normalize(axisDescription.getPolicyInclude().getPolicyRegistry()));
-//
-//                //create server side config
-//                WSS4JConfig serverConfig = WSS4JConfigBuilder
-//                        .build(wssPolicyProcessor.getRootPED()
-//                                .getTopLevelPEDs());
-//
-//                InflowConfiguration policyInflowConfig = serverConfig
-//                        .getInflowConfiguration();
-//
-//                Parameter infp = calcuateCurrentInflowConfiguration(policyInflowConfig,axisDescription).getProperty();
-//                
-//                if (infp != null) {
-//                    infp.setName(WSSHandlerConstants.INFLOW_SECURITY_SERVER);
-//                    axisDescription.addParameter(infp);                    
-//                }
-//                                
-//                OutflowConfiguration policyOutflowConfig = serverConfig.getOutflowConfiguration();
-//                Parameter outfp = calcuateCurrentOutflowConfiguration(policyOutflowConfig,axisDescription).getProperty();
-//                
-//                if (outfp != null) {
-//                    outfp.setName(WSSHandlerConstants.OUTFLOW_SECURITY_SERVER);
-//                    axisDescription.addParameter(outfp);                    
-//                }
-//                
-//                
-//                
-//                //create client side config
-//                wssPolicyProcessor = new WSSPolicyProcessor();
-//                wssPolicyProcessor.setup();
-//                wssPolicyProcessor.processPolicy(policy);
-//                
-//                WSS4JConfig clientConfig = WSS4JConfigBuilder
-//                .build(wssPolicyProcessor.getRootPED()
-//                        .getTopLevelPEDs(), isServerSide(axisDescription));
-//
-//                policyInflowConfig = clientConfig.getInflowConfiguration();
-//
-//                infp = calcuateCurrentInflowConfiguration(policyInflowConfig,axisDescription).getProperty();
-//                
-//                if (infp != null) {
-//                    infp.setName(WSSHandlerConstants.INFLOW_SECURITY_CLIENT);
-//                    axisDescription.addParameter(infp);
-//                }
-//        
-//                 policyOutflowConfig = clientConfig.getOutflowConfiguration();
-//                 outfp = calcuateCurrentOutflowConfiguration(policyOutflowConfig, axisDescription).getProperty();
-//                 
-//                 if (outfp != null) {
-//                     outfp.setName(WSSHandlerConstants.OUTFLOW_SECURITY_CLIENT);
-//                     axisDescription.addParameter(outfp);
-//                 }
-//                 
-//            } catch (Exception e) {
-//                throw new AxisFault(e.getMessage(), e);
-//            }
-//        }
+        //Nothing to do here, since RampartMessageData will pick up the 
+        //effective policy from the message context 
     }
 
     public void shutdown(ConfigurationContext configurationContext) throws AxisFault {
@@ -121,107 +45,4 @@
     public PolicyExtension getPolicyExtension() {
         return new WSSCodegenPolicyExtension();
     }
-
-    private InflowConfiguration calcuateCurrentInflowConfiguration(
-            InflowConfiguration policyInflowConfig,
-            AxisDescription axisDescription) throws AxisFault {
-        // merge inflow configuration
-        Parameter inflowModuleParam = module
-                .getParameter(WSSHandlerConstants.INFLOW_SECURITY);
-        InflowConfiguration moduleInflowConfig = HandlerParameterDecoder
-                .getInflowConfiguration(inflowModuleParam);
-
-        Parameter inflowSecParam = axisDescription
-                .getParameter(WSSHandlerConstants.INFLOW_SECURITY);
-        InflowConfiguration staticInflowConfig = HandlerParameterDecoder
-                .getInflowConfiguration(inflowSecParam);
-
-        InflowConfiguration mergedInConf = mergeInflowConfiguration(
-                staticInflowConfig, moduleInflowConfig);
-        return mergeInflowConfiguration(mergedInConf,policyInflowConfig);
-    }
-        
-    private OutflowConfiguration calcuateCurrentOutflowConfiguration(
-            OutflowConfiguration policyOutflowConfig,
-            AxisDescription axisDescription) throws AxisFault {
-        // merge outflow configuration
-        Parameter outfloModuleParam = module
-                .getParameter(WSSHandlerConstants.OUTFLOW_SECURITY);
-        OutflowConfiguration moduleOutflowConfig = HandlerParameterDecoder
-                .getOutflowConfiguration(outfloModuleParam);
-        Parameter outflowSecParam = axisDescription
-                .getParameter(WSSHandlerConstants.OUTFLOW_SECURITY);
-        OutflowConfiguration staticOutflowConfig = HandlerParameterDecoder
-                .getOutflowConfiguration(outflowSecParam);
-
-        OutflowConfiguration mergedOutFlowConf = mergeOutflowConfiguration(
-                staticOutflowConfig, moduleOutflowConfig);
-        return mergeOutflowConfiguration(mergedOutFlowConf,policyOutflowConfig);
-    }
-    
-    
-    
-    
-
-    // overide secondry configuration with primry configuration
-    private OutflowConfiguration mergeOutflowConfiguration(
-            OutflowConfiguration primaryConfig,
-            OutflowConfiguration secondryConf) {
-        if (secondryConf == null && primaryConfig != null) {
-            return primaryConfig;
-        } else if (primaryConfig == null && secondryConf != null) {
-            return secondryConf;
-        } else if (primaryConfig == null && secondryConf == null) {
-            return null;
-        }
-
-        secondryConf.setPasswordCallbackClass(primaryConfig
-                .getPasswordCallbackClass());
-        secondryConf.setSignaturePropFile(primaryConfig.getSignaturePropFile());
-        secondryConf.setEncryptionPropFile(primaryConfig
-                .getEncryptionPropFile());
-        secondryConf.setEmbeddedKeyCallbackClass(primaryConfig
-                .getEmbeddedKeyCallbackClass());
-        secondryConf.setUser(primaryConfig.getUser());
-        secondryConf.setEncryptionUser(primaryConfig.getEncryptionUser());
-        return secondryConf;
-    }
-
-    // overide secondry configuration with primry configuration
-    private InflowConfiguration mergeInflowConfiguration(
-            InflowConfiguration primaryConfig, InflowConfiguration secondryConf) {
-        if (secondryConf == null && primaryConfig != null) {
-            return primaryConfig;
-        } else if (primaryConfig == null && secondryConf != null) {
-            return secondryConf;
-        } else if (primaryConfig == null && secondryConf == null) {
-            return null;
-        }
-
-        secondryConf.setPasswordCallbackClass(primaryConfig
-                .getPasswordCallbackClass());
-        secondryConf.setDecryptionPropFile(primaryConfig
-                .getDecryptionPropFile());
-        secondryConf.setSignaturePropFile(primaryConfig.getSignaturePropFile());
-        if(primaryConfig.getEnableSignatureConfirmation() != null && "false".equals(primaryConfig.getEnableSignatureConfirmation())){
-            secondryConf.setEnableSignatureConfirmation(false);
-        }
-        return secondryConf;
-    }
-    
-    private boolean isServerSide(AxisDescription axisDescription) {
-        
-        if (axisDescription instanceof AxisService) {
-            return !((AxisService) axisDescription).isClientSide();
-            
-        } else if (axisDescription instanceof AxisOperation) {
-            return !((AxisService) axisDescription.getParent()).isClientSide();
-            
-        } else {
-            // we assume that the default is the client-side
-            return false;            
-        }
-    }
-    
-    
 }

Added: webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/RampartEngine.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/RampartEngine.java?view=auto&rev=447547
==============================================================================
--- webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/RampartEngine.java (added)
+++ webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/RampartEngine.java Mon Sep 18 13:42:34 2006
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.rampart;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.rampart.policy.RampartPolicyData;
+import org.apache.rampart.util.Axis2Util;
+import org.apache.rampart.util.RampartUtil;
+import org.apache.ws.secpolicy.WSSPolicyException;
+import org.apache.ws.security.WSSecurityEngine;
+import org.apache.ws.security.WSSecurityException;
+
+import java.util.Vector;
+
+
+public class RampartEngine {
+
+    public Vector process(MessageContext msgCtx) throws WSSPolicyException,
+    RampartException, WSSecurityException, AxisFault {
+        
+        RampartMessageData rmd = new RampartMessageData(msgCtx, false);
+        RampartPolicyData rpd = rmd.getPolicyData();
+        
+        Vector results = null;
+        
+        WSSecurityEngine engine = new WSSecurityEngine();
+        
+        if(rpd.isSymmetricBinding()) {
+            //Here we have to create the CB handler to get the tokens from the 
+            //token storage
+            
+            results = engine.processSecurityHeader(rmd.getDocument(), 
+                                null, 
+                                new TokenCallbackHandler(rmd.getTokenStorage()),
+                                null);
+            
+            //Convert back to llom since the inflow cannot use llom
+            rmd.getMsgContext().setEnvelope(Axis2Util
+                    .getSOAPEnvelopeFromDOOMDocument(rmd.getDocument()));
+        } else {
+            results = engine.processSecurityHeader(rmd.getDocument(),
+                      null, 
+                      RampartUtil.getPasswordCB(rmd),
+                      RampartUtil.getSignatureCrypto(rpd.getRampartConfig()), 
+                      RampartUtil.getEncryptionCrypto(rpd.getRampartConfig()));
+        }
+        
+        return results;
+    }
+    
+}

Modified: webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/RampartMessageData.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/RampartMessageData.java?view=diff&rev=447547&r1=447546&r2=447547
==============================================================================
--- webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/RampartMessageData.java (original)
+++ webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/RampartMessageData.java Mon Sep 18 13:42:34 2006
@@ -16,26 +16,37 @@
 
 package org.apache.rampart;
 
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.dom.jaxp.DocumentBuilderFactoryImpl;
+import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.OperationContext;
+import org.apache.axis2.description.Parameter;
 import org.apache.axis2.wsdl.WSDLConstants;
 import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
 import org.apache.rahas.RahasConstants;
 import org.apache.rahas.SimpleTokenStore;
 import org.apache.rahas.TokenStorage;
 import org.apache.rahas.TrustException;
 import org.apache.rahas.TrustUtil;
+import org.apache.rampart.policy.RampartPolicyBuilder;
 import org.apache.rampart.policy.RampartPolicyData;
+import org.apache.rampart.util.Axis2Util;
+import org.apache.ws.secpolicy.WSSPolicyException;
 import org.apache.ws.security.WSSConfig;
+import org.apache.ws.security.WSSecurityException;
 import org.apache.ws.security.conversation.ConversationConstants;
 import org.apache.ws.security.handler.WSHandlerConstants;
 import org.apache.ws.security.message.WSSecHeader;
 import org.apache.ws.security.util.Loader;
 import org.w3c.dom.Document;
 
+import javax.xml.namespace.QName;
+
 import java.util.Hashtable;
-import java.util.Vector;
+import java.util.List;
 
 public class RampartMessageData {
     
@@ -112,11 +123,21 @@
     
     private boolean sender;
 
-    public RampartMessageData(MessageContext msgCtx, Document doc, boolean sender) throws RampartException {
+    public RampartMessageData(MessageContext msgCtx, boolean sender) throws RampartException {
+        
+        DocumentBuilderFactoryImpl.setDOOMRequired(true);
+        
         this.msgContext = msgCtx;
-        this.document = doc;
         
         try {
+            
+            /*
+             * First get the SOAP envelope as document, then create a security
+             * header and insert into the document (Envelope)
+             */
+            this.document = Axis2Util.getDocumentFromSOAPEnvelope(msgCtx.getEnvelope(), false);
+            msgCtx.setEnvelope((SOAPEnvelope)this.document.getDocumentElement());
+            
             //Extract known properties from the msgCtx
             
             if(msgCtx.getProperty(KEY_WST_VERSION) != null) {
@@ -127,16 +148,50 @@
                 this.secConvVersion = TrustUtil.getWSTVersion((String)msgCtx.getProperty(KEY_WSSC_VERSION));
             }
             
-            //This is for a user to set policy in from the client
+            //If the policy is already available in the service, then use it
+            
+            String operationPolicyKey = getOperationPolicyKey(msgCtx);
+            if(msgCtx.getProperty(operationPolicyKey) != null) {
+                this.servicePolicy = (Policy)msgCtx.getProperty(operationPolicyKey);
+            } 
+            
+            String svcPolicyKey = getServicePolicyKey(msgCtx);
+            if(this.servicePolicy == null && msgCtx.getProperty(svcPolicyKey) != null) {
+                this.servicePolicy = (Policy)msgCtx.getProperty(svcPolicyKey);
+            }
+            
             if(msgCtx.getProperty(KEY_RAMPART_POLICY) != null) {
                 this.servicePolicy = (Policy)msgCtx.getProperty(KEY_RAMPART_POLICY);
             }
             
-            //If the policy is already available in the service, then use it
-            if(msgCtx.getParameter(KEY_RAMPART_POLICY) != null) {
-                this.servicePolicy = (Policy)msgCtx.getProperty(getPolicyKey(msgCtx));
+            /*
+             * Init policy:
+             * When creating the RampartMessageData instance we 
+             * extract the service policy is set in the msgCtx.
+             * If it is missing then try to obtain from the configuration files.
+             */
+            if(this.servicePolicy == null) {
+                if(msgCtx.isServerSide()) {
+                    this.servicePolicy = msgCtx.getEffectivePolicy();
+                } else {
+                    Parameter param = msgCtx.getParameter(RampartMessageData.KEY_RAMPART_POLICY);
+                    if(param != null) {
+                        OMElement policyElem = param.getParameterElement().getFirstElement();
+                        this.servicePolicy = PolicyEngine.getPolicy(policyElem);
+                    }
+                }
+                
+                //Set the policy in the config ctx
+                msgCtx.getConfigurationContext().setProperty(
+                        RampartMessageData.getOperationPolicyKey(msgCtx), this.servicePolicy);
             }
             
+            
+            List it = (List)this.servicePolicy.getAlternatives().next();
+            
+            //Process policy and build policy data
+            this.policyData = RampartPolicyBuilder.build(it);
+
             this.isClientSide = !msgCtx.isServerSide();
             this.sender = sender;
             
@@ -153,11 +208,18 @@
             }
             
             this.config = WSSConfig.getDefaultWSConfig();
+
+            this.secHeader = new WSSecHeader();
+            secHeader.insertSecurityHeader(this.document);
             
         } catch (TrustException e) {
             throw new RampartException("errorInExtractingMsgProps", e);
         } catch (AxisFault e) {
             throw new RampartException("errorInExtractingMsgProps", e);
+        } catch (WSSPolicyException e) {
+            throw new RampartException("errorInExtractingMsgProps", e);
+        } catch (WSSecurityException e) {
+            throw new RampartException("errorInExtractingMsgProps", e);
         }
         
     }
@@ -435,13 +497,25 @@
      * @param msgCtx
      * @return
      */
-    public static String getPolicyKey(MessageContext msgCtx) {
-        return RampartMessageData.KEY_RAMPART_POLICY
-                + msgCtx.getAxisService().getName() + "{"
-                + msgCtx.getAxisOperation().getName().getNamespaceURI()
-                + "}" + msgCtx.getAxisOperation().getName().getLocalPart();
+    public static String getOperationPolicyKey(MessageContext msgCtx) {
+        return createPolicyKey(msgCtx.getAxisService().getName(), 
+                msgCtx.getAxisOperation().getName());
     }
 
+    public static String getServicePolicyKey(MessageContext msgCtx) {
+        return  createPolicyKey(msgCtx.getAxisService().getName(), null);
+    }
+    
+    public static String createPolicyKey(String service, QName operation) {
+        if(operation != null) {
+            return RampartMessageData.KEY_RAMPART_POLICY + service
+                    + "{" + operation.getNamespaceURI() + "}"
+                    + operation.getLocalPart();
+        } else {
+            return RampartMessageData.KEY_RAMPART_POLICY + service;
+        }
+    }
+    
     /**
      * @return Returns the timestampId.
      */

Added: webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/TokenCallbackHandler.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/TokenCallbackHandler.java?view=auto&rev=447547
==============================================================================
--- webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/TokenCallbackHandler.java (added)
+++ webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/TokenCallbackHandler.java Mon Sep 18 13:42:34 2006
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.rampart;
+
+import org.apache.rahas.Token;
+import org.apache.rahas.TokenStorage;
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import java.io.IOException;
+
+
+public class TokenCallbackHandler implements CallbackHandler {
+
+    private TokenStorage store;
+
+    
+    public TokenCallbackHandler(TokenStorage store) {
+        this.store = store;
+    }
+    
+    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
+        for (int i = 0; i < callbacks.length; i++) {
+
+            if (callbacks[i] instanceof WSPasswordCallback) {
+                WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];
+                String id = pc.getIdentifer();
+                Token tok;
+                try {
+                    //Pick up the token from the token store
+                    tok = this.store.getToken(id);
+                    //Get the secret and set it in the callback object
+                    pc.setKey(tok.getSecret());
+
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    throw new IOException(e.getMessage());
+                }
+
+            } else {
+                throw new UnsupportedCallbackException(callbacks[i],
+                        "Unrecognized Callback");
+            }
+        }
+    }
+
+}

Modified: webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/errors.properties
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/errors.properties?view=diff&rev=447547&r1=447546&r2=447547
==============================================================================
--- webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/errors.properties (original)
+++ webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/errors.properties Mon Sep 18 13:42:34 2006
@@ -34,4 +34,8 @@
 errorCreatingRahasToken = Error in creating a org.apache.rahas.Token instance
 UnsupportedTokenInSupportingToken = Unsupprted token in supporting tokens
 encryptionTokenMissing = Encryption token missing
-signatureTokenMissing = Signature token missging
\ No newline at end of file
+signatureTokenMissing = Signature token missging
+
+
+#Errors in processors
+errorProcessingUT = Error in processing UsernameToken
\ No newline at end of file

Added: webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/handler/RampartReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/handler/RampartReceiver.java?view=auto&rev=447547
==============================================================================
--- webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/handler/RampartReceiver.java (added)
+++ webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/handler/RampartReceiver.java Mon Sep 18 13:42:34 2006
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.rampart.handler;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.engine.Handler;
+import org.apache.rampart.RampartEngine;
+import org.apache.rampart.RampartException;
+import org.apache.ws.secpolicy.WSSPolicyException;
+import org.apache.ws.security.WSSecurityEngine;
+import org.apache.ws.security.WSSecurityException;
+import org.apache.ws.security.handler.WSHandlerConstants;
+import org.apache.ws.security.handler.WSHandlerResult;
+
+import java.util.Vector;
+
+
+public class RampartReceiver implements Handler {
+
+    protected static final WSSecurityEngine secEngine = WSSecurityEngine.getInstance();
+    
+    private static HandlerDescription EMPTY_HANDLER_METADATA =
+        new HandlerDescription("deafult Handler");
+
+    private HandlerDescription handlerDesc;
+    
+    
+    public RampartReceiver() {
+        this.handlerDesc = EMPTY_HANDLER_METADATA;
+    }
+    
+    public void cleanup() {        
+    }
+
+    public void init(HandlerDescription handlerdesc) {
+        this.handlerDesc = handlerdesc;
+    }
+
+    public void invoke(MessageContext msgContext) throws AxisFault {
+        
+        RampartEngine engine = new RampartEngine();
+        Vector wsResult;
+        try {
+            wsResult = engine.process(msgContext);
+        } catch (WSSecurityException e) {
+            throw new AxisFault(e);
+        } catch (WSSPolicyException e) {
+            throw new AxisFault(e);
+        } catch (RampartException e) {
+            throw new AxisFault(e);
+        }
+        
+        Vector results = null;
+        if ((results = (Vector) msgContext.getProperty(WSHandlerConstants.RECV_RESULTS)) == null) {
+            results = new Vector();
+            msgContext.setProperty(WSHandlerConstants.RECV_RESULTS, results);
+        }
+        WSHandlerResult rResult = new WSHandlerResult("", wsResult);
+        results.add(0, rResult);
+    }
+
+    public HandlerDescription getHandlerDesc() {
+        return this.handlerDesc;
+    }
+
+    public String getName() {
+        return "Apache Rampart inflow handler";
+    }
+
+    public Parameter getParameter(String name) {
+        return this.handlerDesc.getParameter(name);
+    }
+
+}

Modified: webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/handler/WSDoAllReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/handler/WSDoAllReceiver.java?view=diff&rev=447547&r1=447546&r2=447547
==============================================================================
--- webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/handler/WSDoAllReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/handler/WSDoAllReceiver.java Mon Sep 18 13:42:34 2006
@@ -38,7 +38,6 @@
 import org.apache.rampart.util.HandlerParameterDecoder;
 import org.apache.ws.security.SOAPConstants;
 import org.apache.ws.security.WSConstants;
-import org.apache.ws.security.WSSecurityEngine;
 import org.apache.ws.security.WSSecurityEngineResult;
 import org.apache.ws.security.WSSecurityException;
 import org.apache.ws.security.handler.RequestData;
@@ -154,7 +153,6 @@
             Util.processRSTR(elem, config);
         }
 
-        WSSecurityEngine secEngine = new WSSecurityEngine();
         secEngine.processSecurityHeader(config.getDocument(), null,
                 new ConversationCallbackHandler(config), config
                         .getCrypto());

Modified: webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/util/RampartUtil.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/util/RampartUtil.java?view=diff&rev=447547&r1=447546&r2=447547
==============================================================================
--- webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/util/RampartUtil.java (original)
+++ webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/util/RampartUtil.java Mon Sep 18 13:42:34 2006
@@ -62,31 +62,31 @@
 
     private static Log log = LogFactory.getLog(RampartUtil.class);
     
-    public static CallbackHandler getPasswordCB(ClassLoader classLoader,
-            String cbHandlerClass) throws RampartException {
-
-        log.debug("loading class : " + cbHandlerClass);
-        
-        CallbackHandler cbHandler = null;
-        
-        if (cbHandlerClass != null) {
-            Class cbClass;
-            try {
-                cbClass = Loader.loadClass(classLoader, cbHandlerClass);
-            } catch (ClassNotFoundException e) {
-                throw new RampartException("cannotLoadPWCBClass", 
-                        new String[]{cbHandlerClass}, e);
-            }
-            try {
-                cbHandler = (CallbackHandler) cbClass.newInstance();
-            } catch (java.lang.Exception e) {
-                throw new RampartException("cannotCreatePWCBInstance",
-                        new String[]{cbHandlerClass}, e);
-            }
-        }
-        
-        return cbHandler;
-    }
+//    public static CallbackHandler getPasswordCB(ClassLoader classLoader,
+//            String cbHandlerClass) throws RampartException {
+//
+//        log.debug("loading class : " + cbHandlerClass);
+//        
+//        CallbackHandler cbHandler = null;
+//        
+//        if (cbHandlerClass != null) {
+//            Class cbClass;
+//            try {
+//                cbClass = Loader.loadClass(classLoader, cbHandlerClass);
+//            } catch (ClassNotFoundException e) {
+//                throw new RampartException("cannotLoadPWCBClass", 
+//                        new String[]{cbHandlerClass}, e);
+//            }
+//            try {
+//                cbHandler = (CallbackHandler) cbClass.newInstance();
+//            } catch (java.lang.Exception e) {
+//                throw new RampartException("cannotCreatePWCBInstance",
+//                        new String[]{cbHandlerClass}, e);
+//            }
+//        }
+//        
+//        return cbHandler;
+//    }
     
     public static CallbackHandler getPasswordCB(RampartMessageData rmd) throws RampartException {
 

Modified: webservices/axis2/trunk/java/modules/security/test/org/apache/rampart/MessageBuilderTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/security/test/org/apache/rampart/MessageBuilderTest.java?view=diff&rev=447547&r1=447546&r2=447547
==============================================================================
--- webservices/axis2/trunk/java/modules/security/test/org/apache/rampart/MessageBuilderTest.java (original)
+++ webservices/axis2/trunk/java/modules/security/test/org/apache/rampart/MessageBuilderTest.java Mon Sep 18 13:42:34 2006
@@ -21,9 +21,11 @@
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.OutInAxisOperation;
 import org.apache.neethi.Policy;
 import org.apache.neethi.PolicyEngine;
 
+import javax.xml.namespace.QName;
 import javax.xml.stream.FactoryConfigurationError;
 import javax.xml.stream.XMLInputFactory;
 import javax.xml.stream.XMLStreamException;
@@ -139,6 +141,7 @@
     private MessageContext getMsgCtx() throws XMLStreamException, FactoryConfigurationError, AxisFault {
         MessageContext ctx = new MessageContext();
         ctx.setAxisService(new AxisService("TestService"));
+        ctx.setAxisOperation(new OutInAxisOperation(new QName("http://rampart.org", "test")));
         
         XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(new ByteArrayInputStream(soapMsg.getBytes()));
         ctx.setEnvelope(new StAXSOAPModelBuilder(reader, null).getSOAPEnvelope());



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org