You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2010/06/21 20:00:32 UTC

svn commit: r956658 - in /cxf/trunk: rt/ws/security/src/main/java/org/apache/cxf/ws/security/policy/builders/ rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/ rt/ws/security/src/test/java/org/apache/cxf/ws/security/wss4j/ systests/ws-spec...

Author: sergeyb
Date: Mon Jun 21 18:00:31 2010
New Revision: 956658

URL: http://svn.apache.org/viewvc?rev=956658&view=rev
Log:
CXF-2754: Adding an authorization policy-first case for digests

Added:
    cxf/trunk/systests/ws-specs/src/test/resources/wsdl_systest_wsspec/wssec10/WsSecurity10_12_policy_restricted_hashed.wsdl   (with props)
    cxf/trunk/systests/ws-specs/src/test/resources/wsdl_systest_wsspec/wssec10/WsSecurity10_12_restricted_hashed.wsdl   (with props)
Modified:
    cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/policy/builders/UsernameTokenBuilder.java
    cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractUsernameTokenAuthenticatingInterceptor.java
    cxf/trunk/rt/ws/security/src/test/java/org/apache/cxf/ws/security/wss4j/UserNameTokenAuthorizationTest.java
    cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/WSSecurity10UsernameAuthorizationTest.java
    cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/client/UTPasswordCallback.java
    cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/client/client_restricted_unauthorized.xml
    cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/server/CustomUsernameTokenInterceptor.java
    cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/server/server_restricted_authorized.xml

Modified: cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/policy/builders/UsernameTokenBuilder.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/policy/builders/UsernameTokenBuilder.java?rev=956658&r1=956657&r2=956658&view=diff
==============================================================================
--- cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/policy/builders/UsernameTokenBuilder.java (original)
+++ cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/policy/builders/UsernameTokenBuilder.java Mon Jun 21 18:00:31 2010
@@ -24,8 +24,9 @@ import java.util.List;
 import javax.xml.namespace.QName;
 
 import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
-import org.apache.cxf.helpers.DOMUtils;
 import org.apache.cxf.ws.policy.AssertionBuilder;
 import org.apache.cxf.ws.policy.PolicyAssertion;
 import org.apache.cxf.ws.policy.PolicyBuilder;
