I don't see anything obviously wrong with your config. I added a test that
uses WS-SecurityPolicy to CXF based on your test-case and it works as
expected:

http://svn.apache.org/viewvc?view=revision&revision=1350561

Could you supply a test-case that reproduces the problem?

Colm.

On Thu, Jun 14, 2012 at 2:36 PM, Sunil Bapat <[email protected]> wrote:

> I am trying to call a web service which is secured by
> AsymmetricBinding with HOK SAML assertion (wsdl is below). This web
> service is called from another web service, i.e., the client is
> another web service.
>
> When I make the call to the service from the client, the message is
> not signed or encrypted, and the saml assertion is not inserted into
> the header. The SOAP message is a plain soap message without security
> headers or signatures or encryption.
>
> The client code and the corresponding configuration is below. Am I
> missing something? Do I need to explicitly define the wss4j
> interceptors, instead of the code below? I assumed that because of the
> policy defined, the interceptor would be automatically configured
> based on the properties in the request context.
>
> Any ideas?
>
> ----------------------------
> Client code:
>
> BindingProvider bindingProvider = (BindingProvider)helloWorldService;
>
> bindingProvider.getRequestContext().put(SecurityConstants.SAML_CALLBACK_HANDLER,
> new SAMLCallbackHandler(samlAssertionElement));
>
> bindingProvider.getRequestContext().put(SecurityConstants.SIGNATURE_PROPERTIES,
> "clientkeystore.properties");
>
> bindingProvider.getRequestContext().put(SecurityConstants.SIGNATURE_USERNAME,
> "client");
>
> bindingProvider.getRequestContext().put(SecurityConstants.ENCRYPT_PROPERTIES,
> "clienttruststore.properties");
> bindingProvider.getRequestContext().put(SecurityConstants.ENCRYPT_USERNAME,
> "server");
>
> String result = helloWorldService.sayHello(username);
>
> ----------------------------
> Client Config:
>
> <bean id="helloWorldServiceClient"
>
> class="com.test.services.helloworldservice.HelloWorldServicePortType"
>         factory-bean="helloWorldServiceClientFactory"
> factory-method="create">
>   </bean>
>
>   <bean id="helloWorldServiceClientFactory"
> class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
>      <property name="serviceClass"
>
> value="com.test.services.helloworldservice.HelloWorldServicePortType"
> />
>      <property name="address"
> value="http://localhost:8080/hok-helloworld-ws/HelloWorldService?wsdl";
> />
>      <property name="bus" ref="cxf" />
>  </bean>
>
> ------------------------------
> WSDL:
>
> <?xml version='1.0' encoding='UTF-8'?><wsdl:definitions
> name="HelloWorldService"
> targetNamespace="http://test.com/services/HelloWorldService";
> xmlns:ns1="http://schemas.xmlsoap.org/soap/http";
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
> xmlns:tns="http://test.com/services/HelloWorldService";
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
> xmlns:wsp="http://www.w3.org/ns/ws-policy";
> xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
>  <wsdl:types>
> <xs:schema elementFormDefault="unqualified"
> targetNamespace="http://test.com/services/HelloWorldService";
> version="1.0" xmlns:tns="http://test.com/services/HelloWorldService";
> xmlns:xs="http://www.w3.org/2001/XMLSchema";>
> <xs:element name="sayHello" type="tns:sayHello"/>
> <xs:element name="sayHelloResponse" type="tns:sayHelloResponse"/>
> <xs:complexType name="sayHello">
>    <xs:sequence>
>      <xs:element minOccurs="0" name="userName" type="xs:string"/>
>    </xs:sequence>
>  </xs:complexType>
> <xs:complexType name="sayHelloResponse">
>    <xs:sequence>
>      <xs:element minOccurs="0" name="return" type="xs:string"/>
>    </xs:sequence>
>  </xs:complexType>
> </xs:schema>
>  </wsdl:types>
>  <wsdl:message name="sayHelloResponse">
>    <wsdl:part element="tns:sayHelloResponse" name="parameters">
>    </wsdl:part>
>  </wsdl:message>
>  <wsdl:message name="sayHello">
>    <wsdl:part element="tns:sayHello" name="parameters">
>    </wsdl:part>
>  </wsdl:message>
>  <wsdl:portType name="HelloWorldServicePortType">
>    <wsdl:operation name="sayHello">
>      <wsdl:input message="tns:sayHello" name="sayHello">
>    </wsdl:input>
>      <wsdl:output message="tns:sayHelloResponse" name="sayHelloResponse">
>    </wsdl:output>
>    </wsdl:operation>
>  </wsdl:portType>
>  <wsdl:binding name="HelloWorldServiceSoapBinding"
> type="tns:HelloWorldServicePortType">
>    <soap:binding style="document"
> transport="http://schemas.xmlsoap.org/soap/http"/>
>    <wsp:PolicyReference URI="#asymmetricSAMLPolicy"/>
>    <wsdl:operation name="sayHello">
>      <soap:operation soapAction="" style="document"/>
>      <wsdl:input name="sayHello">
>        <soap:body use="literal"/>
>    <wsp:PolicyReference URI="#inputPolicy"/>
>      </wsdl:input>
>      <wsdl:output name="sayHelloResponse">
>        <soap:body use="literal"/>
>    <wsp:PolicyReference URI="#outputPolicy"/>
>      </wsdl:output>
>    </wsdl:operation>
>  </wsdl:binding>
>  <wsdl:service name="HelloWorldService">
>    <wsdl:port binding="tns:HelloWorldServiceSoapBinding"
> name="HelloWorldServicePort">
>      <soap:address
> location="http://localhost:8080/hok-helloworld-ws/HelloWorldService?wsdl
> "/>
>    </wsdl:port>
>  </wsdl:service>
>    <wsp:Policy wsu:Id="asymmetricSAMLPolicy"
> xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";
> xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata";
> 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
> ">
>   <wsp:ExactlyOne>
>      <wsp:All>
>         <wsam:Addressing wsp:Optional="false"/>
>         <sp:AsymmetricBinding>
>            <wsp:Policy>
>               <sp:InitiatorToken>
>                  <wsp:Policy>
>                     <sp:SamlToken
> sp:IncludeToken="
> http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient
> ">
>                        <wsp:Policy>
>                           <sp:WssSamlV20Token11/>
>                        </wsp:Policy>
>                     </sp:SamlToken>
>                  </wsp:Policy>
>               </sp:InitiatorToken>
>               <sp:RecipientToken>
>                  <wsp:Policy>
>                     <sp:X509Token
> sp:IncludeToken="
> http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never
> ">
>                        <wsp:Policy>
>                           <sp:WssX509V3Token10/>
>                           <sp:RequireIssuerSerialReference/>
>                        </wsp:Policy>
>                     </sp:X509Token>
>                  </wsp:Policy>
>               </sp:RecipientToken>
>               <sp:Layout>
>                  <wsp:Policy>
>                     <sp:Strict/>
>                  </wsp:Policy>
>               </sp:Layout>
>               <sp:IncludeTimestamp/>
>               <sp:OnlySignEntireHeadersAndBody/>
>               <sp:AlgorithmSuite>
>                  <wsp:Policy>
>                     <sp:Basic128/>
>                  </wsp:Policy>
>               </sp:AlgorithmSuite>
>            </wsp:Policy>
>         </sp:AsymmetricBinding>
>         <sp:Wss10>
>            <wsp:Policy>
>               <sp:MustSupportRefIssuerSerial/>
>            </wsp:Policy>
>         </sp:Wss10>
>      </wsp:All>
>   </wsp:ExactlyOne>
> </wsp:Policy>
>    <wsp:Policy wsu:Id="inputPolicy"
> xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";
> 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
> ">
>   <wsp:ExactlyOne>
>      <wsp:All>
>         <sp:EncryptedParts>
>            <sp:Body/>
>         </sp:EncryptedParts>
>         <sp:SignedParts>
>            <sp:Body/>
>         </sp:SignedParts>
>      </wsp:All>
>   </wsp:ExactlyOne>
> </wsp:Policy>
>    <wsp:Policy wsu:Id="outputPolicy"
> xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";
> 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
> ">
>   <wsp:ExactlyOne>
>      <wsp:All>
>         <sp:EncryptedParts>
>            <sp:Body/>
>         </sp:EncryptedParts>
>         <sp:SignedParts>
>            <sp:Body/>
>         </sp:SignedParts>
>      </wsp:All>
>   </wsp:ExactlyOne>
> </wsp:Policy>
> </wsdl:definitions>
> --------------------------------------------------------
>
> Thanks
> Sunil.
>



-- 
Colm O hEigeartaigh

Talend Community Coder
http://coders.talend.com

Reply via email to