Hi to all


Excuse me as I am relatively new to low-level network plumbing so this may sound amateur to you.

I was having problems trying to make HttpClient 2rc2 to authenticate to my Microsoft proxy server.
Despite trying all combinatios of user/domain/host in the credentials I always got the same result, reply code 407.


Tracing through the sequence of actions and activating the debugger and examining the publicly available documentation about NTLM challenge/response I came to the conclusion that the problem was that HttpMethodDirector was wrongly closing the connection after the second stage of authentication. Thus, in the third stage the client sent what apparently a correct authentication header but was beign rejected by the proxy as it not belong to the session that was just establishing the connection.

The cause of the problem is that HttpMethodDirector expects not to see a response body until the authentication process is finished, that is, it understands that things should be ok the moment a response body is present. As I've found out by activating the debug log, the Microsoft proxy answers to the second stage of the authentication process with the response body that corresponds to the HTML page shown to the user when the authentication is not correct.

The solution that I've tried that has passed a basic test (that is, it retrieves correctly the pages) is to modify the method in HttpMethodBase#canHaveResponseBody. As I understand that method is provided to ignore response bodies for certain return codes. That is, around line 2126 it says

if ((status >= 100 && status <= 199) || (status == 204)
|| (status == 304) ) { // NOT MODIFIED
result = false;
}

If you instead say


if ((status >= 100 && status <= 199) || (status == 204) || (status == 304) || (status == 407)) { // NOT MODIFIED result = false; }

Things work, at least for me. I don't know how nor have the tools to generate a patch, and if I could I did not know where to send it. So if somebody out there is kind enough to test if this fixes things for every other case of proxy/authentication, it would be wise to incorporate the change into the final release. This Microsoft proxy feature has been something that I have wished to have for a very long time and not yet found in any other library.

Keep up the good work.

Alfonso



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to