cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "CXF User (JIRA)" <j...@apache.org>
Subject [jira] Commented: (CXF-3249) When accessing a service that requires auth CXF returns: RuntimeException: Can't find input stream in message
Date Fri, 21 Jan 2011 22:19:45 GMT

    [ 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.


Mime
View raw message