You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2009/02/25 22:33:56 UTC

svn commit: r747931 - /cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/policy/interceptors/SecureConversationTokenInterceptorProvider.java

Author: dkulp
Date: Wed Feb 25 21:33:55 2009
New Revision: 747931

URL: http://svn.apache.org/viewvc?rev=747931&view=rev
Log:
CHeck the ws-addressing headers for the Action for WS-SC
Make sure the response Action is correct

Modified:
    cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/policy/interceptors/SecureConversationTokenInterceptorProvider.java

Modified: cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/policy/interceptors/SecureConversationTokenInterceptorProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/policy/interceptors/SecureConversationTokenInterceptorProvider.java?rev=747931&r1=747930&r2=747931&view=diff
==============================================================================
--- cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/policy/interceptors/SecureConversationTokenInterceptorProvider.java (original)
+++ cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/policy/interceptors/SecureConversationTokenInterceptorProvider.java Wed Feb 25 21:33:55 2009
@@ -56,6 +56,9 @@
 import org.apache.cxf.staxutils.W3CDOMStreamWriter;
 import org.apache.cxf.transport.Destination;
 import org.apache.cxf.ws.addressing.AddressingProperties;
+import org.apache.cxf.ws.addressing.AddressingPropertiesImpl;
+import org.apache.cxf.ws.addressing.AttributedURIType;
+import org.apache.cxf.ws.addressing.JAXWSAConstants;
 import org.apache.cxf.ws.addressing.policy.MetadataConstants;
 import org.apache.cxf.ws.policy.AbstractPolicyInterceptorProvider;
 import org.apache.cxf.ws.policy.AssertionInfo;
@@ -325,7 +328,15 @@
                 }
                 if (!isRequestor(message)) {
                     String s = (String)message.get(SoapBindingConstants.SOAP_ACTION);
-                    
+                    if (s == null) {
+                        //MS/WCF doesn't put a soap action out for this, must check the headers
+                        AddressingProperties inProps = (AddressingProperties)message
+                            .getContextualProperty(JAXWSAConstants.SERVER_ADDRESSING_PROPERTIES_INBOUND);
+                        if (inProps != null) {
+                            s = inProps.getAction().getValue();
+                        }
+                    }
+
                     if (s != null 
                         && s.contains("/RST/SCT")
                         && (s.startsWith(STSUtils.WST_NS_05_02)
@@ -415,6 +426,17 @@
         public class STSInvoker implements Invoker {
 
             public Object invoke(Exchange exchange, Object o) {
+                AddressingProperties inProps = (AddressingProperties)exchange.getInMessage()
+                    .getContextualProperty(JAXWSAConstants.SERVER_ADDRESSING_PROPERTIES_INBOUND);
+                if (inProps != null) {
+                    AddressingProperties props = new AddressingPropertiesImpl();
+                    AttributedURIType action = new AttributedURIType();
+                    action.setValue(inProps.getAction().getValue().replace("/RST/", "/RSTR/"));
+                    props.setAction(action);
+                    exchange.getOutMessage().put(JAXWSAConstants.SERVER_ADDRESSING_PROPERTIES_OUTBOUND,
+                                                 props);
+                }
+                
                 MessageContentsList lst = (MessageContentsList)o;
                 DOMSource src = (DOMSource)lst.get(0);
                 Node nd = src.getNode();