JCifs and a Tomcat filter? :)
On Tue, Jun 28, 2005 at 11:30:44AM +0100, Martin Woodward wrote: > I'm pretty sure that that the Commons HTTPClient implementation (used > by CommonsHTTPSender) has an implementation of NTLM in 3.0-RC3. If I > take out my credentials from the call then I get the following error > when talking via the proxy > > No credentials available for NTLM <any realm>@mymachine:80 > > Which would suggest that it is the Commons HTTPClient code that > negotiating, not TCPMon. > > I am not creating the HTTP connection directly. I am using a > WSDL2Java generated stub which I have added a couple of lines to add > my credentials to the _call in the createCall method. I have then > used the client-config.wsdd to override the default transport > implementaion to the Commons one (which has NTLM support) > > Below if the contents of my client-config.msdd file... > > <?xml version="1.0" encoding="UTF-8"?> > <deployment name="defaultClientConfig" > xmlns="http://xml.apache.org/axis/wsdd/" > xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> > <globalConfiguration> > <parameter name="disablePrettyXML" value="true"/> > </globalConfiguration> > <transport name="http" > pivot="java:org.apache.axis.transport.http.CommonsHTTPSender"/> > <!-- transport name="http" > pivot="java:org.apache.axis.transport.http.HTTPSender"/ --> > <transport name="local" > pivot="java:org.apache.axis.transport.local.LocalSender"/> > <transport name="java" > pivot="java:org.apache.axis.transport.java.JavaSender"/> > </deployment> > > I think it is actually the > org.apache.axis.transport.http.CommonsHTTPSender class that creates > the URL connection - please let me know if I doing something daft or > have mis-understood your point. > > Cheers, > > Martin. > > > On 28/06/05, Evgeny Beskrovny <[EMAIL PROTECTED]> wrote: > > Hi, > > I think the reason it doesn't work for you is because in order to make it > > work you need to have a Sun implementation of HTTPUrlConnection on a > > client, while here as I understand you use HttpClient of Apache that might > > have no implementation of NTLM. When you connect to a proxy it internally > > uses Sun implementation of HTTPUrlConnection so it works. > > When you create a URL on your client you would better use it this way > > > > handler = new sun.net.www.protocol.http.Handler(); > > urlToConnect = new URL (null, urlPath.toString(),handler); > > URLConnection connection = urlToConnect.openConnection(); > > Try this and see if it works. > > Evgeny > > > > Martin Woodward > > <martin.woodward@ > > gmail.com> To > > [email protected] > > 06/27/2005 08:30 cc > > PM > > Subject > > NTLM Authentication (again) > > Please respond to > > [EMAIL PROTECTED] > > he.org > > > > > > Hi, > > > > I'm trying to talk to a web service that requires NTLM authentication > > for my sins. The good news is that it works, the bad news is that I > > have to proxy the request through a local instance of TCPmon to get it > > to work. Does this sound familiar to anyone, I could very possibly be > > me doing something dumb... > > > > I am using axis-1_2_1, commons-httpclient-3.0-rc3, commons-codec-1.3 > > on j2sdk1.4.2_08 running in Windows XP Pro SP2. > > > > As I say, everything works fine if I run up TCPMonitor on my machine > > and then include the following lines in my client... > > > > System.setProperty("http.proxyHost", "localhost"); > > System.setProperty("http.proxyPort", "8888"); > > > > I've allready edited my stub to add the username/password and added a > > client-config.wsdd to point to the CommonsHTTPSender. > > > > Below is the stack trace when I don't have the web service call proxied:- > > > > AxisFault > > faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException > > faultSubcode: > > faultString: java.net.SocketException: Connection reset > > faultActor: > > faultNode: > > faultDetail: > > > > {http://xml.apache.org/axis/}stackTrace:java.net.SocketException: > > Connection reset > > at java.net.SocketInputStream.read(SocketInputStream.java:168) > > at > > java.io.BufferedInputStream.fill(BufferedInputStream.java:183) > > at > > java.io.BufferedInputStream.read(BufferedInputStream.java:201) > > at > > org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:77) > > at > > org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:105) > > at > > org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1110) > > > > at > > org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.readLine(MultiThreadedHttpConnectionManager.java:1391) > > > > at > > org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1832) > > > > at > > org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1592) > > > > at > > org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:995) > > > > at > > org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:393) > > > > at > > org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:168) > > > > at > > org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396) > > at > > org.apache.axis.transport.http.CommonsHTTPSender.invoke(CommonsHTTPSender.java:188) > > > > at > > org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) > > > > at > > org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) > > at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) > > at > > org.apache.axis.client.AxisClient.invoke(AxisClient.java:165) > > at org.apache.axis.client.Call.invokeEngine(Call.java:2765) > > at org.apache.axis.client.Call.invoke(Call.java:2748) > > at org.apache.axis.client.Call.invoke(Call.java:2424) > > at org.apache.axis.client.Call.invoke(Call.java:2347) > > at org.apache.axis.client.Call.invoke(Call.java:1804) > > at SNIP.whoAmI(SNIP.java:430) > > at com.mrwpro.vsts.play.TestClient.main(TestClient.java:30) > > > > {http://xml.apache.org/axis/}hostname:tst-028-04452 > > > > java.net.SocketException: Connection reset > > at org.apache.axis.AxisFault.makeFault(AxisFault.java:101) > > at > > org.apache.axis.transport.http.CommonsHTTPSender.invoke(CommonsHTTPSender.java:277) > > > > at > > org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) > > > > at > > org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) > > at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) > > at > > org.apache.axis.client.AxisClient.invoke(AxisClient.java:165) > > at org.apache.axis.client.Call.invokeEngine(Call.java:2765) > > at org.apache.axis.client.Call.invoke(Call.java:2748) > > at org.apache.axis.client.Call.invoke(Call.java:2424) > > at org.apache.axis.client.Call.invoke(Call.java:2347) > > at org.apache.axis.client.Call.invoke(Call.java:1804) > > at SNIP.whoAmI(SNIP.java:430) > > at com.mrwpro.vsts.play.TestClient.main(TestClient.java:30) > > Caused by: java.net.SocketException: Connection reset > > at java.net.SocketInputStream.read(SocketInputStream.java:168) > > at > > java.io.BufferedInputStream.fill(BufferedInputStream.java:183) > > at > > java.io.BufferedInputStream.read(BufferedInputStream.java:201) > > at > > org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:77) > > at > > org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:105) > > at > > org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1110) > > > > at > > org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.readLine(MultiThreadedHttpConnectionManager.java:1391) > > > > at > > org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1832) > > > > at > > org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1592) > > > > at > > org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:995) > > > > at > > org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:393) > > > > at > > org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:168) > > > > at > > org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396) > > at > > org.apache.axis.transport.http.CommonsHTTPSender.invoke(CommonsHTTPSender.java:188) > > > > ... 11 more > > > > When I do have it proxied, you see the 401 error coming back from the > > server, followed by a 100 with the final 200 response containing the > > answer. When I run pointing to the proxy I also get the following > > console output... > > > > - Unable to find required classes (javax.activation.DataHandler and > > javax.mail.internet.MimeMultipart). Attachment support is disabled. > > - ntlm authentication scheme selected > > - Discarding unexpected response: HTTP/1.1 100 Continue > > > > Any ideas? > > > > Thanks, > > > > Martin. > > > > -- > > > > http://www.woodwardweb.com > > > > > > > -- > > http://www.woodwardweb.com
