DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://issues.apache.org/bugzilla/show_bug.cgi?id=29439>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=29439 Credentials ignored if realm specified in preemptive authentication Summary: Credentials ignored if realm specified in preemptive authentication Product: Commons Version: 2.0 Final Platform: All OS/Version: Other Status: NEW Severity: Normal Priority: Other Component: HttpClient AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] When you specifiy credentials for a specific realm using preemptive authentication, the credentials are ignored during the first try (error 401 back). ... HttpClient client = new HttpClient(manager); client.getState().setCredentials("myRealm","myHost", new UsernamePasswordCredentials( "user","password")); client.getState().setAuthenticationPreemptive(true); ... "myRealm" will be ignored in HttpState's matchCredentials() private method because during preemptive authentication, it is called with a null realm: private static Credentials matchCredentials(HashMap map, String realm, String host) { HttpAuthRealm entry = new HttpAuthRealm(host, realm); // no possible match here, map only contains the version with the realm Credentials creds = (Credentials) map.get(entry); if (creds == null && host != null && realm != null) { entry = new HttpAuthRealm(host, null); creds = (Credentials) map.get(entry); if (creds == null) { entry = new HttpAuthRealm(null, realm); creds = (Credentials) map.get(entry); } } if (creds == null) { creds = (Credentials) map.get(DEFAULT_AUTH_REALM); } return creds; } This is quite logical since the realm comes from the server and you don't contact the server first during preemptive authentication. But, it should not be possible to set a realm when using preemptive mode, or at least it should not be silently ignored. The current workaround is to set the realm to null in setCredential(), no elegant but works. Regards, Philippe --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]