[ 
https://issues.apache.org/jira/browse/HTTPCLIENT-1412?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mike Youngstrom updated HTTPCLIENT-1412:
----------------------------------------

    Description: 
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:java}
        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 

  was:
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 


> 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:java}
>       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