Milind - I am yet to try the option suggested by Oleg. However, got it
working with the code given in the link -
http://www.muneebahmad.com/index.php/archives/127

Regards,
Srivatsan


mkjee wrote:
> 
> 
> Hi Srivatsan,
> 
> I have a similar issue where URL works fine via browser but fails from
> JAVA client when web server is IIS with NTLM authentication. Did you find
> any solution for this problem?
> 
> Thanks in advance,
> Milind
> 
> 
> 
> 
> Srivatsan wrote:
>> 
>> 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-tp31417743p32855631.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