hc-httpclient-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Oleg Kalnichevski <ol...@apache.org>
Subject Re: Issues accessing NTLM server using HTTPClient 4.1
Date Sun, 17 Apr 2011 16:14:42 GMT
On Sun, 2011-04-17 at 20:03 +0530, Dilshan Edirisuriya wrote:
> Hi ,
> 
> I have a web page that need to access with NTLM authentication on my local
> machine and i can see the expected behavior with Web browsers. But when I
> try to access same page using HTTPClient 4.1 I'm getting following
> exception.
> 
> 
> Apr 17, 2011 7:18:23 PM
> org.apache.http.client.protocol.RequestTargetAuthentication process
> SEVERE: Authentication error: Invalid name provided (Mechanism level: Could
> not load configuration file C:\Windows\krb5.ini (The system cannot find the
> file specified))
> Status :: HTTP/1.1 401 Unauthorized
> 
> 

Dilshan

HttpClient chooses SPNEGO/kerberos auth scheme over NTLM per default in
case the server supports both, as SPNEGO/kerberos is considered somewhat
more secure than NTLM. 

You can alter the order of preferred auth schemes by using
'http.auth.target-scheme-pref' or 'http.auth.proxy-scheme-pref'
parameters:

http://hc.apache.org/httpcomponents-client-ga/tutorial/html/authentication.html#d4e869

Just a general remark: when troubleshooting problems with HttpClient a
wire / context log of the HTTP session exhibiting the problem helps a
great deal.

Oleg


> This is my sample code and it exactly same as example given in here
> http://hc.apache.org/httpcomponents-client-ga/tutorial/html/authentication.html#ntlm
> 
>   DefaultHttpClient httpclient = new DefaultHttpClient();
> 
>   NTCredentials creds = new NTCredentials("user", "pwd", "machin-name",
> "machin-name");
>   httpclient.getCredentialsProvider().setCredentials(AuthScope.ANY, creds);
> 
>   Host target = new HttpHost("localhost", 9090, "http");
>   HttpContext localContext = new BasicHttpContext();
> 
> // Execute a cheap method first. This will trigger NTLM authentication
>    HttpGet httpget = new HttpGet("/hello1");
>    HttpResponse response = httpclient.execute(target, httpget,
> localContext);
>    HttpEntity entity = response.getEntity();
>    System.out.println(" Status :: "+ response.getStatusLine());
> 
> 
> Further analyzing  i found   there is no 'Authorization:" header in outgoing
> messages where this header is available with browser access. Please note
> that I used same name/password/Domain for browser access too.
> 
> Appreciate for any help to resolve this ?
> 
> Thank you ,
> 
> Dilshan



---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org


Mime
View raw message