Ok I have an answer for you. The problem is that you are using the
WS-SecurityPolicy 1.1 namespace ("
http://schemas.xmlsoap.org/ws/2005/07/securitypolicy";). This version of the
spec does not define "HashPassword" at all:

http://specs.xmlsoap.org/ws/2005/07/securitypolicy/ws-securitypolicy.pdf

The solution is to use the newer WS-SecurityPolicy 1.2 namespace instead,
which works fine - "
http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";. See here for an
example (line 215):

http://svn.apache.org/viewvc/cxf/trunk/systests/ws-security-examples/src/test/resources/org/apache/cxf/systest/wssec/examples/ut/DoubleItUt.wsdl?view=markup

Colm.


On Fri, Aug 23, 2013 at 12:16 PM, Sam <[email protected]> wrote:

>
> Version 2.7.6. The latest I believe.
>
> Thanks
> Sam
>
> On 23/08/2013 9:09 p.m., Colm O hEigeartaigh wrote:
>
>> What version of CXF are you using?
>>
>> Colm.
>>
>>
>> On Thu, Aug 22, 2013 at 10:15 PM, Sam <[email protected]> wrote:
>>
>>  Client config below
>>>
>>> cxf.xml
>>>
>>>     <beans 
>>> xmlns="http://www.**springfram**ework.org/schema/**beans<http://springframework.org/schema/**beans>
>>> <http:**//www.springframework.org/**schema/beans<http://www.springframework.org/schema/beans>
>>> >
>>> "
>>>         
>>> xmlns:xsi="http://www.w3.org/****2001/XMLSchema-instance<http://www.w3.org/**2001/XMLSchema-instance>
>>> <http:**//www.w3.org/2001/XMLSchema-**instance<http://www.w3.org/2001/XMLSchema-instance>
>>> >
>>> "
>>>         
>>> xmlns:jaxws="http://cxf.**apac**he.org/jaxws<http://apache.org/jaxws>
>>> <http://cxf.**apache.org/jaxws <http://cxf.apache.org/jaxws>>
>>> "
>>>     xsi:schemaLocation="http://**w**ww.springframework.org/****
>>> schema/beans <http://www.springframework.org/**schema/beans><http://www.
>>> **springframework.org/schema/**beans<http://www.springframework.org/schema/beans>
>>> >
>>>     http://www.springframework.****org/schema/beans/spring-beans.**
>>> **xsd<http://www.**springframework.org/schema/**beans/spring-beans.xsd<http://www.springframework.org/schema/beans/spring-beans.xsd>
>>> >
>>>              http://cxf.apache.org/jaxws
>>>              
>>> http://cxf.apache.org/schemas/****jaxws.xsd<http://cxf.apache.org/schemas/**jaxws.xsd>
>>> <http://cxf.apache.**org/schemas/jaxws.xsd<http://cxf.apache.org/schemas/jaxws.xsd>
>>> >
>>> ">
>>>
>>>          <jaxws:client
>>>     
>>> name="{http://www.example.org/****contract/DoubleIt}**DoubleItPort<http://www.example.org/**contract/DoubleIt%7DDoubleItPort>
>>> <http://www.**example.org/contract/DoubleIt%**7DDoubleItPort<http://www.example.org/contract/DoubleIt%7DDoubleItPort>
>>> >
>>> **"
>>>     createdFromAPI="true">
>>>              <!-- Uncomment if using WS-SecPolicy method -->
>>>              <jaxws:properties>
>>>                  <entry key="ws-security.username" value="joe"/>
>>>                  <entry key="ws-security.callback-****handler"
>>>     value-ref="myPasswordCallback"****/>
>>>              </jaxws:properties>
>>>
>>>          </jaxws:client>
>>>
>>>          <bean id="myPasswordCallback"
>>>     class="client.****ClientPasswordCallback"/>
>>>
>>>     </beans>
>>>
>>>
>>> ClientPasswordCallback
>>>
>>>     public class ClientPasswordCallback implements CallbackHandler {
>>>
>>>          public void handle(Callback[] callbacks) throws IOException,
>>>                  UnsupportedCallbackException {
>>>              WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
>>>
>>>              if ("joe".equals(pc.****getIdentifier())) {
>>>                  pc.setPassword("joespassword")****;
>>>              } // else {...} - can add more users, access DB, etc.
>>>          }
>>>     }
>>>
>>> Everything works, just that password of request is in clear text and no
>>> error response.
>>>
>>> In case you ask Server config, here it is:
>>>
>>> cxf-servlet.xml
>>>
>>>     <?xml version="1.0" encoding="UTF-8"?>
>>>     <beans 
>>> xmlns="http://www.**springfram**ework.org/schema/**beans<http://springframework.org/schema/**beans>
>>> <http:**//www.springframework.org/**schema/beans<http://www.springframework.org/schema/beans>
>>> >
>>> "
>>>         
>>> xmlns:xsi="http://www.w3.org/****2001/XMLSchema-instance<http://www.w3.org/**2001/XMLSchema-instance>
>>> <http:**//www.w3.org/2001/XMLSchema-**instance<http://www.w3.org/2001/XMLSchema-instance>
>>> >
>>> "
>>>         
>>> xmlns:jaxws="http://cxf.**apac**he.org/jaxws<http://apache.org/jaxws>
>>> <http://cxf.**apache.org/jaxws <http://cxf.apache.org/jaxws>>
>>> "
>>>     xsi:schemaLocation="http://**w**ww.springframework.org/****
>>> schema/beans <http://www.springframework.org/**schema/beans><http://www.
>>> **springframework.org/schema/**beans<http://www.springframework.org/schema/beans>
>>> >
>>>     http://www.springframework.****org/schema/beans/spring-beans.**
>>> **xsd<http://www.**springframework.org/schema/**beans/spring-beans.xsd<http://www.springframework.org/schema/beans/spring-beans.xsd>
>>> >
>>>               http://cxf.apache.org/jaxws
>>>               
>>> http://cxf.apache.org/schemas/****jaxws.xsd<http://cxf.apache.org/schemas/**jaxws.xsd>
>>> <http://cxf.apache.**org/schemas/jaxws.xsd<http://cxf.apache.org/schemas/jaxws.xsd>
>>> >
>>> ">
>>>
>>>         <jaxws:endpoint id="doubleit"
>>>            implementor="service.****DoubleItPortTypeImpl"
>>>            address="/doubleit"
>>>            wsdlLocation="WEB-INF/wsdl/****DoubleIt.wsdl">
>>>
>>>            <!-- Uncomment only if using WS-SecurityPolicy -->
>>>            <jaxws:properties>
>>>               <entry key="ws-security.callback-****handler"
>>>     value-ref="myPasswordCallback"****/>
>>>            </jaxws:properties>
>>>
>>>         </jaxws:endpoint>
>>>
>>>         <bean id="myPasswordCallback"
>>>     class="service.****ServerPasswordCallback" />
>>>     </beans>
>>>
>>> ServerPasswordCallback
>>>
>>>     public class ServerPasswordCallback implements CallbackHandler {
>>>
>>>          public void handle(Callback[] callbacks) throws IOException,
>>>                  UnsupportedCallbackException {
>>>              WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
>>>
>>>              if ("joe".equals(pc.****getIdentifier())) {
>>>                 pc.setPassword("joespassword")****;
>>>              }
>>>          }
>>>     }
>>>
>>> Thanks
>>> Sam
>>>
>>> On 23/08/2013 12:47 a.m., Colm O hEigeartaigh wrote:
>>>
>>>  What does your client configuration look like?
>>>>
>>>> Colm.
>>>>
>>>>
>>>> On Thu, Aug 22, 2013 at 12:34 PM, Sam <[email protected]> wrote:
>>>>
>>>>   Hi Colm,
>>>>
>>>>> The policy is
>>>>>
>>>>>        <wsp:Policy wsu:Id="DoubleItBindingPolicy"******>
>>>>>             <wsp:ExactlyOne>
>>>>>                 <wsp:All>
>>>>>                     <sp:SupportingTokens
>>>>>      xmlns:sp="http://schemas.****xml**soap.org/ws/2005/07/****
>>>>> securitypolicy 
>>>>> <http://xmlsoap.org/ws/2005/**07/**securitypolicy<http://xmlsoap.org/ws/2005/07/**securitypolicy>
>>>>> ><
>>>>> http://schemas.**xmlsoap.org/**ws/2005/07/**securitypolicy<http://xmlsoap.org/ws/2005/07/**securitypolicy>
>>>>> <ht**tp://schemas.xmlsoap.org/ws/**2005/07/securitypolicy<http://schemas.xmlsoap.org/ws/2005/07/securitypolicy>
>>>>> >
>>>>> ">
>>>>>                         <wsp:Policy>
>>>>>                             <sp:UsernameToken
>>>>>      
>>>>> sp:IncludeToken="http://****sche**mas.xmlsoap.org/ws/2005/****<http://mas.xmlsoap.org/ws/2005/**>
>>>>> <http://schemas.xmlsoap.org/**ws/2005/**<http://schemas.xmlsoap.org/ws/2005/**>
>>>>> >
>>>>> 07/securitypolicy/******IncludeToken/****AlwaysToRecipient<http://**
>>>>> schemas.xmlsoap.org/ws/2005/****07/securitypolicy/**<http://schemas.xmlsoap.org/ws/2005/**07/securitypolicy/**>
>>>>> IncludeToken/**AlwaysToRecipient<http://**schemas.xmlsoap.org/ws/2005/
>>>>> **07/securitypolicy/**IncludeToken/AlwaysToRecipient<http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient>
>>>>> **>
>>>>> **>
>>>>> **">
>>>>>                                 <wsp:Policy>
>>>>>                                     <sp:HashPassword/>
>>>>>                                     <sp:WssUsernameToken11/>
>>>>>                                 </wsp:Policy>
>>>>>                             </sp:UsernameToken>
>>>>>                         </wsp:Policy>
>>>>>                     </sp:SupportingTokens>
>>>>>                 </wsp:All>
>>>>>             </wsp:ExactlyOne>
>>>>>          </wsp:Policy>
>>>>>
>>>>> I am not getting any error message and the password in request is still
>>>>> in
>>>>> clear text when I run the sample code from Glen's site. Response still
>>>>> returns OK.
>>>>> I was expecting CXF to take care of hashing password automatically but
>>>>> it
>>>>> still works without returning error message.
>>>>>
>>>>> It's like <sp:HashPassword/> is optional. Maybe I am missing something.
>>>>>
>>>>> Thanks
>>>>> Sam
>>>>>
>>>>> On 22/08/2013 11:08 p.m., Colm O hEigeartaigh wrote:
>>>>>
>>>>>   Yes it is possible. What policy are you using + what is the error you
>>>>>
>>>>>> are
>>>>>> getting?
>>>>>>
>>>>>> Colm.
>>>>>>
>>>>>>
>>>>>> On Thu, Aug 22, 2013 at 11:53 AM, Sam <[email protected]> wrote:
>>>>>>
>>>>>>    Hi all,
>>>>>>
>>>>>>  I read in http://pic.dhe.ibm.com/********
>>>>>>> infocenter/wasinfo/v8r5/index.***<http://pic.dhe.ibm.com/******infocenter/wasinfo/v8r5/index.*>
>>>>>>> ***** <http://pic.dhe.ibm.com/******infocenter/wasinfo/v8r5/index.**
>>>>>>> **** <http://pic.dhe.ibm.com/****infocenter/wasinfo/v8r5/index.****>
>>>>>>> ><
>>>>>>> http://pic.dhe.ibm.com/******infocenter/wasinfo/v8r5/index.******<http://pic.dhe.ibm.com/****infocenter/wasinfo/v8r5/index.****>
>>>>>>> <http://pic.dhe.ibm.com/****infocenter/wasinfo/v8r5/index.****<http://pic.dhe.ibm.com/**infocenter/wasinfo/v8r5/index.**>
>>>>>>> >
>>>>>>> jsp?topic=%2Fcom.ibm.********websphere.wlp.express.doc%**
>>>>>>> 2Fae%2Fcwlp_wssec_templates_********scenario1.html<http://pic.**
>>>>>>> **dhe.<http://pic.dhe.>
>>>>>>> **
>>>>>>> ibm.com/infocenter/wasinfo/******v8r5/index.jsp?topic=%2Fcom.****<http://ibm.com/infocenter/wasinfo/****v8r5/index.jsp?topic=%2Fcom.**>
>>>>>>> <http://ibm.com/infocenter/**wasinfo/**v8r5/index.jsp?**
>>>>>>> topic=%2Fcom.**<http://ibm.com/infocenter/wasinfo/**v8r5/index.jsp?topic=%2Fcom.**>
>>>>>>> >
>>>>>>> ibm.websphere.wlp.express.doc%******2Fae%2Fcwlp_wssec_**
>>>>>>> templates_****
>>>>>>> scenario1.html<http://pic.dhe.****ibm.com/infocenter/wasinfo/****<http://ibm.com/infocenter/wasinfo/**>
>>>>>>> v8r5/index.jsp?topic=%2Fcom.****ibm.websphere.wlp.express.doc%****
>>>>>>> 2Fae%2Fcwlp_wssec_templates_****scenario1.html<http://pic.dhe.**
>>>>>>> ibm.com/infocenter/wasinfo/**v8r5/index.jsp?topic=%2Fcom.**
>>>>>>> ibm.websphere.wlp.express.doc%**2Fae%2Fcwlp_wssec_templates_**
>>>>>>> scenario1.html<http://pic.dhe.ibm.com/infocenter/wasinfo/v8r5/index.jsp?topic=%2Fcom.ibm.websphere.wlp.express.doc%2Fae%2Fcwlp_wssec_templates_scenario1.html>
>>>>>>> >
>>>>>>>
>>>>>>>> ,
>>>>>>>>
>>>>>>>>  which shows
>>>>>>> the use of ws-policy for UsernameToken with password digest
>>>>>>> (HashPassword)
>>>>>>> over SSL.
>>>>>>>
>>>>>>> My question is, is it possible to use ws-policy  for UsernameToken
>>>>>>> with
>>>>>>> password digest without SSL in CXF?
>>>>>>>
>>>>>>> I am asking as I have been tweaking the WSDL for the usernametoke
>>>>>>> tutorial
>>>>>>> from http://www.jroller.com/gmazza/********entry/cxf_usernametoken_*
>>>>>>> *****<http://www.jroller.com/gmazza/******entry/cxf_usernametoken_****>
>>>>>>> ** <http://www.jroller.com/**gmazza/****entry/cxf_**
>>>>>>> usernametoken_****<http://www.jroller.com/gmazza/****entry/cxf_usernametoken_****>
>>>>>>> >
>>>>>>> profile<http://www.jroller.****com/gmazza/**entry/cxf_**
>>>>>>> usernametoken_**profile<http:/**/www.jroller.com/gmazza/****
>>>>>>> entry/cxf_usernametoken_****profile<http://www.jroller.com/gmazza/**entry/cxf_usernametoken_**profile>
>>>>>>> >
>>>>>>> <http://www.jroller.**com/****gmazza/entry/cxf_****
>>>>>>> usernametoken_profile<http://****www.jroller.com/gmazza/entry/****<http://www.jroller.com/gmazza/entry/**>
>>>>>>> cxf_usernametoken_profile<http**://www.jroller.com/gmazza/**
>>>>>>> entry/cxf_usernametoken_**profile<http://www.jroller.com/gmazza/entry/cxf_usernametoken_profile>
>>>>>>> >
>>>>>>>
>>>>>>>> ,
>>>>>>>>
>>>>>>>>  to run without SSL successfully, now
>>>>>>> I am trying to make it support password digest without SSL , and
>>>>>>> without
>>>>>>> luck.
>>>>>>>
>>>>>>> Thanks
>>>>>>> Sam
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>
>


-- 
Colm O hEigeartaigh

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

Reply via email to