Mike Youngstrom created HTTPCLIENT-1412:
-------------------------------------------

             Summary: SystemDefaultCredentialsProvider doesn't specify 
RequestorType.PROXY for proxy authentication requests
                 Key: HTTPCLIENT-1412
                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1412
             Project: HttpComponents HttpClient
          Issue Type: Bug
          Components: HttpClient
    Affects Versions: 4.3 Final
            Reporter: Mike Youngstrom
            Priority: Minor


I have a custom java.net.Authenticator that uses system properties to provide 
authentication for proxy requests.  When using SystemDefaultCredentialsProvider 
with useSystemProperties() my custom authenticator doesn't work because the 
getRequestorType() is set to SERVER and not PROXY as it should be for a proxy 
auth request.

Below is a simple test case that illustrates the problem if you have a proxy 
that requires basic auth that you can connect to.

{code}
        public static void main(String[] args) throws Exception {
                System.setProperty("http.proxyHost", "some.basic.auth.proxy");
                System.setProperty("http.proxyPort", "1080");
                System.setProperty("http.proxyUser", "someUser");
                System.setProperty("http.proxyPassword", "somePassword");
                Authenticator.setDefault(new Authenticator() {
                        protected PasswordAuthentication 
getPasswordAuthentication() {
                                //getRequestorType() == SERVER not PROXY
                                if (getRequestorType() == RequestorType.PROXY) {
                                        String prot = 
getRequestingProtocol().toLowerCase();
                                        String host = System.getProperty(prot + 
".proxyHost", "");
                                        String port = System.getProperty(prot + 
".proxyPort", "");
                                        String user = System.getProperty(prot + 
".proxyUser", "");
                                        String password = 
System.getProperty(prot + ".proxyPassword", "");

                                        if 
(getRequestingHost().equalsIgnoreCase(host)) {
                                                if (Integer.parseInt(port) == 
getRequestingPort()) {
                                                        // We're connecting to 
the proxy.  Go ahead and send credentials.
                                                        return new 
PasswordAuthentication(user,
                                                                        
password.toCharArray());
                                                }
                                        }
                                }
                                return null;
                        }
                });
                HttpClient client = 
HttpClients.custom().useSystemProperties().build();
                client.execute(new HttpHost("www.google.com"), new 
HttpGet("/")).getEntity().writeTo(System.out);
        }
{code}

I am then attempting to use the 



--
This message was sent by Atlassian JIRA
(v6.1#6144)

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

Reply via email to