You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by gi...@apache.org on 2013/05/18 16:08:00 UTC
svn commit: r1484123 [2/2] - in
/webservices/wss4j/trunk/ws-security-stax/src:
main/java/org/apache/wss4j/stax/ext/ main/java/org/apache/wss4j/stax/impl/
main/java/org/apache/wss4j/stax/impl/processor/output/
test/java/org/apache/wss4j/stax/test/ test/...
Modified: webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/UsernameTokenOutputProcessor.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/UsernameTokenOutputProcessor.java?rev=1484123&r1=1484122&r2=1484123&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/UsernameTokenOutputProcessor.java (original)
+++ webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/UsernameTokenOutputProcessor.java Sat May 18 14:08:00 2013
@@ -30,13 +30,12 @@ import org.apache.xml.security.exception
import org.apache.xml.security.stax.ext.*;
import org.apache.xml.security.stax.ext.stax.XMLSecAttribute;
import org.apache.xml.security.stax.ext.stax.XMLSecEvent;
-import org.apache.xml.security.stax.ext.stax.XMLSecStartElement;
import org.apache.xml.security.stax.impl.util.IDGenerator;
import org.apache.xml.security.stax.securityToken.OutboundSecurityToken;
import org.apache.xml.security.stax.securityToken.SecurityTokenProvider;
import javax.xml.datatype.XMLGregorianCalendar;
-import javax.xml.stream.XMLStreamConstants;
+import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamException;
import java.util.ArrayList;
import java.util.GregorianCalendar;
@@ -46,6 +45,9 @@ public class UsernameTokenOutputProcesso
public UsernameTokenOutputProcessor() throws XMLSecurityException {
super();
+ addAfterProcessor(TimestampOutputProcessor.class.getName());
+ addBeforeProcessor(WSSSignatureOutputProcessor.class.getName());
+ addBeforeProcessor(EncryptOutputProcessor.class.getName());
}
@Override
@@ -116,7 +118,6 @@ public class UsernameTokenOutputProcesso
if (WSSConstants.USERNAMETOKEN_SIGNED.equals(getAction())) {
outputProcessorChain.getSecurityContext().registerSecurityTokenProvider(wsuId, securityTokenProvider);
outputProcessorChain.getSecurityContext().put(WSSConstants.PROP_USE_THIS_TOKEN_ID_FOR_SIGNATURE, wsuId);
- outputProcessorChain.getSecurityContext().put(WSSConstants.PROP_APPEND_SIGNATURE_ON_THIS_ID, wsuId);
}
final FinalUsernameTokenOutputProcessor finalUsernameTokenOutputProcessor =
new FinalUsernameTokenOutputProcessor(wsuId, nonceValue, password, created, salt, derivedIterations, getAction());
@@ -157,69 +158,68 @@ public class UsernameTokenOutputProcesso
}
@Override
- public void processEvent(XMLSecEvent xmlSecEvent, OutputProcessorChain outputProcessorChain) throws XMLStreamException, XMLSecurityException {
+ public void processEvent(XMLSecEvent xmlSecEvent, OutputProcessorChain outputProcessorChain)
+ throws XMLStreamException, XMLSecurityException {
+
outputProcessorChain.processEvent(xmlSecEvent);
- if (xmlSecEvent.getEventType() == XMLStreamConstants.START_ELEMENT) {
- XMLSecStartElement xmlSecStartElement = xmlSecEvent.asStartElement();
- if (xmlSecStartElement.getName().equals(WSSConstants.TAG_wsse_Security)
- && WSSUtils.isInSecurityHeader(xmlSecStartElement, ((WSSSecurityProperties) getSecurityProperties()).getActor())) {
- OutputProcessorChain subOutputProcessorChain = outputProcessorChain.createSubChain(this);
-
- List<XMLSecAttribute> attributes = new ArrayList<XMLSecAttribute>(1);
- attributes.add(createAttribute(WSSConstants.ATT_wsu_Id, this.wsuId));
- createStartElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsse_UsernameToken, false, attributes);
- createStartElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsse_Username, false, null);
- createCharactersAndOutputAsEvent(subOutputProcessorChain, ((WSSSecurityProperties) getSecurityProperties()).getTokenUser());
- createEndElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsse_Username);
- if (((WSSSecurityProperties) getSecurityProperties()).getUsernameTokenPasswordType() != WSSConstants.UsernameTokenPasswordType.PASSWORD_NONE
- && !WSSConstants.USERNAMETOKEN_SIGNED.equals(action)) {
- attributes = new ArrayList<XMLSecAttribute>(1);
- attributes.add(createAttribute(WSSConstants.ATT_NULL_Type,
- ((WSSSecurityProperties) getSecurityProperties()).getUsernameTokenPasswordType() == WSSConstants.UsernameTokenPasswordType.PASSWORD_DIGEST
- ? WSSConstants.UsernameTokenPasswordType.PASSWORD_DIGEST.getNamespace()
- : WSSConstants.UsernameTokenPasswordType.PASSWORD_TEXT.getNamespace()));
- createStartElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsse_Password, false, attributes);
- createCharactersAndOutputAsEvent(subOutputProcessorChain,
- ((WSSSecurityProperties) getSecurityProperties()).getUsernameTokenPasswordType() == WSSConstants.UsernameTokenPasswordType.PASSWORD_DIGEST
- ? WSSUtils.doPasswordDigest(this.nonceValue, this.created.toXMLFormat(), this.password)
- : this.password);
- createEndElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsse_Password);
- }
-
- if (salt != null) {
- createStartElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsse11_Salt, true, null);
- createCharactersAndOutputAsEvent(subOutputProcessorChain, new Base64(76, new byte[]{'\n'}).encodeToString(this.salt));
- createEndElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsse11_Salt);
-
- if (iterations > 0) {
- createStartElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsse11_Iteration, true, null);
- createCharactersAndOutputAsEvent(subOutputProcessorChain, "" + iterations);
- createEndElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsse11_Iteration);
- }
- }
- if (nonceValue != null && !WSSConstants.USERNAMETOKEN_SIGNED.equals(action)) {
- attributes = new ArrayList<XMLSecAttribute>(1);
- attributes.add(createAttribute(WSSConstants.ATT_NULL_EncodingType, WSSConstants.SOAPMESSAGE_NS10_BASE64_ENCODING));
- createStartElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsse_Nonce, false, attributes);
+ if (WSSUtils.isSecurityHeaderElement(xmlSecEvent, ((WSSSecurityProperties) getSecurityProperties()).getActor())) {
+ final QName headerElementName = WSSConstants.TAG_wsse_UsernameToken;
+ WSSUtils.updateSecurityHeaderOrder(outputProcessorChain, headerElementName, getAction(), false);
- createCharactersAndOutputAsEvent(subOutputProcessorChain, new Base64(76, new byte[]{'\n'}).encodeToString(this.nonceValue));
- createEndElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsse_Nonce);
-
- }
-
- if (created != null && !WSSConstants.USERNAMETOKEN_SIGNED.equals(action)) {
- createStartElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsu_Created, false, null);
+ OutputProcessorChain subOutputProcessorChain = outputProcessorChain.createSubChain(this);
- createCharactersAndOutputAsEvent(subOutputProcessorChain, this.created.toXMLFormat());
- createEndElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsu_Created);
+ List<XMLSecAttribute> attributes = new ArrayList<XMLSecAttribute>(1);
+ attributes.add(createAttribute(WSSConstants.ATT_wsu_Id, this.wsuId));
+ createStartElementAndOutputAsEvent(subOutputProcessorChain, headerElementName, false, attributes);
+ createStartElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsse_Username, false, null);
+ createCharactersAndOutputAsEvent(subOutputProcessorChain, ((WSSSecurityProperties) getSecurityProperties()).getTokenUser());
+ createEndElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsse_Username);
+ if (((WSSSecurityProperties) getSecurityProperties()).getUsernameTokenPasswordType() != WSSConstants.UsernameTokenPasswordType.PASSWORD_NONE
+ && !WSSConstants.USERNAMETOKEN_SIGNED.equals(action)) {
+ attributes = new ArrayList<XMLSecAttribute>(1);
+ attributes.add(createAttribute(WSSConstants.ATT_NULL_Type,
+ ((WSSSecurityProperties) getSecurityProperties()).getUsernameTokenPasswordType() == WSSConstants.UsernameTokenPasswordType.PASSWORD_DIGEST
+ ? WSSConstants.UsernameTokenPasswordType.PASSWORD_DIGEST.getNamespace()
+ : WSSConstants.UsernameTokenPasswordType.PASSWORD_TEXT.getNamespace()));
+ createStartElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsse_Password, false, attributes);
+ createCharactersAndOutputAsEvent(subOutputProcessorChain,
+ ((WSSSecurityProperties) getSecurityProperties()).getUsernameTokenPasswordType() == WSSConstants.UsernameTokenPasswordType.PASSWORD_DIGEST
+ ? WSSUtils.doPasswordDigest(this.nonceValue, this.created.toXMLFormat(), this.password)
+ : this.password);
+ createEndElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsse_Password);
+ }
+
+ if (salt != null) {
+ createStartElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsse11_Salt, true, null);
+ createCharactersAndOutputAsEvent(subOutputProcessorChain, new Base64(76, new byte[]{'\n'}).encodeToString(this.salt));
+ createEndElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsse11_Salt);
+
+ if (iterations > 0) {
+ createStartElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsse11_Iteration, true, null);
+ createCharactersAndOutputAsEvent(subOutputProcessorChain, "" + iterations);
+ createEndElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsse11_Iteration);
}
-
- createEndElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsse_UsernameToken);
+ }
+
+ if (nonceValue != null && !WSSConstants.USERNAMETOKEN_SIGNED.equals(action)) {
+ attributes = new ArrayList<XMLSecAttribute>(1);
+ attributes.add(createAttribute(WSSConstants.ATT_NULL_EncodingType, WSSConstants.SOAPMESSAGE_NS10_BASE64_ENCODING));
+ createStartElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsse_Nonce, false, attributes);
+ createCharactersAndOutputAsEvent(subOutputProcessorChain, new Base64(76, new byte[]{'\n'}).encodeToString(this.nonceValue));
+ createEndElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsse_Nonce);
+ }
- outputProcessorChain.removeProcessor(this);
+ if (created != null && !WSSConstants.USERNAMETOKEN_SIGNED.equals(action)) {
+ createStartElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsu_Created, false, null);
+ createCharactersAndOutputAsEvent(subOutputProcessorChain, this.created.toXMLFormat());
+ createEndElementAndOutputAsEvent(subOutputProcessorChain, WSSConstants.TAG_wsu_Created);
}
+
+ createEndElementAndOutputAsEvent(subOutputProcessorChain, headerElementName);
+
+ outputProcessorChain.removeProcessor(this);
}
}
}
Modified: webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/WSSSignatureEndingOutputProcessor.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/WSSSignatureEndingOutputProcessor.java?rev=1484123&r1=1484122&r2=1484123&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/WSSSignatureEndingOutputProcessor.java (original)
+++ webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/WSSSignatureEndingOutputProcessor.java Sat May 18 14:08:00 2013
@@ -22,6 +22,7 @@ import org.apache.wss4j.common.ext.WSSec
import org.apache.wss4j.stax.ext.WSSConstants;
import org.apache.wss4j.stax.ext.WSSSecurityProperties;
import org.apache.wss4j.stax.ext.WSSUtils;
+import org.apache.wss4j.stax.impl.SecurityHeaderOrder;
import org.apache.wss4j.stax.securityToken.WSSecurityTokenConstants;
import org.apache.xml.security.exceptions.XMLSecurityException;
import org.apache.xml.security.stax.ext.OutputProcessorChain;
@@ -36,7 +37,6 @@ import org.apache.xml.security.stax.impl
import org.apache.xml.security.stax.securityEvent.SignatureValueSecurityEvent;
import org.apache.xml.security.stax.securityToken.OutboundSecurityToken;
-import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import java.security.cert.X509Certificate;
@@ -44,17 +44,6 @@ import java.util.*;
public class WSSSignatureEndingOutputProcessor extends AbstractSignatureEndingOutputProcessor {
- private static final List<QName> appendAfterOneOfThisAttributes;
-
- static {
- List<QName> list = new ArrayList<QName>(5);
- list.add(WSSConstants.ATT_wsu_Id);
- list.add(WSSConstants.ATT_NULL_Id);
- list.add(WSSConstants.ATT_NULL_AssertionID);
- list.add(WSSConstants.ATT_NULL_ID);
- appendAfterOneOfThisAttributes = Collections.unmodifiableList(list);
- }
-
private SignedInfoProcessor signedInfoProcessor = null;
public WSSSignatureEndingOutputProcessor(WSSSignatureOutputProcessor signatureOutputProcessor) throws XMLSecurityException {
@@ -200,18 +189,7 @@ public class WSSSignatureEndingOutputPro
}
@Override
- protected List<QName> getAppendAfterOneOfThisAttributes() {
- return appendAfterOneOfThisAttributes;
- }
-
- @Override
- public void doFinal(OutputProcessorChain outputProcessorChain) throws XMLStreamException, XMLSecurityException {
- setAppendAfterThisTokenId(outputProcessorChain.getSecurityContext().<String>get(XMLSecurityConstants.PROP_APPEND_SIGNATURE_ON_THIS_ID));
- super.doFinal(outputProcessorChain);
- }
-
- @Override
- public void flushBufferAndCallbackAfterTokenID(OutputProcessorChain outputProcessorChain,
+ public void flushBufferAndCallbackAfterHeader(OutputProcessorChain outputProcessorChain,
Deque<XMLSecEvent> xmlSecEventDeque)
throws XMLStreamException, XMLSecurityException {
@@ -223,12 +201,25 @@ public class WSSSignatureEndingOutputPro
XMLSecEvent xmlSecEvent = xmlSecEventDeque.pop();
switch (xmlSecEvent.getEventType()) {
case XMLStreamConstants.START_ELEMENT:
- XMLSecStartElement xmlSecStartElement = xmlSecEvent.asStartElement();
- if (xmlSecStartElement.getName().equals(WSSConstants.TAG_wsse_Security)
- && WSSUtils.isResponsibleActorOrRole(
- xmlSecStartElement, actor)) {
+ if (WSSUtils.isSecurityHeaderElement(xmlSecEvent, actor)) {
+
+ WSSUtils.updateSecurityHeaderOrder(
+ outputProcessorChain, WSSConstants.TAG_dsig_Signature, getAction(), true);
+
+ List<SecurityHeaderOrder> securityHeaderOrderList =
+ outputProcessorChain.getSecurityContext().getAsList(SecurityHeaderOrder.class);
+ List<SecurityHeaderOrder> tmpList = null;
+ if (securityHeaderOrderList != null) {
+ tmpList = new ArrayList<SecurityHeaderOrder>(securityHeaderOrderList);
+ securityHeaderOrderList.clear();
+ }
+
outputProcessorChain.reset();
outputProcessorChain.processEvent(xmlSecEvent);
+
+ if (securityHeaderOrderList != null) {
+ securityHeaderOrderList.addAll(tmpList);
+ }
break loop;
}
break;
@@ -236,6 +227,6 @@ public class WSSSignatureEndingOutputPro
outputProcessorChain.reset();
outputProcessorChain.processEvent(xmlSecEvent);
}
- super.flushBufferAndCallbackAfterTokenID(outputProcessorChain, xmlSecEventDeque);
+ super.flushBufferAndCallbackAfterHeader(outputProcessorChain, xmlSecEventDeque);
}
}
Modified: webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/AbstractTestBase.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/AbstractTestBase.java?rev=1484123&r1=1484122&r2=1484123&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/AbstractTestBase.java (original)
+++ webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/AbstractTestBase.java Sat May 18 14:08:00 2013
@@ -273,6 +273,7 @@ public abstract class AbstractTestBase {
}
// Disable PrefixList checking as the stax code doesn't support this yet
+ //todo
List<BSPRule> ignoredRules = new ArrayList<BSPRule>();
ignoredRules.add(BSPRule.R5404);
ignoredRules.add(BSPRule.R5406);
@@ -280,6 +281,7 @@ public abstract class AbstractTestBase {
ignoredRules.add(BSPRule.R5417);
ignoredRules.add(BSPRule.R3063);
ignoredRules.add(BSPRule.R5621);
+ //ignoredRules.add(BSPRule.R5215);
requestData.setIgnoredBSPRules(ignoredRules);
wss4JHandler.doReceiver(messageContext, requestData, false);
Modified: webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/EncDecryptionTest.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/EncDecryptionTest.java?rev=1484123&r1=1484122&r2=1484123&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/EncDecryptionTest.java (original)
+++ webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/EncDecryptionTest.java Sat May 18 14:08:00 2013
@@ -31,11 +31,13 @@ import org.apache.wss4j.dom.message.WSSe
import org.apache.wss4j.stax.ConfigurationConverter;
import org.apache.wss4j.stax.WSSec;
import org.apache.wss4j.stax.ext.InboundWSSec;
+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.securityToken.WSSecurityTokenConstants;
import org.apache.wss4j.stax.securityEvent.*;
import org.apache.wss4j.stax.test.utils.StAX2DOM;
+import org.apache.wss4j.stax.test.utils.XmlReaderToWriter;
import org.apache.xml.security.exceptions.XMLSecurityException;
import org.apache.xml.security.stax.config.Init;
import org.apache.xml.security.stax.config.TransformerAlgorithmMapper;
@@ -56,6 +58,7 @@ import javax.crypto.SecretKey;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
@@ -2463,5 +2466,38 @@ public class EncDecryptionTest extends A
operationSecurityEvents.size() + encryptedPartSecurityEvents.size());
}
}
-
+
+ @Test
+ public void testElementoEncryptNotFound() throws Exception {
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ {
+ WSSSecurityProperties securityProperties = new WSSSecurityProperties();
+ WSSConstants.Action[] actions = new WSSConstants.Action[]{WSSConstants.ENCRYPT};
+ securityProperties.setOutAction(actions);
+ securityProperties.loadEncryptionKeystore(this.getClass().getClassLoader().getResource("transmitter.jks"), "default".toCharArray());
+ securityProperties.setEncryptionUser("receiver");
+ securityProperties.setTokenUser("transmitter");
+ securityProperties.setCallbackHandler(new CallbackHandlerImpl());
+ securityProperties.addEncryptionPart(
+ new SecurePart(new QName(WSSConstants.NS_WSSE10, "UsernameToken"), SecurePart.Modifier.Element)
+ );
+ securityProperties.addEncryptionPart(
+ new SecurePart(new QName(WSSConstants.NS_SOAP11, "Body"), SecurePart.Modifier.Content)
+ );
+
+ OutboundWSSec wsSecOut = WSSec.getOutboundWSSec(securityProperties);
+ XMLStreamWriter xmlStreamWriter = wsSecOut.processOutMessage(baos, "UTF-8", new ArrayList<SecurityEvent>());
+ XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(this.getClass().getClassLoader().getResourceAsStream("testdata/plain-soap-1.1.xml"));
+
+ try {
+ XmlReaderToWriter.writeAll(xmlStreamReader, xmlStreamWriter);
+ xmlStreamWriter.close();
+ Assert.fail("Exception expected");
+ } catch (XMLStreamException e) {
+ org.junit.Assert.assertTrue(e.getCause() instanceof XMLSecurityException);
+ org.junit.Assert.assertEquals("Part to encrypt not found: {http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}UsernameToken", e.getCause().getMessage());
+ }
+ }
+ }
}
Added: webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/HeaderOrderingTest.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/HeaderOrderingTest.java?rev=1484123&view=auto
==============================================================================
--- webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/HeaderOrderingTest.java (added)
+++ webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/HeaderOrderingTest.java Sat May 18 14:08:00 2013
@@ -0,0 +1,668 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.wss4j.stax.test;
+
+import org.apache.wss4j.common.ext.WSSecurityException;
+import org.apache.wss4j.dom.WSConstants;
+import org.apache.wss4j.dom.handler.WSHandlerConstants;
+import org.apache.wss4j.stax.WSSec;
+import org.apache.wss4j.stax.ext.InboundWSSec;
+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.securityToken.WSSecurityTokenConstants;
+import org.apache.wss4j.stax.test.utils.StAX2DOM;
+import org.apache.wss4j.stax.test.utils.XmlReaderToWriter;
+import org.apache.xml.security.stax.ext.SecurePart;
+import org.apache.xml.security.stax.securityEvent.SecurityEvent;
+import org.apache.xml.security.stax.securityEvent.SecurityEventListener;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+public class HeaderOrderingTest extends AbstractTestBase {
+
+ @Test
+ public void testUsernameTokenSignedStrictHeaderOrdering() throws Exception {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ {
+ WSSSecurityProperties securityProperties = new WSSSecurityProperties();
+ WSSConstants.Action[] actions = new WSSConstants.Action[]{WSSConstants.SIGNATURE, WSSConstants.USERNAMETOKEN};
+ securityProperties.setOutAction(actions);
+ securityProperties.loadSignatureKeyStore(this.getClass().getClassLoader().getResource("transmitter.jks"), "default".toCharArray());
+ securityProperties.setSignatureUser("transmitter");
+ securityProperties.setTokenUser("transmitter");
+ securityProperties.setCallbackHandler(new CallbackHandlerImpl());
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_WSSE10, "UsernameToken"), SecurePart.Modifier.Element)
+ );
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_SOAP11, "Body"), SecurePart.Modifier.Element)
+ );
+
+ OutboundWSSec wsSecOut = WSSec.getOutboundWSSec(securityProperties);
+ XMLStreamWriter xmlStreamWriter = wsSecOut.processOutMessage(baos, "UTF-8", new ArrayList<SecurityEvent>());
+ XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(this.getClass().getClassLoader().getResourceAsStream("testdata/plain-soap-1.1.xml"));
+ XmlReaderToWriter.writeAll(xmlStreamReader, xmlStreamWriter);
+ xmlStreamWriter.close();
+
+ Document document = documentBuilderFactory.newDocumentBuilder().parse(new ByteArrayInputStream(baos.toByteArray()));
+
+ NodeList securityHeaderElement = document.getElementsByTagNameNS(WSConstants.WSSE_NS, "Security");
+ Assert.assertEquals(1, securityHeaderElement.getLength());
+ NodeList childs = securityHeaderElement.item(0).getChildNodes();
+
+ Assert.assertEquals(childs.getLength(), 2);
+ Assert.assertEquals(childs.item(0).getLocalName(), "UsernameToken");
+ Assert.assertEquals(childs.item(1).getLocalName(), "Signature");
+
+ NodeList sigReferences = document.getElementsByTagNameNS(WSConstants.SIG_NS, "Reference");
+ Assert.assertEquals(2, sigReferences.getLength());
+ }
+
+ //done UsernameToken; now verification:
+ {
+ String action = WSHandlerConstants.SIGNATURE + " " + WSHandlerConstants.USERNAME_TOKEN;
+ doInboundSecurityWithWSS4J(documentBuilderFactory.newDocumentBuilder().parse(new ByteArrayInputStream(baos.toByteArray())), action);
+ }
+ }
+
+ @Test
+ public void testUsernameTokenSignedLaxHeaderOrdering() throws Exception {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ {
+ WSSSecurityProperties securityProperties = new WSSSecurityProperties();
+ WSSConstants.Action[] actions = new WSSConstants.Action[]{WSSConstants.USERNAMETOKEN, WSSConstants.SIGNATURE};
+ securityProperties.setOutAction(actions);
+ securityProperties.loadSignatureKeyStore(this.getClass().getClassLoader().getResource("transmitter.jks"), "default".toCharArray());
+ securityProperties.setSignatureUser("transmitter");
+ securityProperties.setTokenUser("transmitter");
+ securityProperties.setCallbackHandler(new CallbackHandlerImpl());
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_WSSE10, "UsernameToken"), SecurePart.Modifier.Element)
+ );
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_SOAP11, "Body"), SecurePart.Modifier.Element)
+ );
+
+ OutboundWSSec wsSecOut = WSSec.getOutboundWSSec(securityProperties);
+ XMLStreamWriter xmlStreamWriter = wsSecOut.processOutMessage(baos, "UTF-8", new ArrayList<SecurityEvent>());
+ XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(this.getClass().getClassLoader().getResourceAsStream("testdata/plain-soap-1.1.xml"));
+ XmlReaderToWriter.writeAll(xmlStreamReader, xmlStreamWriter);
+ xmlStreamWriter.close();
+
+ Document document = documentBuilderFactory.newDocumentBuilder().parse(new ByteArrayInputStream(baos.toByteArray()));
+
+ NodeList securityHeaderElement = document.getElementsByTagNameNS(WSConstants.WSSE_NS, "Security");
+ Assert.assertEquals(1, securityHeaderElement.getLength());
+ NodeList childs = securityHeaderElement.item(0).getChildNodes();
+
+ Assert.assertEquals(childs.getLength(), 2);
+ Assert.assertEquals(childs.item(0).getLocalName(), "Signature");
+ Assert.assertEquals(childs.item(1).getLocalName(), "UsernameToken");
+
+ NodeList sigReferences = document.getElementsByTagNameNS(WSConstants.SIG_NS, "Reference");
+ Assert.assertEquals(2, sigReferences.getLength());
+ }
+
+ //done UsernameToken; now verification:
+ {
+ String action = WSHandlerConstants.USERNAME_TOKEN + " " + WSHandlerConstants.SIGNATURE;
+ doInboundSecurityWithWSS4J(documentBuilderFactory.newDocumentBuilder().parse(new ByteArrayInputStream(baos.toByteArray())), action);
+ }
+ }
+
+ @Test
+ public void testUsernameTokenSignedWithBSTStrictHeaderOrdering() throws Exception {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ {
+ WSSSecurityProperties securityProperties = new WSSSecurityProperties();
+ WSSConstants.Action[] actions = new WSSConstants.Action[]{WSSConstants.SIGNATURE, WSSConstants.USERNAMETOKEN};
+ securityProperties.setOutAction(actions);
+ securityProperties.loadSignatureKeyStore(this.getClass().getClassLoader().getResource("transmitter.jks"), "default".toCharArray());
+ securityProperties.setSignatureUser("transmitter");
+ securityProperties.setTokenUser("transmitter");
+ securityProperties.setCallbackHandler(new CallbackHandlerImpl());
+ securityProperties.setSignatureKeyIdentifier(WSSecurityTokenConstants.KeyIdentifier_SecurityTokenDirectReference);
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_WSSE10, "UsernameToken"), SecurePart.Modifier.Element)
+ );
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_SOAP11, "Body"), SecurePart.Modifier.Element)
+ );
+
+ OutboundWSSec wsSecOut = WSSec.getOutboundWSSec(securityProperties);
+ XMLStreamWriter xmlStreamWriter = wsSecOut.processOutMessage(baos, "UTF-8", new ArrayList<SecurityEvent>());
+ XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(this.getClass().getClassLoader().getResourceAsStream("testdata/plain-soap-1.1.xml"));
+ XmlReaderToWriter.writeAll(xmlStreamReader, xmlStreamWriter);
+ xmlStreamWriter.close();
+
+ Document document = documentBuilderFactory.newDocumentBuilder().parse(new ByteArrayInputStream(baos.toByteArray()));
+
+ NodeList securityHeaderElement = document.getElementsByTagNameNS(WSConstants.WSSE_NS, "Security");
+ Assert.assertEquals(1, securityHeaderElement.getLength());
+ NodeList childs = securityHeaderElement.item(0).getChildNodes();
+
+ Assert.assertEquals(childs.getLength(), 3);
+ Assert.assertEquals(childs.item(0).getLocalName(), "UsernameToken");
+ Assert.assertEquals(childs.item(1).getLocalName(), "BinarySecurityToken");
+ Assert.assertEquals(childs.item(2).getLocalName(), "Signature");
+
+ NodeList sigReferences = document.getElementsByTagNameNS(WSConstants.SIG_NS, "Reference");
+ Assert.assertEquals(2, sigReferences.getLength());
+ }
+
+ //done UsernameToken; now verification:
+ {
+ String action = WSHandlerConstants.SIGNATURE + " " + WSHandlerConstants.USERNAME_TOKEN;
+ doInboundSecurityWithWSS4J(documentBuilderFactory.newDocumentBuilder().parse(new ByteArrayInputStream(baos.toByteArray())), action);
+ }
+ }
+
+ @Test
+ public void testTimestampSignedStrictHeaderOrdering() throws Exception {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ {
+ WSSSecurityProperties securityProperties = new WSSSecurityProperties();
+ WSSConstants.Action[] actions = new WSSConstants.Action[]{WSSConstants.SIGNATURE, WSSConstants.TIMESTAMP};
+ securityProperties.setOutAction(actions);
+ securityProperties.loadSignatureKeyStore(this.getClass().getClassLoader().getResource("transmitter.jks"), "default".toCharArray());
+ securityProperties.setSignatureUser("transmitter");
+ securityProperties.setTokenUser("transmitter");
+ securityProperties.setCallbackHandler(new CallbackHandlerImpl());
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_WSU10, "Timestamp"), SecurePart.Modifier.Element)
+ );
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_SOAP11, "Body"), SecurePart.Modifier.Element)
+ );
+
+ OutboundWSSec wsSecOut = WSSec.getOutboundWSSec(securityProperties);
+ XMLStreamWriter xmlStreamWriter = wsSecOut.processOutMessage(baos, "UTF-8", new ArrayList<SecurityEvent>());
+ XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(this.getClass().getClassLoader().getResourceAsStream("testdata/plain-soap-1.1.xml"));
+ XmlReaderToWriter.writeAll(xmlStreamReader, xmlStreamWriter);
+ xmlStreamWriter.close();
+
+ Document document = documentBuilderFactory.newDocumentBuilder().parse(new ByteArrayInputStream(baos.toByteArray()));
+
+ NodeList securityHeaderElement = document.getElementsByTagNameNS(WSConstants.WSSE_NS, "Security");
+ Assert.assertEquals(1, securityHeaderElement.getLength());
+ NodeList childs = securityHeaderElement.item(0).getChildNodes();
+
+ Assert.assertEquals(childs.getLength(), 2);
+ Assert.assertEquals(childs.item(0).getLocalName(), "Timestamp");
+ Assert.assertEquals(childs.item(1).getLocalName(), "Signature");
+
+ NodeList sigReferences = document.getElementsByTagNameNS(WSConstants.SIG_NS, "Reference");
+ Assert.assertEquals(2, sigReferences.getLength());
+ }
+
+ //done UsernameToken; now verification:
+ {
+ String action = WSHandlerConstants.SIGNATURE + " " + WSHandlerConstants.TIMESTAMP;
+ doInboundSecurityWithWSS4J(documentBuilderFactory.newDocumentBuilder().parse(new ByteArrayInputStream(baos.toByteArray())), action);
+ }
+ }
+
+ @Test
+ public void testTimestampSignedLaxHeaderOrdering() throws Exception {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ {
+ WSSSecurityProperties securityProperties = new WSSSecurityProperties();
+ WSSConstants.Action[] actions = new WSSConstants.Action[]{WSSConstants.TIMESTAMP, WSSConstants.SIGNATURE};
+ securityProperties.setOutAction(actions);
+ securityProperties.loadSignatureKeyStore(this.getClass().getClassLoader().getResource("transmitter.jks"), "default".toCharArray());
+ securityProperties.setSignatureUser("transmitter");
+ securityProperties.setTokenUser("transmitter");
+ securityProperties.setCallbackHandler(new CallbackHandlerImpl());
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_WSU10, "Timestamp"), SecurePart.Modifier.Element)
+ );
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_SOAP11, "Body"), SecurePart.Modifier.Element)
+ );
+
+ OutboundWSSec wsSecOut = WSSec.getOutboundWSSec(securityProperties);
+ XMLStreamWriter xmlStreamWriter = wsSecOut.processOutMessage(baos, "UTF-8", new ArrayList<SecurityEvent>());
+ XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(this.getClass().getClassLoader().getResourceAsStream("testdata/plain-soap-1.1.xml"));
+ XmlReaderToWriter.writeAll(xmlStreamReader, xmlStreamWriter);
+ xmlStreamWriter.close();
+
+ Document document = documentBuilderFactory.newDocumentBuilder().parse(new ByteArrayInputStream(baos.toByteArray()));
+
+ NodeList securityHeaderElement = document.getElementsByTagNameNS(WSConstants.WSSE_NS, "Security");
+ Assert.assertEquals(1, securityHeaderElement.getLength());
+ NodeList childs = securityHeaderElement.item(0).getChildNodes();
+
+ Assert.assertEquals(childs.getLength(), 2);
+ Assert.assertEquals(childs.item(0).getLocalName(), "Signature");
+ Assert.assertEquals(childs.item(1).getLocalName(), "Timestamp");
+
+ NodeList sigReferences = document.getElementsByTagNameNS(WSConstants.SIG_NS, "Reference");
+ Assert.assertEquals(2, sigReferences.getLength());
+ }
+
+ //done UsernameToken; now verification:
+ {
+ String action = WSHandlerConstants.TIMESTAMP + " " + WSHandlerConstants.SIGNATURE;
+ doInboundSecurityWithWSS4J(documentBuilderFactory.newDocumentBuilder().parse(new ByteArrayInputStream(baos.toByteArray())), action);
+ }
+ }
+
+ @Test
+ public void testUsernameTokenPlusTimestampSignedStrictHeaderOrdering() throws Exception {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ {
+ WSSSecurityProperties securityProperties = new WSSSecurityProperties();
+ WSSConstants.Action[] actions = new WSSConstants.Action[]{WSSConstants.SIGNATURE, WSSConstants.USERNAMETOKEN, WSSConstants.TIMESTAMP};
+ securityProperties.setOutAction(actions);
+ securityProperties.loadSignatureKeyStore(this.getClass().getClassLoader().getResource("transmitter.jks"), "default".toCharArray());
+ securityProperties.setSignatureUser("transmitter");
+ securityProperties.setTokenUser("transmitter");
+ securityProperties.setCallbackHandler(new CallbackHandlerImpl());
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_WSSE10, "UsernameToken"), SecurePart.Modifier.Element)
+ );
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_WSU10, "Timestamp"), SecurePart.Modifier.Element)
+ );
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_SOAP11, "Body"), SecurePart.Modifier.Element)
+ );
+
+ OutboundWSSec wsSecOut = WSSec.getOutboundWSSec(securityProperties);
+ XMLStreamWriter xmlStreamWriter = wsSecOut.processOutMessage(baos, "UTF-8", new ArrayList<SecurityEvent>());
+ XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(this.getClass().getClassLoader().getResourceAsStream("testdata/plain-soap-1.1.xml"));
+ XmlReaderToWriter.writeAll(xmlStreamReader, xmlStreamWriter);
+ xmlStreamWriter.close();
+
+ Document document = documentBuilderFactory.newDocumentBuilder().parse(new ByteArrayInputStream(baos.toByteArray()));
+
+ NodeList securityHeaderElement = document.getElementsByTagNameNS(WSConstants.WSSE_NS, "Security");
+ Assert.assertEquals(1, securityHeaderElement.getLength());
+ NodeList childs = securityHeaderElement.item(0).getChildNodes();
+
+ Assert.assertEquals(childs.getLength(), 3);
+ Assert.assertEquals(childs.item(0).getLocalName(), "Timestamp");
+ Assert.assertEquals(childs.item(1).getLocalName(), "UsernameToken");
+ Assert.assertEquals(childs.item(2).getLocalName(), "Signature");
+
+ NodeList sigReferences = document.getElementsByTagNameNS(WSConstants.SIG_NS, "Reference");
+ Assert.assertEquals(3, sigReferences.getLength());
+ }
+
+ //done UsernameToken; now verification:
+ {
+ String action = WSHandlerConstants.SIGNATURE + " " + WSHandlerConstants.USERNAME_TOKEN + " " + WSHandlerConstants.TIMESTAMP;
+ doInboundSecurityWithWSS4J(documentBuilderFactory.newDocumentBuilder().parse(new ByteArrayInputStream(baos.toByteArray())), action);
+ }
+ }
+
+ @Test
+ public void testTimestampPlusUsernameTokenSignedStrictHeaderOrdering() throws Exception {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ {
+ WSSSecurityProperties securityProperties = new WSSSecurityProperties();
+ WSSConstants.Action[] actions = new WSSConstants.Action[]{WSSConstants.SIGNATURE, WSSConstants.TIMESTAMP, WSSConstants.USERNAMETOKEN};
+ securityProperties.setOutAction(actions);
+ securityProperties.loadSignatureKeyStore(this.getClass().getClassLoader().getResource("transmitter.jks"), "default".toCharArray());
+ securityProperties.setSignatureUser("transmitter");
+ securityProperties.setTokenUser("transmitter");
+ securityProperties.setCallbackHandler(new CallbackHandlerImpl());
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_WSSE10, "UsernameToken"), SecurePart.Modifier.Element)
+ );
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_WSU10, "Timestamp"), SecurePart.Modifier.Element)
+ );
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_SOAP11, "Body"), SecurePart.Modifier.Element)
+ );
+
+ OutboundWSSec wsSecOut = WSSec.getOutboundWSSec(securityProperties);
+ XMLStreamWriter xmlStreamWriter = wsSecOut.processOutMessage(baos, "UTF-8", new ArrayList<SecurityEvent>());
+ XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(this.getClass().getClassLoader().getResourceAsStream("testdata/plain-soap-1.1.xml"));
+ XmlReaderToWriter.writeAll(xmlStreamReader, xmlStreamWriter);
+ xmlStreamWriter.close();
+
+ Document document = documentBuilderFactory.newDocumentBuilder().parse(new ByteArrayInputStream(baos.toByteArray()));
+
+ NodeList securityHeaderElement = document.getElementsByTagNameNS(WSConstants.WSSE_NS, "Security");
+ Assert.assertEquals(1, securityHeaderElement.getLength());
+ NodeList childs = securityHeaderElement.item(0).getChildNodes();
+
+ Assert.assertEquals(childs.getLength(), 3);
+ Assert.assertEquals(childs.item(0).getLocalName(), "UsernameToken");
+ Assert.assertEquals(childs.item(1).getLocalName(), "Timestamp");
+ Assert.assertEquals(childs.item(2).getLocalName(), "Signature");
+
+ NodeList sigReferences = document.getElementsByTagNameNS(WSConstants.SIG_NS, "Reference");
+ Assert.assertEquals(3, sigReferences.getLength());
+ }
+
+ //done UsernameToken; now verification:
+ {
+ String action = WSHandlerConstants.SIGNATURE + " " + WSHandlerConstants.TIMESTAMP + " " + WSHandlerConstants.USERNAME_TOKEN;
+ doInboundSecurityWithWSS4J(documentBuilderFactory.newDocumentBuilder().parse(new ByteArrayInputStream(baos.toByteArray())), action);
+ }
+ }
+
+ @Test
+ public void testUsernameTokenPlusTimestampWithBSTSignedStrictHeaderOrdering() throws Exception {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ {
+ WSSSecurityProperties securityProperties = new WSSSecurityProperties();
+ WSSConstants.Action[] actions = new WSSConstants.Action[]{WSSConstants.SIGNATURE, WSSConstants.USERNAMETOKEN, WSSConstants.TIMESTAMP};
+ securityProperties.setOutAction(actions);
+ securityProperties.loadSignatureKeyStore(this.getClass().getClassLoader().getResource("transmitter.jks"), "default".toCharArray());
+ securityProperties.setSignatureUser("transmitter");
+ securityProperties.setTokenUser("transmitter");
+ securityProperties.setCallbackHandler(new CallbackHandlerImpl());
+ securityProperties.setSignatureKeyIdentifier(WSSecurityTokenConstants.KeyIdentifier_SecurityTokenDirectReference);
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_WSSE10, "UsernameToken"), SecurePart.Modifier.Element)
+ );
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_WSU10, "Timestamp"), SecurePart.Modifier.Element)
+ );
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_SOAP11, "Body"), SecurePart.Modifier.Element)
+ );
+
+ OutboundWSSec wsSecOut = WSSec.getOutboundWSSec(securityProperties);
+ XMLStreamWriter xmlStreamWriter = wsSecOut.processOutMessage(baos, "UTF-8", new ArrayList<SecurityEvent>());
+ XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(this.getClass().getClassLoader().getResourceAsStream("testdata/plain-soap-1.1.xml"));
+ XmlReaderToWriter.writeAll(xmlStreamReader, xmlStreamWriter);
+ xmlStreamWriter.close();
+
+ Document document = documentBuilderFactory.newDocumentBuilder().parse(new ByteArrayInputStream(baos.toByteArray()));
+
+ NodeList securityHeaderElement = document.getElementsByTagNameNS(WSConstants.WSSE_NS, "Security");
+ Assert.assertEquals(1, securityHeaderElement.getLength());
+ NodeList childs = securityHeaderElement.item(0).getChildNodes();
+
+ Assert.assertEquals(childs.getLength(), 4);
+ Assert.assertEquals(childs.item(0).getLocalName(), "Timestamp");
+ Assert.assertEquals(childs.item(1).getLocalName(), "UsernameToken");
+ Assert.assertEquals(childs.item(2).getLocalName(), "BinarySecurityToken");
+ Assert.assertEquals(childs.item(3).getLocalName(), "Signature");
+
+ NodeList sigReferences = document.getElementsByTagNameNS(WSConstants.SIG_NS, "Reference");
+ Assert.assertEquals(3, sigReferences.getLength());
+ }
+
+ //done UsernameToken; now verification:
+ {
+ String action = WSHandlerConstants.SIGNATURE + " " + WSHandlerConstants.USERNAME_TOKEN + " " + WSHandlerConstants.TIMESTAMP;
+ doInboundSecurityWithWSS4J(documentBuilderFactory.newDocumentBuilder().parse(new ByteArrayInputStream(baos.toByteArray())), action);
+ }
+ }
+
+ @Test
+ public void testUsernameTokenPlusTimestampSignedAndEncryptedStrictHeaderOrdering() throws Exception {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ {
+ WSSSecurityProperties securityProperties = new WSSSecurityProperties();
+ WSSConstants.Action[] actions = new WSSConstants.Action[]{WSSConstants.SIGNATURE, WSSConstants.ENCRYPT, WSSConstants.USERNAMETOKEN, WSSConstants.TIMESTAMP};
+ securityProperties.setOutAction(actions);
+ securityProperties.loadSignatureKeyStore(this.getClass().getClassLoader().getResource("transmitter.jks"), "default".toCharArray());
+ securityProperties.setSignatureUser("transmitter");
+ securityProperties.setTokenUser("transmitter");
+ securityProperties.setCallbackHandler(new CallbackHandlerImpl());
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_WSSE10, "UsernameToken"), SecurePart.Modifier.Element)
+ );
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_WSU10, "Timestamp"), SecurePart.Modifier.Element)
+ );
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_SOAP11, "Body"), SecurePart.Modifier.Element)
+ );
+
+ securityProperties.setEncryptionUser("receiver");
+ securityProperties.loadEncryptionKeystore(this.getClass().getClassLoader().getResource("transmitter.jks"), "default".toCharArray());
+ securityProperties.addEncryptionPart(
+ new SecurePart(new QName(WSSConstants.NS_WSSE10, "UsernameToken"), SecurePart.Modifier.Element)
+ );
+ securityProperties.addEncryptionPart(
+ new SecurePart(new QName(WSSConstants.NS_WSU10, "Timestamp"), SecurePart.Modifier.Element)
+ );
+ securityProperties.addEncryptionPart(
+ new SecurePart(new QName(WSSConstants.NS_SOAP11, "Body"), SecurePart.Modifier.Content)
+ );
+
+ OutboundWSSec wsSecOut = WSSec.getOutboundWSSec(securityProperties);
+ XMLStreamWriter xmlStreamWriter = wsSecOut.processOutMessage(baos, "UTF-8", new ArrayList<SecurityEvent>());
+ XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(this.getClass().getClassLoader().getResourceAsStream("testdata/plain-soap-1.1.xml"));
+ XmlReaderToWriter.writeAll(xmlStreamReader, xmlStreamWriter);
+ xmlStreamWriter.close();
+
+ Document document = documentBuilderFactory.newDocumentBuilder().parse(new ByteArrayInputStream(baos.toByteArray()));
+
+ NodeList securityHeaderElement = document.getElementsByTagNameNS(WSConstants.WSSE_NS, "Security");
+ Assert.assertEquals(1, securityHeaderElement.getLength());
+ NodeList childs = securityHeaderElement.item(0).getChildNodes();
+
+ Assert.assertEquals(childs.getLength(), 4);
+ Assert.assertEquals(childs.item(0).getLocalName(), "EncryptedKey");
+ Assert.assertEquals(childs.item(1).getLocalName(), "EncryptedData");
+ Assert.assertEquals(childs.item(2).getLocalName(), "EncryptedData");
+ Assert.assertEquals(childs.item(3).getLocalName(), "Signature");
+
+ NodeList sigReferences = document.getElementsByTagNameNS(WSConstants.SIG_NS, "Reference");
+ Assert.assertEquals(3, sigReferences.getLength());
+ }
+
+ //done UsernameToken; now verification:
+ {
+ String action = WSHandlerConstants.SIGNATURE + " " + WSHandlerConstants.USERNAME_TOKEN + " " + WSHandlerConstants.TIMESTAMP + " " + WSHandlerConstants.ENCRYPT;
+ doInboundSecurityWithWSS4J(documentBuilderFactory.newDocumentBuilder().parse(new ByteArrayInputStream(baos.toByteArray())), action);
+ }
+ }
+
+ @Test
+ public void testUsernameTokenPlusTimestampWithBSTSignedAndEncryptedStrictHeaderOrdering() throws Exception {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ {
+ WSSSecurityProperties securityProperties = new WSSSecurityProperties();
+ WSSConstants.Action[] actions = new WSSConstants.Action[]{WSSConstants.SIGNATURE, WSSConstants.ENCRYPT, WSSConstants.USERNAMETOKEN, WSSConstants.TIMESTAMP};
+ securityProperties.setOutAction(actions);
+ securityProperties.loadSignatureKeyStore(this.getClass().getClassLoader().getResource("transmitter.jks"), "default".toCharArray());
+ securityProperties.setSignatureUser("transmitter");
+ securityProperties.setTokenUser("transmitter");
+ securityProperties.setCallbackHandler(new CallbackHandlerImpl());
+ securityProperties.setSignatureKeyIdentifier(WSSecurityTokenConstants.KeyIdentifier_SecurityTokenDirectReference);
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_WSSE10, "UsernameToken"), SecurePart.Modifier.Element)
+ );
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_WSU10, "Timestamp"), SecurePart.Modifier.Element)
+ );
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_SOAP11, "Body"), SecurePart.Modifier.Element)
+ );
+
+ securityProperties.setEncryptionUser("receiver");
+ securityProperties.loadEncryptionKeystore(this.getClass().getClassLoader().getResource("transmitter.jks"), "default".toCharArray());
+ securityProperties.setEncryptionKeyIdentifier(WSSecurityTokenConstants.KeyIdentifier_SecurityTokenDirectReference);
+ securityProperties.addEncryptionPart(
+ new SecurePart(new QName(WSSConstants.NS_WSSE10, "UsernameToken"), SecurePart.Modifier.Element)
+ );
+ securityProperties.addEncryptionPart(
+ new SecurePart(new QName(WSSConstants.NS_WSU10, "Timestamp"), SecurePart.Modifier.Element)
+ );
+ securityProperties.addEncryptionPart(
+ new SecurePart(new QName(WSSConstants.NS_SOAP11, "Body"), SecurePart.Modifier.Content)
+ );
+
+ OutboundWSSec wsSecOut = WSSec.getOutboundWSSec(securityProperties);
+ XMLStreamWriter xmlStreamWriter = wsSecOut.processOutMessage(baos, "UTF-8", new ArrayList<SecurityEvent>());
+ XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(this.getClass().getClassLoader().getResourceAsStream("testdata/plain-soap-1.1.xml"));
+ XmlReaderToWriter.writeAll(xmlStreamReader, xmlStreamWriter);
+ xmlStreamWriter.close();
+
+ Document document = documentBuilderFactory.newDocumentBuilder().parse(new ByteArrayInputStream(baos.toByteArray()));
+
+ NodeList securityHeaderElement = document.getElementsByTagNameNS(WSConstants.WSSE_NS, "Security");
+ Assert.assertEquals(1, securityHeaderElement.getLength());
+ NodeList childs = securityHeaderElement.item(0).getChildNodes();
+
+ Assert.assertEquals(childs.getLength(), 6);
+ Assert.assertEquals(childs.item(0).getLocalName(), "BinarySecurityToken");
+ Assert.assertEquals(childs.item(1).getLocalName(), "EncryptedKey");
+ Assert.assertEquals(childs.item(2).getLocalName(), "EncryptedData");
+ Assert.assertEquals(childs.item(3).getLocalName(), "EncryptedData");
+ Assert.assertEquals(childs.item(4).getLocalName(), "BinarySecurityToken");
+ Assert.assertEquals(childs.item(5).getLocalName(), "Signature");
+
+ NodeList sigReferences = document.getElementsByTagNameNS(WSConstants.SIG_NS, "Reference");
+ Assert.assertEquals(3, sigReferences.getLength());
+ }
+
+ //done UsernameToken; now verification:
+ {
+ String action = WSHandlerConstants.SIGNATURE + " " + WSHandlerConstants.USERNAME_TOKEN + " " + WSHandlerConstants.TIMESTAMP + " " + WSHandlerConstants.ENCRYPT;
+ doInboundSecurityWithWSS4J(documentBuilderFactory.newDocumentBuilder().parse(new ByteArrayInputStream(baos.toByteArray())), action);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testSignatureConfirmationUsernameTokenTimestampStrictHeaderOrdering() throws Exception {
+
+ List<byte[]> sigv;
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ {
+ InputStream sourceDocument = this.getClass().getClassLoader().getResourceAsStream("testdata/plain-soap-1.1.xml");
+ String action = WSHandlerConstants.SIGNATURE;
+ Properties properties = new Properties();
+ properties.setProperty(WSHandlerConstants.ENABLE_SIGNATURE_CONFIRMATION, "true");
+ Map<String, Object> messageContext = doOutboundSecurityWithWSS4J_1(sourceDocument, action, properties);
+ sigv = (List<byte[]>) messageContext.get(WSHandlerConstants.SEND_SIGV);
+ Document securedDocument = (Document) messageContext.get(SECURED_DOCUMENT);
+
+ //some test that we can really sure we get what we want from WSS4J
+ NodeList nodeList = securedDocument.getElementsByTagNameNS(WSSConstants.TAG_dsig_Signature.getNamespaceURI(), WSSConstants.TAG_dsig_Signature.getLocalPart());
+ Assert.assertEquals(nodeList.item(0).getParentNode().getLocalName(), WSSConstants.TAG_wsse_Security.getLocalPart());
+
+ javax.xml.transform.Transformer transformer = TRANSFORMER_FACTORY.newTransformer();
+ transformer.transform(new DOMSource(securedDocument), new StreamResult(baos));
+ }
+
+ final List<SecurityEvent> securityEventList = new ArrayList<SecurityEvent>();
+ //done signature; now test sig-verification:
+ {
+ WSSSecurityProperties securityProperties = new WSSSecurityProperties();
+ securityProperties.loadSignatureVerificationKeystore(this.getClass().getClassLoader().getResource("receiver.jks"), "default".toCharArray());
+ InboundWSSec wsSecIn = WSSec.getInboundWSSec(securityProperties);
+
+ SecurityEventListener securityEventListener = new SecurityEventListener() {
+ @Override
+ public void registerSecurityEvent(SecurityEvent securityEvent) throws WSSecurityException {
+ securityEventList.add(securityEvent);
+ }
+ };
+
+ XMLStreamReader xmlStreamReader = wsSecIn.processInMessage(xmlInputFactory.createXMLStreamReader(new ByteArrayInputStream(baos.toByteArray())), new ArrayList<SecurityEvent>(), securityEventListener);
+
+ Document document = StAX2DOM.readDoc(documentBuilderFactory.newDocumentBuilder(), xmlStreamReader);
+
+ //header element must still be there
+ NodeList nodeList = document.getElementsByTagNameNS(WSSConstants.TAG_dsig_Signature.getNamespaceURI(), WSSConstants.TAG_dsig_Signature.getLocalPart());
+ Assert.assertEquals(nodeList.getLength(), 1);
+ Assert.assertEquals(nodeList.item(0).getParentNode().getLocalName(), WSSConstants.TAG_wsse_Security.getLocalPart());
+ }
+
+ //so we have a request generated, now do the response:
+ baos = new ByteArrayOutputStream();
+ {
+ WSSSecurityProperties securityProperties = new WSSSecurityProperties();
+ WSSConstants.Action[] actions = new WSSConstants.Action[]{WSSConstants.SIGNATURE, WSSConstants.USERNAMETOKEN, WSSConstants.TIMESTAMP};
+ securityProperties.setOutAction(actions);
+ securityProperties.setSignatureKeyIdentifier(WSSecurityTokenConstants.KeyIdentifier_SecurityTokenDirectReference);
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_WSSE10, "UsernameToken"), SecurePart.Modifier.Element)
+ );
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_WSU10, "Timestamp"), SecurePart.Modifier.Element)
+ );
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_SOAP11, "Body"), SecurePart.Modifier.Element)
+ );
+ securityProperties.loadSignatureKeyStore(this.getClass().getClassLoader().getResource("receiver.jks"), "default".toCharArray());
+ securityProperties.setSignatureUser("receiver");
+ securityProperties.setTokenUser("transmitter");
+ securityProperties.setEnableSignatureConfirmation(true);
+ securityProperties.setCallbackHandler(new CallbackHandlerImpl());
+
+ OutboundWSSec wsSecOut = WSSec.getOutboundWSSec(securityProperties);
+ XMLStreamWriter xmlStreamWriter = wsSecOut.processOutMessage(baos, "UTF-8", securityEventList);
+ XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(this.getClass().getClassLoader().getResourceAsStream("testdata/plain-soap-1.1.xml"));
+ XmlReaderToWriter.writeAll(xmlStreamReader, xmlStreamWriter);
+ xmlStreamWriter.close();
+
+ Document document = documentBuilderFactory.newDocumentBuilder().parse(new ByteArrayInputStream(baos.toByteArray()));
+ NodeList securityHeaderElement = document.getElementsByTagNameNS(WSConstants.WSSE_NS, "Security");
+ Assert.assertEquals(1, securityHeaderElement.getLength());
+ NodeList childs = securityHeaderElement.item(0).getChildNodes();
+
+ Assert.assertEquals(childs.getLength(), 5);
+ Assert.assertEquals(childs.item(0).getLocalName(), "Timestamp");
+ Assert.assertEquals(childs.item(1).getLocalName(), "UsernameToken");
+ Assert.assertEquals(childs.item(2).getLocalName(), "BinarySecurityToken");
+ Assert.assertEquals(childs.item(3).getLocalName(), "SignatureConfirmation");
+ Assert.assertEquals(childs.item(4).getLocalName(), "Signature");
+
+ NodeList sigReferences = document.getElementsByTagNameNS(WSConstants.SIG_NS, "Reference");
+ Assert.assertEquals(4, sigReferences.getLength());
+ }
+
+ //verify SigConf response:
+ {
+ String action = WSHandlerConstants.SIGNATURE + " " + WSHandlerConstants.USERNAME_TOKEN + " " + WSHandlerConstants.TIMESTAMP;
+ Properties properties = new Properties();
+ properties.put(WSHandlerConstants.SEND_SIGV, sigv);
+ doInboundSecurityWithWSS4J_1(documentBuilderFactory.newDocumentBuilder().parse(new ByteArrayInputStream(baos.toByteArray())), action, properties, true);
+ }
+ }
+}
Propchange: webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/HeaderOrderingTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/SignatureTest.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/SignatureTest.java?rev=1484123&r1=1484122&r2=1484123&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/SignatureTest.java (original)
+++ webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/SignatureTest.java Sat May 18 14:08:00 2013
@@ -1542,5 +1542,38 @@ public class SignatureTest extends Abstr
Assert.assertEquals(nodeList.item(0).getParentNode().getLocalName(), WSSConstants.TAG_wsse_Security.getLocalPart());
}
}
-
+
+ @Test
+ public void testElementToSignNotFound() throws Exception {
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ {
+ WSSSecurityProperties securityProperties = new WSSSecurityProperties();
+ WSSConstants.Action[] actions = new WSSConstants.Action[]{WSSConstants.SIGNATURE};
+ securityProperties.setOutAction(actions);
+ securityProperties.loadSignatureKeyStore(this.getClass().getClassLoader().getResource("transmitter.jks"), "default".toCharArray());
+ securityProperties.setSignatureUser("transmitter");
+ securityProperties.setTokenUser("transmitter");
+ securityProperties.setCallbackHandler(new CallbackHandlerImpl());
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_WSSE10, "UsernameToken"), SecurePart.Modifier.Element)
+ );
+ securityProperties.addSignaturePart(
+ new SecurePart(new QName(WSSConstants.NS_SOAP11, "Body"), SecurePart.Modifier.Element)
+ );
+
+ OutboundWSSec wsSecOut = WSSec.getOutboundWSSec(securityProperties);
+ XMLStreamWriter xmlStreamWriter = wsSecOut.processOutMessage(baos, "UTF-8", new ArrayList<SecurityEvent>());
+ XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(this.getClass().getClassLoader().getResourceAsStream("testdata/plain-soap-1.1.xml"));
+
+ try {
+ XmlReaderToWriter.writeAll(xmlStreamReader, xmlStreamWriter);
+ xmlStreamWriter.close();
+ Assert.fail("Exception expected");
+ } catch (XMLStreamException e) {
+ org.junit.Assert.assertTrue(e.getCause() instanceof XMLSecurityException);
+ org.junit.Assert.assertEquals("Part to sign not found: {http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}UsernameToken", e.getCause().getMessage());
+ }
+ }
+ }
}
Modified: webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/UsernameTokenTest.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/UsernameTokenTest.java?rev=1484123&r1=1484122&r2=1484123&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/UsernameTokenTest.java (original)
+++ webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/UsernameTokenTest.java Sat May 18 14:08:00 2013
@@ -749,74 +749,6 @@ public class UsernameTokenTest extends A
}
@Test
- public void testUsernameTokenToSignNotFound() throws Exception {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
-
- {
- WSSSecurityProperties securityProperties = new WSSSecurityProperties();
- WSSConstants.Action[] actions = new WSSConstants.Action[]{WSSConstants.SIGNATURE, WSSConstants.USERNAMETOKEN};
- securityProperties.setOutAction(actions);
- securityProperties.loadSignatureKeyStore(this.getClass().getClassLoader().getResource("transmitter.jks"), "default".toCharArray());
- securityProperties.setSignatureUser("transmitter");
- securityProperties.setTokenUser("transmitter");
- securityProperties.setCallbackHandler(new CallbackHandlerImpl());
- securityProperties.addSignaturePart(
- new SecurePart(new QName(WSSConstants.NS_WSSE10, "UsernameToken"), SecurePart.Modifier.Element)
- );
- securityProperties.addSignaturePart(
- new SecurePart(new QName(WSSConstants.NS_SOAP11, "Body"), SecurePart.Modifier.Element)
- );
-
- OutboundWSSec wsSecOut = WSSec.getOutboundWSSec(securityProperties);
- XMLStreamWriter xmlStreamWriter = wsSecOut.processOutMessage(baos, "UTF-8", new ArrayList<SecurityEvent>());
- XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(this.getClass().getClassLoader().getResourceAsStream("testdata/plain-soap-1.1.xml"));
-
- try {
- XmlReaderToWriter.writeAll(xmlStreamReader, xmlStreamWriter);
- xmlStreamWriter.close();
- Assert.fail("Exception expected");
- } catch (XMLStreamException e) {
- org.junit.Assert.assertTrue(e.getCause() instanceof XMLSecurityException);
- org.junit.Assert.assertEquals("Part to sign not found: {http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}UsernameToken", e.getCause().getMessage());
- }
- }
- }
-
- @Test
- public void testUsernameTokenToEncryptNotFound() throws Exception {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
-
- {
- WSSSecurityProperties securityProperties = new WSSSecurityProperties();
- WSSConstants.Action[] actions = new WSSConstants.Action[]{WSSConstants.ENCRYPT, WSSConstants.USERNAMETOKEN};
- securityProperties.setOutAction(actions);
- securityProperties.loadEncryptionKeystore(this.getClass().getClassLoader().getResource("transmitter.jks"), "default".toCharArray());
- securityProperties.setEncryptionUser("receiver");
- securityProperties.setTokenUser("transmitter");
- securityProperties.setCallbackHandler(new CallbackHandlerImpl());
- securityProperties.addEncryptionPart(
- new SecurePart(new QName(WSSConstants.NS_WSSE10, "UsernameToken"), SecurePart.Modifier.Element)
- );
- securityProperties.addEncryptionPart(
- new SecurePart(new QName(WSSConstants.NS_SOAP11, "Body"), SecurePart.Modifier.Content)
- );
-
- OutboundWSSec wsSecOut = WSSec.getOutboundWSSec(securityProperties);
- XMLStreamWriter xmlStreamWriter = wsSecOut.processOutMessage(baos, "UTF-8", new ArrayList<SecurityEvent>());
- XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(this.getClass().getClassLoader().getResourceAsStream("testdata/plain-soap-1.1.xml"));
-
- try {
- XmlReaderToWriter.writeAll(xmlStreamReader, xmlStreamWriter);
- xmlStreamWriter.close();
- Assert.fail("Exception expected");
- } catch (XMLStreamException e) {
- org.junit.Assert.assertTrue(e.getCause() instanceof XMLSecurityException);
- org.junit.Assert.assertEquals("Part to encrypt not found: {http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}UsernameToken", e.getCause().getMessage());
- }
- }
- }
-
- @Test
public void testPropertiesOutbound() throws Exception {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Modified: webservices/wss4j/trunk/ws-security-stax/src/test/resources/log4j-wss.xml
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-stax/src/test/resources/log4j-wss.xml?rev=1484123&r1=1484122&r2=1484123&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-stax/src/test/resources/log4j-wss.xml (original)
+++ webservices/wss4j/trunk/ws-security-stax/src/test/resources/log4j-wss.xml Sat May 18 14:08:00 2013
@@ -12,7 +12,7 @@
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/>
</layout>
</appender>
- <logger name="org.apache.xml.security.utils.SignerOutputStream">
+ <!--<logger name="org.apache.xml.security.utils.SignerOutputStream">
<level value="INFO"/>
</logger>
<logger name="org.apache.xml.security.utils.DigesterOutputStream">
@@ -38,9 +38,9 @@
</logger>
<logger name="org.apache.wss4j.stax.test.AbstractTestBase$CustomWSS4JHandler">
<level value="INFO"/>
- </logger>
+ </logger>-->
<root>
- <level value="INFO"/>
+ <level value="DEBUG"/>
<appender-ref ref="FILE"/>
<!--<appender-ref ref="STDOUT"/>-->
</root>