Author: coheigea
Date: Fri Jan 24 16:17:34 2014
New Revision: 1561051
URL: http://svn.apache.org/r1561051
Log:
Reject duplicate actions
Modified:
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/WSSec.java
webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/MultipleActionTest.java
Modified:
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/WSSec.java
URL:
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/WSSec.java?rev=1561051&r1=1561050&r2=1561051&view=diff
==============================================================================
---
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/WSSec.java
(original)
+++
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/WSSec.java
Fri Jan 24 16:17:34 2014
@@ -19,6 +19,7 @@
package org.apache.wss4j.stax;
import java.net.URISyntaxException;
+import java.util.HashSet;
import org.apache.wss4j.common.crypto.WSProviderConfig;
import org.apache.wss4j.common.ext.WSSecurityException;
@@ -102,6 +103,12 @@ public class WSSec {
if (securityProperties.getActions() == null) {
throw new
WSSConfigurationException(WSSConfigurationException.ErrorCode.FAILURE,
"noOutputAction");
}
+
+ // Check for duplicate actions
+ if (new
HashSet<XMLSecurityConstants.Action>(securityProperties.getActions()).size()
+ != securityProperties.getActions().size()) {
+ throw new
WSSConfigurationException(WSSConfigurationException.ErrorCode.FAILURE,
"stax.duplicateActions");
+ }
for (XMLSecurityConstants.Action action :
securityProperties.getActions()) {
if (WSSConstants.TIMESTAMP.equals(action)) {
Modified:
webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/MultipleActionTest.java
URL:
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/MultipleActionTest.java?rev=1561051&r1=1561050&r2=1561051&view=diff
==============================================================================
---
webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/MultipleActionTest.java
(original)
+++
webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/MultipleActionTest.java
Fri Jan 24 16:17:34 2014
@@ -26,11 +26,13 @@ import java.util.List;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
+import org.apache.wss4j.common.ext.WSSecurityException;
import org.apache.wss4j.stax.WSSec;
import org.apache.wss4j.stax.ext.OutboundWSSec;
import org.apache.wss4j.stax.ext.WSSConstants;
import org.apache.wss4j.stax.ext.WSSSecurityProperties;
import org.apache.wss4j.stax.test.utils.XmlReaderToWriter;
+import org.apache.xml.security.stax.ext.XMLSecurityConstants;
import org.apache.xml.security.stax.securityEvent.SecurityEvent;
import org.junit.Assert;
import org.junit.Test;
@@ -108,4 +110,28 @@ public class MultipleActionTest extends
}
}
+ @Test
+ public void testDuplicateActions() throws Exception {
+ WSSSecurityProperties properties = new WSSSecurityProperties();
+ List<XMLSecurityConstants.Action> actions = new
ArrayList<XMLSecurityConstants.Action>();
+ actions.add(XMLSecurityConstants.SIGNATURE);
+
properties.loadSignatureKeyStore(this.getClass().getClassLoader().getResource("transmitter.jks"),
"default".toCharArray());
+ properties.setSignatureUser("transmitter");
+ properties.setCallbackHandler(new CallbackHandlerImpl());
+ properties.setActions(actions);
+
+ // Should work
+ WSSec.getOutboundWSSec(properties);
+
+ // Should throw an error on a duplicate Action
+ actions.add(XMLSecurityConstants.SIGNATURE);
+ properties.setActions(actions);
+
+ try {
+ WSSec.getOutboundWSSec(properties);
+ Assert.fail();
+ } catch (WSSecurityException ex) {
+ Assert.assertTrue(ex.getMessage().contains("Duplicate Actions are
not allowed"));
+ }
+ }
}