I think I did what you said and I made some progress, it loads the bean fine, 
but now cxf blows up with little information about why. 

My updated cxf configuration and the stacktrace are:

  <jaxws:client id="gpClient" 
address="http://myServer/DynamicsGPWebServices/DynamicsGPService.asmx";  
                
serviceClass="com.microsoft.schemas.dynamics.gp._2006._01.DynamicsX0020GPSoap" 
/>

  <http-conf:conduit name="*.http-conduit">
    <http-conf:authorization>
      <cxf-sec:UserName>myUsername</cxf-sec:UserName>
      <cxf-sec:Password>myPassword</cxf-sec:Password>
    </http-conf:authorization>
    <http-conf:client AllowChunking="false" ConnectionTimeout="60000"/>
  </http-conf:conduit>

Loading client proxy from context.
Loaded client proxy from context.
Calling ws method getVendorList().
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: The 
application encountered an unhandled system exception.  Contact your system 
administrator for details.
        at 
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:146)
        at $Proxy61.getVendorList(Unknown Source)
        at wstest.Test.main(Test.java:57)
Caused by: org.apache.cxf.binding.soap.SoapFault: The application encountered 
an unhandled system exception.  Contact your system administrator for details.
        at 
org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:75)
        at 
org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:46)
        at 
org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:35)
        at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
        at 
org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:99)
        at 
org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69)
        at 
org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34)
        at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
        at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:672)
        at 
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2254)
        at 
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2134)
        at 
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1988)
        at 
org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
        at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:639)
        at 
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
        at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:484)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:310)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:262)
        at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
        at 
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
        ... 2 more



-----Original Message-----
From: Daniel Kulp [mailto:dk...@apache.org] 
Sent: Thursday, April 08, 2010 9:01 PM
To: users@cxf.apache.org
Cc: Bruno Melloni; Nate Woody
Subject: Re: Service authentication credentials

On Thursday 08 April 2010 6:04:35 pm Bruno Melloni wrote:
> As you suggested, I am now using Java 6 and CXF 2.2.7.  It sounds like
> doing NTLM authentication should be trivial.  But I can't seem to find the
> right documentation for doing this in Spring, or even something that
> explains what goes which tag.
> 
> The following snippet is probably close to what I need, but I know it is
> still wrong.  I highlighted the parts that are obviously wrong.  I suspect
> that there are more.  Can you help me make it right?
> 
> 
>   <http-conf:conduit name="*.http-conduit">
>     <http-conf:authorization>
>       <Authorization>NTLM?</Authorization>
>       <AuthorizationType>NTLM?</AuthorizationType>

I think just don't specify them and let the JVM negotiate them.   

>       <UserName>myUsername</UserName>
>       <Password>myPassword</Password>
>     </http-conf:authorization>
>     <http-conf:client AllowChunking="false" ConnectionTimeout="60000"/>
>   </http-conf:conduit>

One thing to check is the namespace on the UserName and password elements.   
They should be in the security config namespace of:
http://cxf.apache.org/configuration/security
Unqualified elements won't work here.

Dan


