Have a similar issue. With the code below - authentication is unsuccessful
when using the credentials of a local user. By local user, the domain name /
realm is the host itself. However, authentication is successful with the
same credentials when accessed from browser.

                DefaultHttpClient httpclient = new DefaultHttpClient();
                List<String> authpref = new ArrayList<String>(); 
                authpref.add(AuthPolicy.NTLM);
                httpclient.getParams().setParameter(AuthPNames.TARGET_AUTH_PREF,
authpref); 
                NTCredentials creds = new NTCredentials("uid", "pwd", "ip", 
"domain");
                
httpclient.getCredentialsProvider().setCredentials(AuthScope.ANY, creds);
                HttpHost target = new HttpHost(<IP>, 80, "http");
                // Make sure the same context is used to execute logically 
related
requests
                HttpContext localContext = new BasicHttpContext();
                // Execute a cheap method first. This will trigger NTLM 
authentication
                HttpGet httpget = new HttpGet(<URL>);
                HttpResponse response;
                try {
                        response = httpclient.execute(target, httpget, 
localContext);
                        System.out.println("Status Code:" +
response1.getStatusLine().getStatusCode());
                        BufferedReader isr = new BufferedReader (new
InputStreamReader(response.getEntity().getContent()));
                        while (isr.readLine() != null) {
                                System.out.println("Content is: ********" + 
isr.readLine());
                        }
                        HttpEntity entity = response1.getEntity();
                        EntityUtils.consume(entity);                    
                } catch (ClientProtocolException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }

Added the HTTP wire log.
http://old.nabble.com/file/p32819071/localuser-nabble.txt
localuser-nabble.txt 

Any pointers, please?

Thanks,
Srivatsan


olegk wrote:
> 
> 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: [email protected]
> For additional commands, e-mail: [email protected]
> 
> 
> 

-- 
View this message in context: 
http://old.nabble.com/Issues-accessing-NTLM-server-using-HTTPClient-4.1-tp31417743p32819071.html
Sent from the HttpClient-User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to