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/02/05 06:33:28 UTC
svn commit: r618549 - in /webservices/rampart/trunk/java/modules:
rampart-core/src/main/java/org/apache/rampart/
rampart-core/src/main/java/org/apache/rampart/util/
rampart-policy/src/main/java/META-INF/services/
Author: nandana
Date: Mon Feb 4 21:33:24 2008
New Revision: 618549
URL: http://svn.apache.org/viewvc?rev=618549&view=rev
Log:
Fixing https://issues.apache.org/jira/browse/RAMPART-136.
Modified:
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/errors.properties
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/META-INF/services/org.apache.neethi.builders.AssertionBuilder
Modified: webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java?rev=618549&r1=618548&r2=618549&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java Mon Feb 4 21:33:24 2008
@@ -16,6 +16,7 @@
package org.apache.rampart;
+import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.rampart.policy.RampartPolicyData;
@@ -136,6 +137,8 @@
validateEncryptedParts(data, encryptedParts, results);
validateSignedPartsHeaders(data, signatureParts, results);
+
+ validateRequiredElements(data);
//Supporting tokens
if(!rmd.isInitiator()) {
@@ -429,6 +432,27 @@
// throw new RampartException("invalidNumberOfEncryptedParts",
// new String[]{Integer.toString(refCount)});
// }
+
+ }
+
+ public void validateRequiredElements(ValidatorData data) throws RampartException {
+
+ RampartMessageData rmd = data.getRampartMessageData();
+
+ RampartPolicyData rpd = rmd.getPolicyData();
+
+ SOAPEnvelope envelope = rmd.getMsgContext().getEnvelope();
+
+ Iterator elementsIter = rpd.getRequiredElements().iterator();
+
+ while (elementsIter.hasNext()) {
+
+ String expression = (String) elementsIter.next();
+
+ if ( !RampartUtil.checkRequiredElements(envelope, rpd.getDeclaredNamespaces(), expression)) {
+ throw new RampartException("requiredElementsMissing", new String[] { expression } );
+ }
+ }
}
Modified: webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/errors.properties
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/errors.properties?rev=618549&r1=618548&r2=618549&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/errors.properties (original)
+++ webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/errors.properties Mon Feb 4 21:33:24 2008
@@ -90,4 +90,5 @@
encryptionMissing = Expected encrypted part missing
signedPartHeaderNotSigned = Soap Header must be signed : {0}
unexprectedSignature = Unexpected signature
-invalidTransport = Expected transport is "https" but incoming transport found : \"{0}\"
\ No newline at end of file
+invalidTransport = Expected transport is "https" but incoming transport found : \"{0}\"
+requiredElementsMissing = Required Elements not found in the incoming message : {0}
\ No newline at end of file
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=618549&r1=618548&r2=618549&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 Mon Feb 4 21:33:24 2008
@@ -813,6 +813,42 @@
return result;
}
+ /**
+ * Get a element for SOAP
+ * @param envelope
+ * @param namespaces
+ * @param xpath
+ * @return
+ */
+ public static boolean checkRequiredElements(SOAPEnvelope envelope, HashMap decNamespaces, String expression ) {
+
+
+ Set namespaces = findAllPrefixNamespaces(envelope, decNamespaces);
+
+ try {
+ XPath xp = new AXIOMXPath(expression);
+ Iterator nsIter = namespaces.iterator();
+
+ while (nsIter.hasNext())
+ {
+ OMNamespace tmpNs = (OMNamespace)nsIter.next();
+ xp.addNamespace(tmpNs.getPrefix(), tmpNs.getNamespaceURI());
+ }
+
+ List selectedNodes = xp.selectNodes(envelope);
+
+ if (selectedNodes.size() == 0 ) {
+ return false;
+ }
+
+ } catch (JaxenException e) {
+ // This has to be changed to propagate an instance of a RampartException up
+ throw new RuntimeException(e);
+ }
+
+ return true;
+ }
+
public static KeyGenerator getEncryptionKeyGenerator(String symEncrAlgo) throws WSSecurityException {
KeyGenerator keyGen;
Modified: webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/META-INF/services/org.apache.neethi.builders.AssertionBuilder
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/META-INF/services/org.apache.neethi.builders.AssertionBuilder?rev=618549&r1=618548&r2=618549&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/META-INF/services/org.apache.neethi.builders.AssertionBuilder (original)
+++ webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/META-INF/services/org.apache.neethi.builders.AssertionBuilder Mon Feb 4 21:33:24 2008
@@ -23,6 +23,7 @@
org.apache.ws.secpolicy11.builders.SecureConversationTokenBuilder
org.apache.ws.secpolicy11.builders.SymmetricBindingBuilder
org.apache.ws.secpolicy11.builders.IssuedTokenBuilder
+org.apache.ws.secpolicy11.builders.RequiredElementsBuilder
org.apache.ws.secpolicy12.builders.AlgorithmSuiteBuilder
org.apache.ws.secpolicy12.builders.AsymmetricBindingBuilder
org.apache.ws.secpolicy12.builders.EncryptedElementsBuilder
@@ -44,4 +45,5 @@
org.apache.ws.secpolicy12.builders.SecurityContextTokenBuilder
org.apache.ws.secpolicy12.builders.SecureConversationTokenBuilder
org.apache.ws.secpolicy12.builders.SymmetricBindingBuilder
-org.apache.ws.secpolicy12.builders.IssuedTokenBuilder
\ No newline at end of file
+org.apache.ws.secpolicy12.builders.IssuedTokenBuilder
+org.apache.ws.secpolicy12.builders.RequiredElementsBuilder
\ No newline at end of file