> 
> 
> Thanks,
> 
> 
> 
> Bruno
> 
> 
> 
> -----Original Message-----
> From: Daniel Kulp [mailto:dk...@apache.org]
> Sent: Tuesday, March 16, 2010 10:43 PM
> To: users@cxf.apache.org
> Cc: Bruno Melloni; Nate Woody
> Subject: Re: Service authentication credentials
> 
> 
> 
> 
> 
> There is a small section on NTLM stuff at the bottom of:
> 
> http://cxf.apache.org/docs/client-http-transport-including-ssl-support.html
> 
> 
> 
> The main suggestion is to use Java6 and CXF 2.2.6 (or preferrably 2.2.7
> when I
> 
> build that in the next couple days which fixes a potential bug in this
> area).
> 
> With NTLM built into the JDK, it becomes much easier.  Just set the
> username
> 
> and password like normal basic auth and it pretty much will just work.
> 
> 
> 
> Dan
> 
> On Monday 15 March 2010 9:42:54 am Bruno Melloni wrote:
> > Ron, I've had no problems writing clients for 'normal' web services
> > written
> > 
> > in .NET.
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > Nate, yes, it is Great Plains, written by Microsoft.  It seems to not be
> > 
> > WS-S, but rather NTLM authentication in the headers (captured and
> > included
> > 
> > below).  I found the following article discussing HTTP client stacks that
> > 
> > can deal with NTLM authentication:
> > 
> > http://oaklandsoftware.com/papers/ntlm.html.  I also found the following
> > 
> > the following thread from 2008 on how somebody managed to make it work
> > 
> > with CXF in a programmatic way:
> > 
> > http://old.nabble.com/NTLM-Support--td16447079.html.  It mentions a link
> > 
> > to the CXF wiki, but it has since gone dead.  In case it is relevant, I
> > am
> > 
> > using CXF 2.2.2.
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > The questions that remain are:
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > -    Has CXF evolved since 2008 so that there is a cleaner way to use
> > NTLM
> > 
> > authentication?
> > 
> > 
> > 
> > -    How to translate the programmatic solution to something that can be
> > 
> > put in the Spring context file, perhaps as properties under the
> > 
> > <jaxws:client> tag?
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > If the answer to my questions is obvious I apologize for my ignorance.  I
> > 
> > am quite comfortable with the Spring-based approach to CXF but I am still
> > 
> > not very familiar with doing CXF without it.
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > Thanks.
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > -----
> > 
> > 
> > 
> > HEADERS:
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > POST http://ddusek1108:88/DynamicsGPWebServices/DynamicsGPService.asmx
> > 
> > HTTP/1.1
> > 
> > 
> > 
> > User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client
> > 
> > Protocol 2.0.50727.832)
> > 
> > 
> > 
> > VsDebuggerCausalityData:
> > 
> > uIDPo5dDV8l0LwpLmWT/FsojNsYAAAAAHmXIxE8tmEaZBSfNmWFGWEGujufiJq5JoaaQyRTzT
> > 2
> > 
> > gACAAA
> > 
> > 
> > 
> > Content-Type: text/xml; charset=utf-8
> > 
> > 
> > 
> > SOAPAction:
> > 
> > "http://schemas.microsoft.com/dynamics/gp/2006/01/GetCustomerList";
> > 
> > 
> > 
> > Authorization: NTLM
> > 
> > TlRMTVNTUAADAAAAGAAYAHwAAAAYABgAlAAAABgAGABIAAAACAAIAGAAAAAUABQAaAAAABAAE
> > A
> > 
> > CsAAAANYKI4gUCzg4AAAAPbgBvAHIAdABoAGEAbQBlAHIAaQBjAGEAcAByAG8AdABEAEQAVQB
> > TA
> > 
> > EUASwAxADEAMAA4AAKY0Sa9Kp9OAAAAAAAAAAAAAAAAAAAAAKvDCPBVwuwaRtfaI/6mTH6Pms
> > +c
> > 
> > gk2JNgmzIC1jRA2cWXofHirtcb0=
> > 
> > 
> > 
> > Host: ddusek1108:88
> > 
> > 
> > 
> > Content-Length: 626
> > 
> > 
> > 
> > Expect: 100-continue
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > <?xml version="1.0" encoding="utf-8"?><soap:Envelope
> > 
> > xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";
> > 
> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> > 
> > xmlns:xsd="http://www.w3.org/2001/XMLSchema";><soap:Body><GetCustomerList
> > 
> > xmlns="http://schemas.microsoft.com/dynamics/gp/2006/01";><criteria><Name>
> > <
> > 
> > Like>%</Like></Name><Scope>Return All</Scope></criteria><Context
> > 
> > xmlns="http://schemas.microsoft.com/dynamics/2006/01";><OrganizationKey
> > 
> > xsi:type="CompanyKey"><Id>-1</Id></OrganizationKey><CultureName>en-US</Cu
> > l
> > 
> > tureName><CurrencyType>Transactional</CurrencyType></Context></GetCustome
> > rL
> > 
> > ist></soap:Body></soap:Envelope>
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > -----
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > -----Original Message-----
> > 
> > From: Nate Woody [mailto:na...@cac.cornell.edu]
> > 
> > Sent: Thursday, March 11, 2010 8:40 AM
> > 
> > To: users@cxf.apache.org
> > 
> > Subject: RE: Service authentication credentials
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > I've been forced to write quite a few CXF clients to Microsoft services,
> > 
> > 
> > 
> > I think the mailing list is littered with my questions about that.  Is
> > 
> > 
> > 
> > this a service someone developed using Microsoft tools, or a service
> > 
> > 
> > 
> > produced by Microsoft?  That's a Great Plains reference? I've often had
> > 
> > 
> > 
> > trouble with figuring the security mechanism from a MS wsdl, so I tend
> > 
> > 
> > 
> > to go pragmatic and start here:
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 1) What does the service reply with when you call it from CXF?  If it's
> > 
> > 
> > 
> > something as simple as WS-S, you ought to get a complaint about missing
> > 
> > 
> > 
> > security headers.
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 2) It sounds like you have a functional .NET implementation.  Log the
> > 
> > 
> > 
> > packets from that implementation and take a look at what's going in.
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > Best,
> > 
> > 
> > 
> > Nate
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > -----Original Message-----
> > 
> > 
> > 
> > From: Bruno Melloni [mailto:bruno.mell...@chickasaw.net]
> > 
> > 
> > 
> > Sent: Thursday, March 11, 2010 9:20 AM
> > 
> > 
> > 
> > To: 'users@cxf.apache.org'
> > 
> > 
> > 
> > Subject: Service authentication credentials
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > I am trying to access a Microsoft-developed service that requires
> > 
> > 
> > 
> > authentication.  Being Microsoft, they do not document anything at the
> > 
> > 
> > 
> > web service level since they want you to use Visual Studio which creates
> > 
> > 
> > 
> > a .NET proxy that is capable of using NTLM to supply the
> > 
> > 
> > 
> > username/password to the underlying web service.  I *think* that they
> > 
> > 
> > 
> > are following web services standards for the underlying web service.
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > Of course, I am trying to use a CXF client to access the underlying web
> > 
> > 
> > 
> > service from Java.  I used wsdl2java to generate the java classes, but I
> > 
> > 
> > 
> > see no credentials-related information (which you do see in the .NET
> > 
> > 
> > 
> > proxy).  That makes me suspect that they must be in the stored in the
> > 
> > 
> > 
> > SOAP headers and that in CXF we access them in a different way.
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > I could use any clues on how to:
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > a) Figure out how authentication is being done for this web service.
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > b) Figure out how to provide the credentials to the web service when
> > 
> > 
> > 
> > called.  I am using the Spring approach to get the CXF client proxy and
> > 
> > my current configuration looks like:
> >   <jaxws:client id="gpClient"
> > 
> > address="http://myServer.myDomain/DynamicsGPWebServices/DynamicsGPServic
> > 
> > 
> > 
> > e.asmx"
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > serviceClass="com.microsoft.schemas.dynamics.gp._2006._01.DynamicsX0020G
> > 
> > 
> > 
> > PSoap" />
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > Needless to say, my experience with CXF is not too deep (created and
> > 
> > 
> > 
> > called a few services via the Spring method - the simplest), and my
> > 
> > 
> > 
> > knowledge of web services authentication is zero.  Unfortunately CXF's
> > 
> > 
> > 
> > documentation isn't very helpful for someone at my stage of learning
> > 
> > 
> > 
> > CXF.  I'll appreciate any help I can get.
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > I tried to attach a copy of the WSDL for the service that I'm trying to
> > 
> > 
> > 
> > access, but it exceeds the size limits for this mailing list.
> 
> --
> 
> Daniel Kulp
> 
> dk...@apache.org
> 
> http://dankulp.com/blog

-- 
Daniel Kulp
dk...@apache.org
http://dankulp.com/blog

Reply via email to