hc-httpclient-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Srivatsan <sathishsrivat...@gmail.com>
Subject Re: Issues accessing NTLM server using HTTPClient 4.1
Date Thu, 10 Nov 2011 14:40:59 GMT

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: httpclient-users-unsubscribe@hc.apache.org
> For additional commands, e-mail: httpclient-users-help@hc.apache.org
> 
> 
> 

-- 
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: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org


Mime
View raw message