This is an automated email from the ASF dual-hosted git repository.
coheigea pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/master by this push:
new 5d7a27d CXF-7550 - StaxActionInInterceptor can't function completely
with WSS4JStaxInInterceptor
5d7a27d is described below
commit 5d7a27d87a44d3e87f97d446e14301ad0a4e457c
Author: Colm O hEigeartaigh <[email protected]>
AuthorDate: Wed Nov 8 11:49:20 2017 +0000
CXF-7550 - StaxActionInInterceptor can't function completely with
WSS4JStaxInInterceptor
---
.../ws/security/wss4j/WSS4JStaxInInterceptor.java | 7 +-
.../org/apache/cxf/systest/ws/fault/FaultTest.java | 84 ++++++++++++++++------
.../apache/cxf/systest/ws/fault/DoubleItFault.wsdl | 6 ++
.../org/apache/cxf/systest/ws/fault/client.xml | 52 ++++++++++++++
.../org/apache/cxf/systest/ws/fault/server.xml | 50 +++++++++++++
5 files changed, 170 insertions(+), 29 deletions(-)
diff --git
a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/WSS4JStaxInInterceptor.java
b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/WSS4JStaxInInterceptor.java
index 33e1b69..4ecd1ed 100644
---
a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/WSS4JStaxInInterceptor.java
+++
b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/WSS4JStaxInInterceptor.java
@@ -61,10 +61,8 @@ import org.apache.wss4j.stax.setup.WSSec;
import org.apache.wss4j.stax.validate.Validator;
import org.apache.xml.security.exceptions.XMLSecurityException;
import org.apache.xml.security.stax.ext.XMLSecurityConstants;
-import
org.apache.xml.security.stax.securityEvent.AbstractSecuredElementSecurityEvent;
import org.apache.xml.security.stax.securityEvent.SecurityEvent;
import org.apache.xml.security.stax.securityEvent.SecurityEventListener;
-import org.apache.xml.security.stax.securityEvent.TokenSecurityEvent;
public class WSS4JStaxInInterceptor extends AbstractWSS4JStaxInterceptor {
@@ -194,10 +192,7 @@ public class WSS4JStaxInInterceptor extends
AbstractWSS4JStaxInterceptor {
final SecurityEventListener securityEventListener = new
SecurityEventListener() {
@Override
public void registerSecurityEvent(SecurityEvent securityEvent)
throws WSSecurityException {
- if (securityEvent.getSecurityEventType() ==
WSSecurityEventConstants.TIMESTAMP
- || securityEvent.getSecurityEventType() ==
WSSecurityEventConstants.SignatureValue
- || securityEvent instanceof TokenSecurityEvent
- || securityEvent instanceof
AbstractSecuredElementSecurityEvent) {
+ if (securityEvent.getSecurityEventType() !=
WSSecurityEventConstants.AlgorithmSuite) {
// Store events required for the security context setup,
or the crypto coverage checker
incomingSecurityEventList.add(securityEvent);
}
diff --git
a/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/fault/FaultTest.java
b/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/fault/FaultTest.java
index bad234d..b03cfc9 100644
---
a/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/fault/FaultTest.java
+++
b/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/fault/FaultTest.java
@@ -99,32 +99,14 @@ public class FaultTest extends
AbstractBusClientServerTestBase {
} catch (Exception ex) {
assertTrue(ex.getMessage().contains("This is a fault"));
}
- ((java.io.Closeable)utPort).close();
- bus.shutdown(true);
- }
-
- @org.junit.Test
- public void testSoap11StAX() throws Exception {
- SpringBusFactory bf = new SpringBusFactory();
- URL busFile = FaultTest.class.getResource("client.xml");
-
- Bus bus = bf.createBus(busFile.toString());
- BusFactory.setDefaultBus(bus);
- BusFactory.setThreadDefaultBus(bus);
-
- URL wsdl = FaultTest.class.getResource("DoubleItFault.wsdl");
- Service service = Service.create(wsdl, SERVICE_QNAME);
- QName portQName = new QName(NAMESPACE, "DoubleItSoap11Port");
- DoubleItPortType utPort =
- service.getPort(portQName, DoubleItPortType.class);
- updateAddressPort(utPort, PORT);
+ // Switch to the StAX stack
+ SecurityTestUtil.enableStreaming(utPort);
// Make a successful invocation
- SecurityTestUtil.enableStreaming(utPort);
((BindingProvider)utPort).getRequestContext().put(SecurityConstants.USERNAME,
"alice");
utPort.doubleIt(25);
-/*
+
// Now make an invocation using another username
((BindingProvider)utPort).getRequestContext().put(SecurityConstants.USERNAME,
"bob");
((BindingProvider)utPort).getRequestContext().put("security.password",
"password");
@@ -132,9 +114,9 @@ public class FaultTest extends
AbstractBusClientServerTestBase {
utPort.doubleIt(25);
fail("Expected failure on bob");
} catch (Exception ex) {
- assertTrue(ex.getMessage().contains("This is a fault"));
+ // TODO assertTrue(ex.getMessage().contains("This is a fault"));
}
-*/
+
((java.io.Closeable)utPort).close();
bus.shutdown(true);
}
@@ -331,4 +313,60 @@ public class FaultTest extends
AbstractBusClientServerTestBase {
((java.io.Closeable)utPort).close();
bus.shutdown(true);
}
+
+ @org.junit.Test
+ public void testUnsecuredSoap11Action() throws Exception {
+
+ SpringBusFactory bf = new SpringBusFactory();
+ URL busFile = FaultTest.class.getResource("client.xml");
+
+ Bus bus = bf.createBus(busFile.toString());
+ BusFactory.setDefaultBus(bus);
+ BusFactory.setThreadDefaultBus(bus);
+
+ URL wsdl = FaultTest.class.getResource("DoubleItFault.wsdl");
+ Service service = Service.create(wsdl, SERVICE_QNAME);
+ QName portQName = new QName(NAMESPACE, "DoubleItSoap11UnsecuredPort");
+ DoubleItPortType utPort =
+ service.getPort(portQName, DoubleItPortType.class);
+ updateAddressPort(utPort, PORT);
+
+ try {
+ utPort.doubleIt(25);
+ fail("Expected failure on bob");
+ } catch (Exception ex) {
+ assertTrue(ex.getMessage().contains("This is a fault"));
+ }
+
+ ((java.io.Closeable)utPort).close();
+ bus.shutdown(true);
+ }
+
+ @org.junit.Test
+ public void testUnsecuredSoap11ActionStAX() throws Exception {
+
+ SpringBusFactory bf = new SpringBusFactory();
+ URL busFile = FaultTest.class.getResource("client.xml");
+
+ Bus bus = bf.createBus(busFile.toString());
+ BusFactory.setDefaultBus(bus);
+ BusFactory.setThreadDefaultBus(bus);
+
+ URL wsdl = FaultTest.class.getResource("DoubleItFault.wsdl");
+ Service service = Service.create(wsdl, SERVICE_QNAME);
+ QName portQName = new QName(NAMESPACE, "DoubleItSoap11UnsecuredPort2");
+ DoubleItPortType utPort =
+ service.getPort(portQName, DoubleItPortType.class);
+ updateAddressPort(utPort, PORT);
+
+ try {
+ utPort.doubleIt(25);
+ fail("Expected failure on bob");
+ } catch (Exception ex) {
+ assertTrue(ex.getMessage().contains("This is a fault"));
+ }
+
+ ((java.io.Closeable)utPort).close();
+ bus.shutdown(true);
+ }
}
diff --git
a/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/fault/DoubleItFault.wsdl
b/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/fault/DoubleItFault.wsdl
index 09947df..2d32ab0 100644
---
a/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/fault/DoubleItFault.wsdl
+++
b/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/fault/DoubleItFault.wsdl
@@ -131,6 +131,12 @@
<wsdl:port name="DoubleItJavaFirstPort"
binding="tns:DoubleItSoap11NoPolicyBinding">
<soap12:address
location="http://localhost:9009/DoubleItJavaFirst"/>
</wsdl:port>
+ <wsdl:port name="DoubleItSoap11UnsecuredPort"
binding="tns:DoubleItSoap11NoPolicyBinding">
+ <soap:address
location="http://localhost:9009/DoubleItSoap11Unsecured"/>
+ </wsdl:port>
+ <wsdl:port name="DoubleItSoap11UnsecuredPort2"
binding="tns:DoubleItSoap11NoPolicyBinding">
+ <soap:address
location="http://localhost:9009/DoubleItSoap11Unsecured2"/>
+ </wsdl:port>
</wsdl:service>
<wsp:Policy wsu:Id="DoubleItPlaintextPolicy">
<wsp:ExactlyOne>
diff --git
a/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/fault/client.xml
b/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/fault/client.xml
index c1c6f48..cb92e2d 100644
---
a/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/fault/client.xml
+++
b/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/fault/client.xml
@@ -78,6 +78,58 @@
</jaxws:features>
</jaxws:client>
+ <jaxws:client
name="{http://www.example.org/contract/DoubleIt}DoubleItSoap11UnsecuredPort"
createdFromAPI="true">
+ <jaxws:outInterceptors>
+ <bean class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
+ <constructor-arg>
+ <map>
+ <entry key="action" value="Signature"/>
+ <entry key="signatureUser" value="alice"/>
+ <entry key="signaturePropFile"
value="alice.properties"/>
+ <entry key="signatureKeyIdentifier"
value="DirectReference"/>
+ <entry key="passwordCallbackClass"
value="org.apache.cxf.systest.ws.common.KeystorePasswordCallback"/>
+ </map>
+ </constructor-arg>
+ </bean>
+ </jaxws:outInterceptors>
+ <jaxws:inInterceptors>
+ <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
+ <constructor-arg>
+ <map>
+ <entry key="action" value="Signature"/>
+ <entry key="signatureVerificationPropFile"
value="alice.properties"/>
+ </map>
+ </constructor-arg>
+ </bean>
+ </jaxws:inInterceptors>
+ </jaxws:client>
+
+ <jaxws:client
name="{http://www.example.org/contract/DoubleIt}DoubleItSoap11UnsecuredPort2"
createdFromAPI="true">
+ <jaxws:outInterceptors>
+ <bean
class="org.apache.cxf.ws.security.wss4j.WSS4JStaxOutInterceptor">
+ <constructor-arg>
+ <map>
+ <entry key="action" value="Signature"/>
+ <entry key="signatureUser" value="alice"/>
+ <entry key="signaturePropFile"
value="alice.properties"/>
+ <entry key="signatureKeyIdentifier"
value="DirectReference"/>
+ <entry key="passwordCallbackClass"
value="org.apache.cxf.systest.ws.common.KeystorePasswordCallback"/>
+ </map>
+ </constructor-arg>
+ </bean>
+ </jaxws:outInterceptors>
+ <jaxws:inInterceptors>
+ <bean
class="org.apache.cxf.ws.security.wss4j.WSS4JStaxInInterceptor">
+ <constructor-arg>
+ <map>
+ <entry key="action" value="Signature"/>
+ <entry key="signatureVerificationPropFile"
value="alice.properties"/>
+ </map>
+ </constructor-arg>
+ </bean>
+ </jaxws:inInterceptors>
+ </jaxws:client>
+
<wsp:Policy xmlns:wsp="http://www.w3.org/ns/ws-policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
wsu:Id="SymmetricUTPolicy">
<wsp:ExactlyOne>
<wsp:All>
diff --git
a/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/fault/server.xml
b/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/fault/server.xml
index f0ab2ad..442acc3 100644
---
a/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/fault/server.xml
+++
b/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/fault/server.xml
@@ -62,4 +62,54 @@
<entry key="security.signature.properties" value="bob.properties"/>
</jaxws:properties>
</jaxws:endpoint>
+ <jaxws:endpoint xmlns:s="http://www.example.org/contract/DoubleIt"
id="Soap11Unsecured"
address="http://localhost:${testutil.ports.fault.Server}/DoubleItSoap11Unsecured"
serviceName="s:DoubleItService" endpointName="s:DoubleItSoap11UnsecuredPort"
implementor="org.apache.cxf.systest.ws.fault.DoubleItPortTypeImpl"
wsdlLocation="org/apache/cxf/systest/ws/fault/DoubleItFault.wsdl">
+ <jaxws:outInterceptors>
+ <bean class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
+ <constructor-arg>
+ <map>
+ <entry key="action" value="Signature"/>
+ <entry key="signatureUser" value="bob"/>
+ <entry key="signaturePropFile" value="bob.properties"/>
+ <entry key="signatureKeyIdentifier"
value="DirectReference"/>
+ <entry key="passwordCallbackClass"
value="org.apache.cxf.systest.ws.common.KeystorePasswordCallback"/>
+ </map>
+ </constructor-arg>
+ </bean>
+ </jaxws:outInterceptors>
+ <jaxws:inInterceptors>
+ <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
+ <constructor-arg>
+ <map>
+ <entry key="action" value="Signature"/>
+ <entry key="signatureVerificationPropFile"
value="bob.properties"/>
+ </map>
+ </constructor-arg>
+ </bean>
+ </jaxws:inInterceptors>
+ </jaxws:endpoint>
+ <jaxws:endpoint xmlns:s="http://www.example.org/contract/DoubleIt"
id="Soap11Unsecured2"
address="http://localhost:${testutil.ports.fault.Server}/DoubleItSoap11Unsecured2"
serviceName="s:DoubleItService" endpointName="s:DoubleItSoap11UnsecuredPort2"
implementor="org.apache.cxf.systest.ws.fault.DoubleItPortTypeImpl"
wsdlLocation="org/apache/cxf/systest/ws/fault/DoubleItFault.wsdl">
+ <jaxws:outInterceptors>
+ <bean class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
+ <constructor-arg>
+ <map>
+ <entry key="action" value="Signature"/>
+ <entry key="signatureUser" value="bob"/>
+ <entry key="signaturePropFile" value="bob.properties"/>
+ <entry key="signatureKeyIdentifier"
value="DirectReference"/>
+ <entry key="passwordCallbackClass"
value="org.apache.cxf.systest.ws.common.KeystorePasswordCallback"/>
+ </map>
+ </constructor-arg>
+ </bean>
+ </jaxws:outInterceptors>
+ <jaxws:inInterceptors>
+ <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
+ <constructor-arg>
+ <map>
+ <entry key="action" value="Signature"/>
+ <entry key="signatureVerificationPropFile"
value="bob.properties"/>
+ </map>
+ </constructor-arg>
+ </bean>
+ </jaxws:inInterceptors>
+ </jaxws:endpoint>
</beans>
--
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].