Hi Colm,
I can't modify the WSDL, it's a product WSDL and modifying the WSDL will
make us loose support from the Editor.
So I guess it's all in client side that I must do something.
I did try to put in the client configuration :
<jaxws:properties>
<entry key="passwordType"
value="PasswordText" />
I've looked the constant values of :
properties.put(WSHandlerConstants.PASSWORD_TYPE , WSConstants.PW_TEXT
);// "PasswordDigest"
to do so, but with no luck.
any suggestion to correctly apply security policye ?
is something like the following a good direction? (I'll search tomorrow)
<jaxws:properties>
<entry key="ws-security.password"
value="com.mansonthomas.MyPasswordCallBackHandlerClass"/>
(or ref="MyPasswordCallBackHandlerBean"/>
Thanks,
Thomas.
On Thu, Oct 3, 2013 at 10:29 AM, Colm O hEigeartaigh <[email protected]>wrote:
>
> The configuration looks ok, but it looks like there is no security policy,
> and hence no security header is added to the request? There needs to be
> either a security policy specified in the WSDL, or alternatively you can
> reference one in your jaxws:client configuration. If you need UsernameToken
> I suggest looking at one of the policies in the tests here:
>
>
> http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/ws-security-examples/src/test/resources/org/apache/cxf/systest/wssec/examples/ut/DoubleItUt.wsdl?view=markup
>
> Or for SAML:
>
>
> http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/ws-security-examples/src/test/resources/org/apache/cxf/systest/wssec/examples/saml/DoubleItSaml.wsdl?view=markup
>
> Colm.
>
>
> On Wed, Oct 2, 2013 at 12:27 PM, Thomas Manson <[email protected]
> > wrote:
>
>> I forgot to include the webservice2.xml file :
>>
>>
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <beans xmlns="http://www.springframework.org/schema/beans"
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> xmlns:jaxws="http://cxf.apache.org/jaxws"
>>
>> xmlns:cxf="http://cxf.apache.org/core"
>> xmlns:p="http://cxf.apache.org/policy"
>>
>> xsi:schemaLocation="
>> http://www.springframework.org/schema/beans
>> http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
>> http://cxf.apache.org/jaxws
>> http://cxf.apache.org/schemas/jaxws.xsd
>> http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
>> ">
>>
>>
>>
>> <cxf:bus>
>> <cxf:features>
>> <p:policies/>
>> <cxf:logging/>
>> </cxf:features>
>> </cxf:bus>
>>
>>
>> <jaxws:client
>> id="WorkListServiceProxyFactory"
>> name="{http://services.brm.n2.tibco.com}WorkListService_EP"
>> serviceClass="com.tibco.n2.brm.services.WorkListService"
>> address="http://192.168.2.212:8080/amxbpm/WorkListService">
>>
>> <jaxws:properties>
>> <entry key="ws-security.callback-handler"
>>
>>
>> value="com.mansonthomas.amxbpm.customwebapp.services.amxbpm.security.PasswordCallbackHandler"
>> />
>> </jaxws:properties>
>> </jaxws:client>
>>
>> </beans>
>>
>>
>> On Wed, Oct 2, 2013 at 12:37 PM, Thomas Manson <
>> [email protected]> wrote:
>>
>>> Hi Colm,
>>>
>>> I can't make it work while I'm exactly in the configuration you're
>>> suggesting (and that is in the example you gave me) and I don't get what I
>>> miss :
>>>
>>> So in my spring bean, I initialize as suggested the WebService :
>>>
>>>
>>>
>>> ###################################################################################
>>> public WorkListServiceImpl2( ContextService contextService) throws
>>> Exception
>>> {
>>> this.contextService = contextService;
>>>
>>> SpringBusFactory bf = new SpringBusFactory();
>>> URL busFile =
>>> this.contextService.getResource("/WEB-INF/spring/webservices2.xml");
>>>
>>> Bus bus = bf.createBus(busFile.toString());
>>> SpringBusFactory.setDefaultBus(bus);
>>> SpringBusFactory.setThreadDefaultBus(bus);
>>>
>>> URL wsdl = this.contextService.getResource("/wsdl/brm.wsdl");
>>>
>>> Service service = Service.create(wsdl, new QName("
>>> http://services.brm.n2.tibco.com","WorkListService"));
>>> QName portQName = new QName("http://services.brm.n2.tibco.com",
>>> "WorkListService_EP");
>>>
>>> this.workListService = service.getPort(portQName,
>>> WorkListService.class);
>>>
>>> }
>>>
>>> ###################################################################################
>>>
>>> I use afterPropertySet() of Spring to call the webservice right after
>>> Spring init.
>>>
>>>
>>> ###################################################################################
>>> public List<WorkItemFwk> getWorkListItems(String username,
>>> WorkListItemQuery workListItemQuery)
>>> {
>>> //... init this object : getWorkListItems
>>> try
>>> {
>>>
>>> ((BindingProvider)this.workListService).getRequestContext().put("thread.local.request.context",
>>> "true");
>>>
>>> ((BindingProvider)this.workListService).getRequestContext().put(SecurityConstants.USERNAME,
>>> username);
>>>
>>> getWorkListItemsResponse =
>>> this.workListService.getWorkListItems(getWorkListItems);
>>> }
>>> catch(Exception e)
>>> {
>>> logger.error("Error while getting worklistItems for
>>> "+workListItemQuery.toString(),e);
>>> }
>>>
>>> ###################################################################################
>>>
>>> And yet there's no SOAP header set in the request:
>>>
>>>
>>> oct. 02, 2013 12:28:11 PM
>>> org.apache.cxf.services.WorkListService.WorkListService_EP.WorkListService
>>> INFO: Outbound Message
>>> ---------------------------
>>> ID: 1
>>> Address: http://192.168.2.212:8080/amxbpm/WorkListService
>>> Encoding: UTF-8
>>> Http-Method: POST
>>> Content-Type: text/xml
>>> Headers: {Accept=[*/*], SOAPAction=["getWorkListItems"]}
>>> Payload: <soap:Envelope xmlns:soap="
>>> http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:getWorkListItems
>>> xmlns:ns2="http://api.brm.n2.tibco.com" xmlns:ns3="
>>> http://exception.api.brm.n2.tibco.com" xmlns:ns4="
>>> http://exception.api.common.n2.tibco.com" xmlns:ns5="
>>> http://www.tibco.com/XPD/ScriptDescriptor/" xmlns:ns6="
>>> http://exception.api.de.n2.tibco.com" startPosition="0"
>>> numberOfItems="10" getTotalCount="true"><entityID entity-type="RESOURCE"
>>> guid="tibco-admin"
>>> model-version="-1"/><orderFilterCriteria/></ns2:getWorkListItems></soap:Body></soap:Envelope>
>>> --------------------------------------
>>>
>>> So I get the following expection :
>>>
>>> javax.xml.ws.soap.SOAPFaultException: Authentication Failed.
>>> AuthNSAML20Principal set in Subject is null or empty.
>>>
>>>
>>> oct. 02, 2013 12:28:11 PM
>>> org.apache.cxf.services.WorkListService.WorkListService_EP.WorkListService
>>> INFO: Inbound Message
>>> ----------------------------
>>> ID: 1
>>> Response-Code: 500
>>> Encoding: UTF-8
>>> Content-Type: text/xml; charset=utf-8
>>> Headers: {Content-Length=[605], content-type=[text/xml; charset=utf-8],
>>> Date=[Wed, 02 Oct 2013 10:27:43 GMT], Expires=[Thu, 01 Jan 1970 00:00:00
>>> GMT],
>>> Set-Cookie=[JSESSIONID=1houdu4luwh4caof40jy2d8x6;Path=/amxbpm;HttpOnly]}
>>> Payload: <?xml version="1.0" encoding="UTF-8"?>
>>> <SOAP-ENV:Envelope xmlns:SOAP-ENV="
>>> http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Authentication
>>> Failed. AuthNSAML20Principal set in Subject is null or
>>> empty.</faultstring><faultactor>DefaultRole</faultactor><detail><tibco:myFaultDetail
>>> xmlns:tibco="http://tibcouri/">com.tibco.amf.spline.api.context.SplineMessagingException:
>>> Authentication Failed. AuthNSAML20Principal set in Subject is null or empty.
>>>
>>> </tibco:myFaultDetail></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
>>> --------------------------------------
>>>
>>>
>>>
>>>
>>> Any idea before I jump through the window ? ;)
>>>
>>> Thanks,
>>> Thomas.
>>>
>>>
>>>
>>>
>>> On Thu, Sep 26, 2013 at 4:36 PM, Thomas Manson <
>>> [email protected]> wrote:
>>>
>>>> Hi Colm,
>>>>
>>>> I know I'm probably exasperating you with my dumb questions, but I
>>>> really need help...
>>>>
>>>>
>>>> So reading the FAQ, I understand that we're thread safe if we use :
>>>>
>>>> ((BindingProvider)proxy).getRequestContext().put(
>>>> "thread.local.request.context", "true");
>>>>
>>>> before calling
>>>>
>>>> ((BindingProvider)*this*.workListService
>>>> ).getRequestContext().put(SecurityConstants.*USERNAME*, "Alice");
>>>>
>>>> Right ?
>>>>
>>>>
>>>> With the JaxWSClient, I've tried to use
>>>>
>>>>
>>>> ((BindingProvider)utPort).getRequestContext().put(SecurityConstants.USERNAME,
>>>> "Alice");
>>>>
>>>> and it didn't had any effect... (I was making subsequent call, and
>>>> changing the username)
>>>>
>>>> The web service response was the same for the two user, while one
>>>> should have replied an empty response.
>>>>
>>>> * try
>>>> * {
>>>> ((BindingProvider)*this*.workListService
>>>> ).getRequestContext().put(SecurityConstants.*USERNAME*, username);
>>>> getWorkListItemsResponse = *this*.workListService
>>>> .getWorkListItems(getWorkListItems);
>>>> }
>>>> *catch*(Exception e)
>>>> {
>>>> *logger*.error("Error while getting worklistItems for "
>>>> +workListItemQuery.toString());
>>>> }
>>>>
>>>> Did I miss somehting ?
>>>>
>>>>
>>>>
>>>> One other thing I did understand in the meantime, is that, by using
>>>>
>>>> JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
>>>> factory.setServiceClass(WorkListService.class);
>>>> factory.setAddress(this.endpoint);
>>>> //
>>>> factory.setWsdlLocation("D:/ARTIC/SOURCE/artic/trunk/webapp/src/main/webapp/WSDL/brm.wsdl");
>>>> factory.setServiceName(new QName("http://services.brm.n2.tibco.com",
>>>> "WorkListService"));
>>>>
>>>> Or
>>>>
>>>> SpringBusFactory bf = new SpringBusFactory();
>>>> URL busFile = WorkListServiceImpl2.class.getResource("client.xml");
>>>>
>>>> Bus bus = bf.createBus(busFile.toString());
>>>> SpringBusFactory.setDefaultBus(bus);
>>>> SpringBusFactory.setThreadDefaultBus(bus);
>>>>
>>>> URL wsdl = WorkListServiceImpl2.class.getResource(
>>>> "/Users/tmanson/Dropbox/crf/AMXBPM-2.1-WS-Client/src/main/resources/brm.wsdl"
>>>> );
>>>> Service service = Service.create(wsdl, new QName("
>>>> http://api.brm.n2.tibco.com", "WorkListService"));
>>>> QName portQName = new QName("http://services.brm.n2.tibco.com",
>>>> "WorkListService_EP");
>>>> this.workListService =
>>>> service.getPort(portQName, WorkListService.class);
>>>>
>>>> etc...
>>>>
>>>> we ask CXF to generate on the fly the WS Client, is it correct?
>>>>
>>>>
>>>> Now I've already generated a client (with CXF/Ant), which I want to
>>>> invoke instead with this code :
>>>>
>>>> WorkListService_Service proxy = *new* WorkListService_Service(*new*URL(
>>>> "http://localhost:8080/amxbpm-web/wsdl/brm.wsdl"),
>>>> *new* QName("http://services.brm.n2.tibco.com",
>>>> "WorkListService"));
>>>> *this*.workListService = proxy.getPort( *new* QName("
>>>> http://services.brm.n2.tibco.com", "WorkListService_EP"),
>>>> WorkListService.*class*);
>>>>
>>>> I wonder how it can be used in conjonction with this code, and How
>>>> should I handle the authentication part...:
>>>>
>>>> SpringBusFactory bf = *new* SpringBusFactory();
>>>> URL busFile = WorkListServiceImpl2.*class*.getResource("client.xml");
>>>> Bus bus = bf.createBus(busFile.toString());
>>>> SpringBusFactory.*setDefaultBus*(bus);
>>>> SpringBusFactory.*setThreadDefaultBus*(bus);
>>>>
>>>>
>>>> I still dont get what file should I put instead of client.xml as I'm
>>>> already in a spring context, should I specify the file where I define my
>>>> bean already ?
>>>> it's quite confusing...
>>>>
>>>>
>>>> Thomas.
>>>>
>>>>
>>>> On Wed, Sep 25, 2013 at 3:36 PM, Colm O hEigeartaigh <
>>>> [email protected]> wrote:
>>>>
>>>>> > Is it thread safe ?
>>>>>
>>>>> http://cxf.apache.org/faq.html#FAQ-AreJAXWSclientproxiesthreadsafe%3F
>>>>>
>>>>> All you need is a JAX-WS client proxy, how you obtain one or set up
>>>>> your
>>>>> project is up to you...
>>>>>
>>>>> Colm.
>>>>>
>>>>>
>>>>> On Tue, Sep 24, 2013 at 2:07 PM, Thomas Manson
>>>>> <[email protected]>wrote:
>>>>>
>>>>> > Hi Colm,
>>>>> >
>>>>> > I'm starting to understand that it's another way to configure the
>>>>> client.
>>>>> >
>>>>> > I've two questions :
>>>>> >
>>>>> > - Is it thread safe ?
>>>>> > I guess that it is as I see that the ServiceBus specify a Thread.
>>>>> > In a J2EE context, should I specify something else than
>>>>> > SpringBusFactory.setThreadDefaultBus(bus); ?
>>>>> >
>>>>> >
>>>>> > - I'm a bit puzzled by the configuration:
>>>>> >
>>>>> >
>>>>> > SpringBusFactory bf = new SpringBusFactory();
>>>>> > URL busFile =
>>>>> UsernameTokenTest.class.getResource("client/client.xml");
>>>>> >
>>>>> >
>>>>> > This code load a Spring configuration file, while I already have
>>>>> mine +
>>>>> > the client.xml configuration has some cxf:bus definition (is it the
>>>>> same
>>>>> > thing ? SringBusFactory & cxf:bus ?).
>>>>> >
>>>>> > So I wonder I can't just use this code in an existing spring
>>>>> context, How
>>>>> > should I transpose this within an existing spring context?
>>>>> >
>>>>> >
>>>>> > How I think it would work is :
>>>>> >
>>>>> >
>>>>> > - Use your way to setup SpringBus and the Client
>>>>> > - Have a Spring class X that has the WS Client as dependency
>>>>> > - X implement each method of the WS(+some additional business
>>>>> logic)
>>>>> > and set the username dynamically <= I still don't know how to do
>>>>> this...
>>>>> >
>>>>> > Is it the correct way ?
>>>>> >
>>>>> > Thomas.
>>>>> >
>>>>> > Here is my current work in progress spring file
>>>>> >
>>>>> > <beans xmlns="http://www.springframework.org/schema/beans"
>>>>> >
>>>>> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cxf="
>>>>> > http://cxf.apache.org/core"
>>>>> > xsi:schemaLocation="
>>>>> > http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
>>>>> > http://www.springframework.org/schema/beans
>>>>> > http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
>>>>> >
>>>>> >
>>>>> > <cxf:bus>
>>>>> > <cxf:features>
>>>>> > <cxf:logging />
>>>>> > </cxf:features>
>>>>> > </cxf:bus>
>>>>> >
>>>>> >
>>>>> >
>>>>> > <!--
>>>>> >
>>>>> /Users/tmanson/Dropbox/crf/AMXBPM-2.1-WS-Client/src/main/resources/de.wsdl
>>>>> > -->
>>>>> > <jaxws:client
>>>>> > name="{http://services.brm.n2.tibco.com
>>>>> }EntityResolverService"
>>>>> >
>>>>> >
>>>>> wsdlLocation="/Users/tmanson/Dropbox/crf/AMXBPM-2.1-WS-Client/src/main/resources/de.wsdl"
>>>>> > serviceClass="com.tibco.n2.de.services.EntityResolverService"
>>>>> > address="
>>>>> http://192.168.2.202:8080/amxbpm/EntityResolverService"
>>>>> > createdFromAPI="true">
>>>>> > <jaxws:properties>
>>>>> > <entry key="ws-security.callback-handler"
>>>>> >
>>>>> >
>>>>>
>>>>> value="com.mansonthomas.amxbpm.customwebapp.services.amxbpm.security.PasswordCallbackHandler"
>>>>> > />
>>>>> > </jaxws:properties>
>>>>> > </jaxws:client>
>>>>> >
>>>>> > </beans>
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> > On Tue, Sep 24, 2013 at 11:41 AM, Colm O hEigeartaigh <
>>>>> [email protected]
>>>>> > > wrote:
>>>>> >
>>>>> >> Look at the last test here:
>>>>> >>
>>>>> >>
>>>>> >>
>>>>> http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/ut/UsernameTokenTest.java?view=markup
>>>>> >>
>>>>> >>
>>>>> >>
>>>>> ((BindingProvider)utPort).getRequestContext().put(SecurityConstants.USERNAME,
>>>>> >> "Alice");
>>>>> >>
>>>>> >> Colm.
>>>>> >>
>>>>> >>
>>>>> >> On Tue, Sep 24, 2013 at 10:33 AM, Thomas Manson
>>>>> >> <[email protected]>wrote:
>>>>> >>
>>>>> >> > Hi Colm,
>>>>> >> >
>>>>> >> > I'm back working on this subject (was on pause as I was working
>>>>> for
>>>>> >> other
>>>>> >> > clients)
>>>>> >> >
>>>>> >> > I've checked out the SVN repo you gave me, and I've looked
>>>>> through the
>>>>> >> > samples configurations (client.xml) and I can't find anything
>>>>> >> appropriate.
>>>>> >> >
>>>>> >> > In the UT (Username Token I guess), the username is always
>>>>> provided in
>>>>> >> the
>>>>> >> > configuration file.
>>>>> >> > The saml/x509 configuration still refers to Alice.properties...
>>>>> >> >
>>>>> >> >
>>>>> >> > In my case, the username shouldn't appear in the configuration
>>>>> files,
>>>>> >> as
>>>>> >> > I need to use the J2EE Principal as login, and call the
>>>>> webservice to
>>>>> >> > authenticate the user.
>>>>> >> >
>>>>> >> > Could you point me to the right direction ?
>>>>> >> >
>>>>> >> > Thomas.
>>>>> >> >
>>>>> >> >
>>>>> >> >
>>>>> >> >
>>>>> >> >
>>>>> >> > On Sat, Jul 13, 2013 at 1:45 AM, Thomas Manson
>>>>> >> > <[email protected]>wrote:
>>>>> >> >
>>>>> >> > > Thanks, it will surely help a lot :)
>>>>> >> > >
>>>>> >> > > Thomas.
>>>>> >> > >
>>>>> >> > >
>>>>> >> > > On Fri, Jul 12, 2013 at 6:05 PM, Colm O hEigeartaigh <
>>>>> >> > [email protected]>wrote:
>>>>> >> > >
>>>>> >> > >> Please take a look at the tests here:
>>>>> >> > >>
>>>>> >> > >>
>>>>> >> > >>
>>>>> >> >
>>>>> >>
>>>>> http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/ws-security-examples/
>>>>> >> > >>
>>>>> >> > >> Colm.
>>>>> >> > >>
>>>>> >> > >>
>>>>> >> > >> On Fri, Jul 12, 2013 at 4:22 PM, Thomas Manson
>>>>> >> > >> <[email protected]>wrote:
>>>>> >> > >>
>>>>> >> > >> > Do you have any other pointer that this page :
>>>>> >> > >> >
>>>>> >> > >> > cxf.apache.org/docs/ws-securitypolicy.html
>>>>> >> > >> >
>>>>> >> > >> > it's way to short for me as documentation to build something
>>>>> that
>>>>> >> > work.
>>>>> >> > >> > When I read the properties described, I feel there's a mix
>>>>> between
>>>>> >> > >> server
>>>>> >> > >> > side properties (which I'm not interested as I'm just
>>>>> implementing
>>>>> >> a
>>>>> >> > >> > client)... + it starts with extra properties... where are
>>>>> the basic
>>>>> >> > >> ones?
>>>>> >> > >> >
>>>>> >> > >> > what would help is a full example of the code of a client.
>>>>> >> > >> >
>>>>> >> > >> > I'm quite lost ;)
>>>>> >> > >> >
>>>>> >> > >> >
>>>>> >> > >> >
>>>>> >> > >> >
>>>>> >> > >> > On Fri, Jul 12, 2013 at 5:09 PM, Colm O hEigeartaigh <
>>>>> >> > >> [email protected]
>>>>> >> > >> > >wrote:
>>>>> >> > >> >
>>>>> >> > >> > >
>>>>> >> > >> > > If you follow the WS-SecurityPolicy approach then it will
>>>>> work,
>>>>> >> as
>>>>> >> > >> all of
>>>>> >> > >> > > the configuration is taken from the context rather than a
>>>>> >> properties
>>>>> >> > >> Map.
>>>>> >> > >> > >
>>>>> >> > >> > > Colm.
>>>>> >> > >> > >
>>>>> >> > >> > >
>>>>> >> > >> > > On Fri, Jul 12, 2013 at 4:01 PM, Thomas Manson <
>>>>> >> > >> > [email protected]
>>>>> >> > >> > > > wrote:
>>>>> >> > >> > >
>>>>> >> > >> > >> I already does what you say as follow, but it mean one
>>>>> >> instance of
>>>>> >> > >> the
>>>>> >> > >> > >> client per user connected.
>>>>> >> > >> > >>
>>>>> >> > >> > >>
>>>>> >> > >> > >> I've search quite some time dans didn't find a way to set
>>>>> >> something
>>>>> >> > >> like
>>>>> >> > >> > >> the password callback handler.
>>>>> >> > >> > >>
>>>>> >> > >> > >>
>>>>> >> > >> > >>
>>>>> >> > >> > >> JaxWsProxyFactoryBean factory = new
>>>>> JaxWsProxyFactoryBean();
>>>>> >> > >> > >>
>>>>> >> > >> > >> factory.setServiceClass(WorkListService.class);
>>>>> >> > >> > >>
>>>>> >> > >> > >> factory.setAddress(this.endpoint);
>>>>> >> > >> > >>
>>>>> >> > >> > >> //
>>>>> >> > >> > >>
>>>>> >> > >> >
>>>>> >> > >>
>>>>> >> >
>>>>> >>
>>>>> factory.setWsdlLocation("D:/ARTIC/SOURCE/artic/trunk/webapp/src/main/webapp/WSDL/brm.wsdl");
>>>>> >> > >> > >>
>>>>> >> > >> > >> factory.setServiceName(new QName("
>>>>> >> > >> http://services.brm.n2.tibco.com
>>>>> >> > >> > ",
>>>>> >> > >> > >> "WorkListService"));
>>>>> >> > >> > >>
>>>>> >> > >> > >> WorkListService workListService = (WorkListService)
>>>>> >> > >> > factory.create();
>>>>> >> > >> > >>
>>>>> >> > >> > >>
>>>>> >> > >> > >> Client client =
>>>>> ClientProxy.getClient(workListService);
>>>>> >> > >> > >>
>>>>> >> > >> > >>
>>>>> >> > >> > >> Map<String, Object> properties = new HashMap<String,
>>>>> >> Object>();
>>>>> >> > >> > >>
>>>>> >> > >> > >> properties.put(WSHandlerConstants.ACTION ,
>>>>> >> > >> > >> WSHandlerConstants.USERNAME_TOKEN);
>>>>> >> > >> > >>
>>>>> >> > >> > >> properties.put(WSHandlerConstants.USER ,
>>>>> >> > >> this.username);
>>>>> >> > >> > >>
>>>>> >> > >> > >> properties.put(WSHandlerConstants.PASSWORD_TYPE ,
>>>>> >> > WSConstants.
>>>>> >> > >> > >> PW_TEXT);// "PasswordDigest"
>>>>> >> > >> > >>
>>>>> >> > >> > >> properties.put(WSHandlerConstants.PW_CALLBACK_REF ,
>>>>> >> > >> > newPasswordCallbackHandler(
>>>>> >> > >> > >> this.username, password, "password"));
>>>>> >> > >> > >>
>>>>> >> > >> > >>
>>>>> >> > >> > >> client.getOutInterceptors().add(new
>>>>> >> > >> > WSS4JOutInterceptor(properties));
>>>>> >> > >> > >>
>>>>> >> > >> > >>
>>>>> >> > >> > >> On Fri, Jul 12, 2013 at 4:36 PM, Colm O hEigeartaigh <
>>>>> >> > >> > [email protected]
>>>>> >> > >> > >> > wrote:
>>>>> >> > >> > >>
>>>>> >> > >> > >>> ou could create a CXF interceptor that sets the username
>>>>> on the
>>>>> >> > fly,
>>>>> >> > >> > >>> before the WSS4JOutInterceptor is called.
>>>>> >> > >> > >>
>>>>> >> > >> > >>
>>>>> >> > >> > >>
>>>>> >> > >> > >>
>>>>> >> > >> > >
>>>>> >> > >> > >
>>>>> >> > >> > > --
>>>>> >> > >> > > Colm O hEigeartaigh
>>>>> >> > >> > >
>>>>> >> > >> > > Talend Community Coder
>>>>> >> > >> > > http://coders.talend.com
>>>>> >> > >> > >
>>>>> >> > >> >
>>>>> >> > >>
>>>>> >> > >>
>>>>> >> > >>
>>>>> >> > >> --
>>>>> >> > >> Colm O hEigeartaigh
>>>>> >> > >>
>>>>> >> > >> Talend Community Coder
>>>>> >> > >> http://coders.talend.com
>>>>> >> > >>
>>>>> >> > >
>>>>> >> > >
>>>>> >> >
>>>>> >>
>>>>> >>
>>>>> >>
>>>>> >> --
>>>>> >> Colm O hEigeartaigh
>>>>> >>
>>>>> >> Talend Community Coder
>>>>> >> http://coders.talend.com
>>>>> >>
>>>>> >
>>>>> >
>>>>>
>>>>>
>>>>> --
>>>>> Colm O hEigeartaigh
>>>>>
>>>>> Talend Community Coder
>>>>> http://coders.talend.com
>>>>>
>>>>
>>>>
>>>
>>
>
>
> --
> Colm O hEigeartaigh
>
> Talend Community Coder
> http://coders.talend.com
>