[ 
https://issues.apache.org/jira/browse/CXF-3249?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12984968#action_12984968
 ] 

CXF User commented on CXF-3249:
-------------------------------

Hi Chrisitian,
I used the "Authenticator" with CXF and found it works okay.
Actually in my case the webservice was deployed on Microsoft IIS server and I 
"have to" use  "Authenticator"  -  "BindingProvider" did not work for me.

It turns out that since the web service was deployed on Microsoft IIS which 
needs NTLM authentication, and if we use Apache CXF library for ws-client, we 
"must" need to setup the CXF client to turn off chunking. The reason is that 
the NTLM authentication requires a 3 part handshake which breaks the  
streaming. This was beyond my knowledge as I have very very limited knowledge 
about Microsoft technologies.
Surprisingly JAX-WS RI implementation or Metro-WS stack does not demand this 
kind requirement. Thus in my opinion it is indeed an overhead for CXF users. 


The other error. i.e. "Unexpected close tag </HEAD>; expected </META>", was 
occurring because the server was sending an error page which was lacking an end 
</META> tag. 
The CXF library is strict in XML parsing and instead of showing error as "401 
Authentication Required", it just states about the parsing error. 
AGAIN, the JAX-WS RI implementation or Metro-WS stack does properly show the 
correct error message (i.e. 401 authentication required.)  even if the returned 
html page misses an end </META> tag.

 Though I have found the solution but I would love to know more about NTLM 
authentication and how the turning the chunking off resolves the authentication 
failure issues with CXF stack. So if anybody can throw some light in it, will 
be very happy.

Cheers,
- Kuntal

> When accessing a service that requires auth CXF returns: RuntimeException: 
> Can't find input stream in message
> -------------------------------------------------------------------------------------------------------------
>
>                 Key: CXF-3249
>                 URL: https://issues.apache.org/jira/browse/CXF-3249
>             Project: CXF
>          Issue Type: Bug
>          Components: Transports
>    Affects Versions: 2.3.1
>            Reporter: Christian Schneider
>            Assignee: Christian Schneider
>             Fix For: 2.3.2
>
>
> I try to access a service that requires basic auth. My request does not 
> include credentials. I would expect CXF to return something like
> 401 Authentication required. But it returns the following exception:
> WARNUNG: Interceptor for 
> {http://customerservice.example.com/}CustomerServiceService#{http://customerservice.example.com/}getCustomersByName
>  has thrown exception, unwinding now
> java.lang.RuntimeException: Can't find input stream in message
>       at 
> org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:116)
>       at 
> org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:60)
>       at 
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
>       at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:755)
>       at 
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2330)
>       at 
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2192)
>       at 
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:2036)
>       at 
> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
>       at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:696)
>       at 
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
>       at 
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
>       at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:516)
>       at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)
>       at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265)
>       at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
>       at 
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
>       at $Proxy30.getCustomersByName(Unknown Source)
>       at client.JaxWsClient.main(JaxWsClient.java:24)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to