@@ -60,23 +61,29 @@ public class UsernameTokenBuilder implem
 
         Element polEl = PolicyConstants.findPolicyElement(element);
         if (polEl != null) {
-            Element child = DOMUtils.getFirstElement(polEl);
-            if (child != null) {
-                QName qname = new QName(child.getNamespaceURI(), child.getLocalName());
-                if (SPConstants.USERNAME_TOKEN10.equals(qname.getLocalPart())) {
-                    usernameToken.setUseUTProfile10(true);
-                } else if (SPConstants.USERNAME_TOKEN11.equals(qname.getLocalPart())) {
-                    usernameToken.setUseUTProfile11(true);
-                } else if (SP12Constants.NO_PASSWORD.equals(qname)) {
-                    usernameToken.setNoPassword(true);
-                } else if (SP12Constants.HASH_PASSWORD.equals(qname)) {
-                    usernameToken.setHashPassword(true);
-                } else if (SP12Constants.REQUIRE_DERIVED_KEYS.equals(qname)) {
-                    usernameToken.setDerivedKeys(true);
-                } else if (SP12Constants.REQUIRE_EXPLICIT_DERIVED_KEYS.equals(qname)) {
-                    usernameToken.setExplicitDerivedKeys(true);
-                } else if (SP12Constants.REQUIRE_IMPLIED_DERIVED_KEYS.equals(qname)) {
-                    usernameToken.setImpliedDerivedKeys(true);
+            NodeList children = polEl.getChildNodes();
+            if (children != null) {
+                for (int i = 0; i < children.getLength(); i++) {
+                    Node child = children.item(i);
+                    if (child instanceof Element) {
+                        child = (Element)child;
+                        QName qname = new QName(child.getNamespaceURI(), child.getLocalName());
+                        if (SPConstants.USERNAME_TOKEN10.equals(qname.getLocalPart())) {
+                            usernameToken.setUseUTProfile10(true);
+                        } else if (SPConstants.USERNAME_TOKEN11.equals(qname.getLocalPart())) {
+                            usernameToken.setUseUTProfile11(true);
+                        } else if (SP12Constants.NO_PASSWORD.equals(qname)) {
+                            usernameToken.setNoPassword(true);
+                        } else if (SP12Constants.HASH_PASSWORD.equals(qname)) {
+                            usernameToken.setHashPassword(true);
+                        } else if (SP12Constants.REQUIRE_DERIVED_KEYS.equals(qname)) {
+                            usernameToken.setDerivedKeys(true);
+                        } else if (SP12Constants.REQUIRE_EXPLICIT_DERIVED_KEYS.equals(qname)) {
+                            usernameToken.setExplicitDerivedKeys(true);
+                        } else if (SP12Constants.REQUIRE_IMPLIED_DERIVED_KEYS.equals(qname)) {
+                            usernameToken.setImpliedDerivedKeys(true);
+                        }
+                    }
                 }
             }
         }

Modified: cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractUsernameTokenAuthenticatingInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractUsernameTokenAuthenticatingInterceptor.java?rev=956658&r1=956657&r2=956658&view=diff
==============================================================================
--- cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractUsernameTokenAuthenticatingInterceptor.java (original)
+++ cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractUsernameTokenAuthenticatingInterceptor.java Mon Jun 21 18:00:31 2010
@@ -89,7 +89,9 @@ public abstract class AbstractUsernameTo
         supportDigestPasswords = support;
     }
     
-    
+    public boolean getSupportDigestPasswords() {
+        return supportDigestPasswords;
+    }
     
     @Override
     protected SecurityContext createSecurityContext(final Principal p) {
@@ -165,7 +167,11 @@ public abstract class AbstractUsernameTo
     protected CallbackHandler getCallback(RequestData reqData, int doAction) 
         throws WSSecurityException {
         
-        if ((doAction & WSConstants.UT) != 0 && !supportDigestPasswords) {    
+        // Given that a custom UT processor is used for dealing with digests 
+        // no callback handler is required when the request UT contains a digest;
+        // however a custom callback may still be needed for decrypting the encrypted UT
+        
+        if ((doAction & WSConstants.UT) != 0) {
             CallbackHandler pwdCallback = null;
             try {
                 pwdCallback = super.getCallback(reqData, doAction);
@@ -184,7 +190,6 @@ public abstract class AbstractUsernameTo
             return super.getSecurityEngine();
         }
         Map<QName, Object> profiles = new HashMap<QName, Object>(3);
-        profiles.put(new QName(WSConstants.USERNAMETOKEN_NS, WSConstants.USERNAME_TOKEN_LN), this);
         profiles.put(new QName(WSConstants.WSSE_NS, WSConstants.USERNAME_TOKEN_LN), this);
         profiles.put(new QName(WSConstants.WSSE11_NS, WSConstants.USERNAME_TOKEN_LN), this);
         return createSecurityEngine(profiles);
@@ -202,7 +207,7 @@ public abstract class AbstractUsernameTo
     }
     
     
-    private class DelegatingCallbackHandler implements CallbackHandler {
+    protected class DelegatingCallbackHandler implements CallbackHandler {
 
         private CallbackHandler pwdHandler;
         

Modified: cxf/trunk/rt/ws/security/src/test/java/org/apache/cxf/ws/security/wss4j/UserNameTokenAuthorizationTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/test/java/org/apache/cxf/ws/security/wss4j/UserNameTokenAuthorizationTest.java?rev=956658&r1=956657&r2=956658&view=diff
==============================================================================
--- cxf/trunk/rt/ws/security/src/test/java/org/apache/cxf/ws/security/wss4j/UserNameTokenAuthorizationTest.java (original)
+++ cxf/trunk/rt/ws/security/src/test/java/org/apache/cxf/ws/security/wss4j/UserNameTokenAuthorizationTest.java Mon Jun 21 18:00:31 2010
@@ -66,7 +66,7 @@ public class UserNameTokenAuthorizationT
         wsIn.setProperty(WSHandlerConstants.SIG_PROP_FILE, "META-INF/cxf/insecurity.properties");
         wsIn.setProperty(WSHandlerConstants.DEC_PROP_FILE, "META-INF/cxf/insecurity.properties");
         wsIn.setProperty(WSHandlerConstants.PW_CALLBACK_CLASS, TestPwdCallback.class.getName());
-
+        
         service.getInInterceptors().add(wsIn);
          
         SimpleAuthorizingInterceptor sai = new SimpleAuthorizingInterceptor();

Modified: cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/WSSecurity10UsernameAuthorizationTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/WSSecurity10UsernameAuthorizationTest.java?rev=956658&r1=956657&r2=956658&view=diff
==============================================================================
--- cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/WSSecurity10UsernameAuthorizationTest.java (original)
+++ cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/WSSecurity10UsernameAuthorizationTest.java Mon Jun 21 18:00:31 2010
@@ -61,7 +61,7 @@ public class WSSecurity10UsernameAuthori
     public void testClientServerAuthorized() {
 
         IPingService port = getPort(
-            "org/apache/cxf/systest/ws/wssec10/client/client_restricted.xml");
+            "org/apache/cxf/systest/ws/wssec10/client/client_restricted.xml", false);
         
         final String output = port.echo(INPUT);
         assertEquals(INPUT, output);
@@ -71,7 +71,7 @@ public class WSSecurity10UsernameAuthori
     public void testClientServerUnauthorized() {
 
         IPingService port = getPort(
-            "org/apache/cxf/systest/ws/wssec10/client/client_restricted_unauthorized.xml");
+            "org/apache/cxf/systest/ws/wssec10/client/client_restricted_unauthorized.xml", true);
         
         try {
             port.echo(INPUT);
@@ -81,26 +81,27 @@ public class WSSecurity10UsernameAuthori
         }
     }
     
-    private static IPingService getPort(String configName) {
+    private static IPingService getPort(String configName, boolean hashed) {
         Bus bus = new SpringBusFactory().createBus(configName);
         
         BusFactory.setDefaultBus(bus);
         BusFactory.setThreadDefaultBus(bus);
-        PingService svc = new PingService(getWsdlLocation());
+        PingService svc = new PingService(getWsdlLocation(hashed));
         final IPingService port = 
             svc.getPort(
                 new QName(
                     "http://WSSec/wssec10",
-                    "UserName_IPingService"
+                    hashed ? "UserName_IPingService_hashed" : "UserName_IPingService"
                 ),
                 IPingService.class
             );
         return port;
     }
     
-    private static URL getWsdlLocation() {
+    private static URL getWsdlLocation(boolean hashed) {
         try {
-            return new URL("http://localhost:" + PORT + "/" + "UserName" + "?wsdl");
+            return new URL("http://localhost:" + PORT + "/" 
+                           + (hashed ? "HashedUserName" : "UserName") + "?wsdl");
         } catch (MalformedURLException mue) {
             return null;
         }

Modified: cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/client/UTPasswordCallback.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/client/UTPasswordCallback.java?rev=956658&r1=956657&r2=956658&view=diff
==============================================================================
--- cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/client/UTPasswordCallback.java (original)
+++ cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/client/UTPasswordCallback.java Mon Jun 21 18:00:31 2010
@@ -38,7 +38,7 @@ public class UTPasswordCallback implemen
     
     public UTPasswordCallback() {
         passwords.put("Alice", "ecilA");
-        passwords.put("Frank", "invalid-password");
+        passwords.put("Frank", "knarF");
         //for MS clients
         passwords.put("abcd", "dcba");
     }

Modified: cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/client/client_restricted_unauthorized.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/client/client_restricted_unauthorized.xml?rev=956658&r1=956657&r2=956658&view=diff
==============================================================================
--- cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/client/client_restricted_unauthorized.xml (original)
+++ cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/client/client_restricted_unauthorized.xml Mon Jun 21 18:00:31 2010
@@ -40,7 +40,7 @@
     </cxf:bus>
     
     
-    <jaxws:client name="{http://WSSec/wssec10}UserName_IPingService" createdFromAPI="true">
+    <jaxws:client name="{http://WSSec/wssec10}UserName_IPingService_hashed" createdFromAPI="true">
         <jaxws:properties>
             <entry key="ws-security.username" value="Frank"/>
             <entry key="ws-security.callback-handler" value="org.apache.cxf.systest.ws.wssec10.client.UTPasswordCallback"/>

Modified: cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/server/CustomUsernameTokenInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/server/CustomUsernameTokenInterceptor.java?rev=956658&r1=956657&r2=956658&view=diff
==============================================================================
--- cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/server/CustomUsernameTokenInterceptor.java (original)
+++ cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/server/CustomUsernameTokenInterceptor.java Mon Jun 21 18:00:31 2010
@@ -26,6 +26,7 @@ import org.apache.cxf.common.security.Si
 import org.apache.cxf.interceptor.Fault;
 import org.apache.cxf.ws.security.SecurityConstants;
 import org.apache.cxf.ws.security.wss4j.UsernameTokenInterceptor;
+import org.apache.ws.security.message.token.UsernameToken;
 
 public class CustomUsernameTokenInterceptor extends UsernameTokenInterceptor {
     
@@ -43,7 +44,11 @@ public class CustomUsernameTokenIntercep
         
         // add roles this user is in
         String roleName = "Alice".equals(name) ? "developers" : "pms";
-        
+        String expectedPassword = "Alice".equals(name) ? "ecilA" 
+            : UsernameToken.doPasswordDigest(nonce, created, "knarF");
+        if (!password.equals(expectedPassword)) {
+            throw new SecurityException("Wrong Password");
+        }
         subject.getPrincipals().add(new SimpleGroup(roleName, name));
         subject.setReadOnly();
         return subject;

Modified: cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/server/server_restricted_authorized.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/server/server_restricted_authorized.xml?rev=956658&r1=956657&r2=956658&view=diff
==============================================================================
--- cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/server/server_restricted_authorized.xml (original)
+++ cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/wssec10/server/server_restricted_authorized.xml Mon Jun 21 18:00:31 2010
@@ -67,12 +67,27 @@
        address="http://localhost:${testutil.ports.AuthorizedServer}/UserName" 
        serviceName="interop:PingService"
        endpointName="interop:UserName_IPingService"
+       wsdlLocation = "target/test-classes/wsdl_systest_wsspec/wssec10/WsSecurity10_12_restricted_hashed.wsdl"
        implementor="org.apache.cxf.systest.ws.wssec10.server.UserNameOverTransportRestricted">
         
        <jaxws:inInterceptors>
             <ref bean="authorizationInterceptor"/>
        </jaxws:inInterceptors>
      
-    </jaxws:endpoint> 
+    </jaxws:endpoint>
+    
+    <jaxws:endpoint 
+       id="UserName2"
+       address="http://localhost:${testutil.ports.AuthorizedServer}/HashedUserName" 
+       serviceName="interop:PingService"
+       endpointName="interop:UserName_IPingService_hashed"
+       wsdlLocation = "target/test-classes/wsdl_systest_wsspec/wssec10/WsSecurity10_12_restricted_hashed.wsdl"
+       implementor="org.apache.cxf.systest.ws.wssec10.server.UserNameOverTransportRestricted">
+        
+       <jaxws:inInterceptors>
+            <ref bean="authorizationInterceptor"/>
+       </jaxws:inInterceptors>
+     
+    </jaxws:endpoint>
     
 </beans>

Added: cxf/trunk/systests/ws-specs/src/test/resources/wsdl_systest_wsspec/wssec10/WsSecurity10_12_policy_restricted_hashed.wsdl
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/ws-specs/src/test/resources/wsdl_systest_wsspec/wssec10/WsSecurity10_12_policy_restricted_hashed.wsdl?rev=956658&view=auto
==============================================================================
--- cxf/trunk/systests/ws-specs/src/test/resources/wsdl_systest_wsspec/wssec10/WsSecurity10_12_policy_restricted_hashed.wsdl (added)
+++ cxf/trunk/systests/ws-specs/src/test/resources/wsdl_systest_wsspec/wssec10/WsSecurity10_12_policy_restricted_hashed.wsdl Mon Jun 21 18:00:31 2010
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<wsdl:definitions 
+	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
+	xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
+	xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
+	xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" 
+	xmlns:tns="http://apache.cxf.org/" 
+	xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" 
+	xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" 
+	xmlns:wssec10test="http://WSSec/wssec10" 
+	xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" 
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
+	xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" 
+	xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" 
+	xmlns:wsa10="http://www.w3.org/2005/08/addressing" 
+	xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" 
+	targetNamespace="http://apache.cxf.org/">
+    <wsp:Policy wsu:Id="UserName_IPingService_policy">
+        <wsp:ExactlyOne>
+            <wsp:All>
+                <sp:SupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+                    <wsp:Policy>
+                        <sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+                            <wsp:Policy>
+                                <sp:WssUsernameToken10/>
+                            </wsp:Policy>
+                        </sp:UsernameToken>
+                    </wsp:Policy>
+                </sp:SupportingTokens>
+            </wsp:All>
+        </wsp:ExactlyOne>
+    </wsp:Policy>
+	<wsp:Policy wsu:Id="UserName_IPingService_policy_hashed">
+        <wsp:ExactlyOne>
+            <wsp:All>
+                <sp:SupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
+                    <wsp:Policy>
+                        <sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
+                            <wsp:Policy>
+                                <sp:HashPassword/>
+                            </wsp:Policy>
+                        </sp:UsernameToken>
+                    </wsp:Policy>
+                </sp:SupportingTokens>
+            </wsp:All>
+        </wsp:ExactlyOne>
+    </wsp:Policy>	
+	
+	<wsdl:import location="WsSecurity10.wsdl" namespace="http://WSSec/wssec10"/>
+	<wsdl:types/>
+	<wsdl:binding name="UserName_IPingService" type="wssec10test:IPingService">
+        <wsp:PolicyReference URI="#UserName_IPingService_policy"/>
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
+
+        <wsdl:operation name="echo">
+            <soap:operation soapAction="http://WSSec/wssec10/echo" style="document"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+
+    </wsdl:binding>
+    
+    <wsdl:binding name="UserName_IPingService_hashed" type="wssec10test:IPingService">
+        <wsp:PolicyReference URI="#UserName_IPingService_policy_hashed"/>
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
+
+        <wsdl:operation name="echo">
+            <soap:operation soapAction="http://WSSec/wssec10/echo" style="document"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+
+    </wsdl:binding>
+	
+	
+</wsdl:definitions>
+

Propchange: cxf/trunk/systests/ws-specs/src/test/resources/wsdl_systest_wsspec/wssec10/WsSecurity10_12_policy_restricted_hashed.wsdl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/systests/ws-specs/src/test/resources/wsdl_systest_wsspec/wssec10/WsSecurity10_12_policy_restricted_hashed.wsdl
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: cxf/trunk/systests/ws-specs/src/test/resources/wsdl_systest_wsspec/wssec10/WsSecurity10_12_policy_restricted_hashed.wsdl
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: cxf/trunk/systests/ws-specs/src/test/resources/wsdl_systest_wsspec/wssec10/WsSecurity10_12_restricted_hashed.wsdl
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/ws-specs/src/test/resources/wsdl_systest_wsspec/wssec10/WsSecurity10_12_restricted_hashed.wsdl?rev=956658&view=auto
==============================================================================
--- cxf/trunk/systests/ws-specs/src/test/resources/wsdl_systest_wsspec/wssec10/WsSecurity10_12_restricted_hashed.wsdl (added)
+++ cxf/trunk/systests/ws-specs/src/test/resources/wsdl_systest_wsspec/wssec10/WsSecurity10_12_restricted_hashed.wsdl Mon Jun 21 18:00:31 2010
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<wsdl:definitions 
+	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
+	xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
+	xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
+	xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" 
+	xmlns:tns="http://WSSec/wssec10" 
+	xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" 
+	xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" 
+	xmlns:wssec10test="http://apache.cxf.org/" 
+	xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" 
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
+	xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" 
+	xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" 
+	xmlns:wsa10="http://www.w3.org/2005/08/addressing" 
+	xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" 
+	name="PingService" 
+	targetNamespace="http://WSSec/wssec10">
+	<wsdl:import location="WsSecurity10_12_policy_restricted_hashed.wsdl" namespace="http://apache.cxf.org/"/>
+	<wsdl:types>
+		<xsd:schema targetNamespace="http://WSSec/wssec10">
+		  	<xsd:element name="echo">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element minOccurs="0" name="request" nillable="true" type="xsd:string"/>
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="echoResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element minOccurs="0" name="echoResult" nillable="true" type="xsd:string"/>
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element> 
+		</xsd:schema>
+	</wsdl:types>
+	
+	<wsdl:message name="IPingService_echo_InputMessage">
+		<wsdl:part name="parameters" element="tns:echo"/>
+	</wsdl:message>
+	<wsdl:message name="IPingService_echo_OutputMessage">
+		<wsdl:part name="parameters" element="tns:echoResponse"/>
+	</wsdl:message>
+	
+	<wsdl:portType name="IPingService">
+		
+		<wsdl:operation name="echo">
+			<wsdl:input wsaw:Action="http://WSSec/wssec10/echo" message="tns:IPingService_echo_InputMessage"/>
+			<wsdl:output wsaw:Action="http://WSSec/wssec10/echo" message="tns:IPingService_echo_OutputMessage"/>
+		</wsdl:operation>
+		
+	</wsdl:portType>
+	<wsdl:service name="PingService">
+		<wsdl:port name="UserName_IPingService" binding="wssec10test:UserName_IPingService">
+            <soap:address location="http://localhost:9003/Security_WsSecurity_Service_Indigo/WsSecurity10.svc/UserName"/>
+        </wsdl:port>
+        
+        <wsdl:port name="UserName_IPingService_hashed" binding="wssec10test:UserName_IPingService_hashed">
+            <soap:address location="http://localhost:9004/Security_WsSecurity_Service_Indigo/WsSecurity10.svc/HashedUserName"/>
+        </wsdl:port>
+	</wsdl:service>
+</wsdl:definitions>

Propchange: cxf/trunk/systests/ws-specs/src/test/resources/wsdl_systest_wsspec/wssec10/WsSecurity10_12_restricted_hashed.wsdl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/systests/ws-specs/src/test/resources/wsdl_systest_wsspec/wssec10/WsSecurity10_12_restricted_hashed.wsdl
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: cxf/trunk/systests/ws-specs/src/test/resources/wsdl_systest_wsspec/wssec10/WsSecurity10_12_restricted_hashed.wsdl
------------------------------------------------------------------------------
    svn:mime-type = text/xml