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