[
https://issues.apache.org/jira/browse/HTTPCLIENT-1412?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Oleg Kalnichevski resolved HTTPCLIENT-1412.
-------------------------------------------
Resolution: Fixed
I made SystemDefaultCredentialsProvider request credentials for
RequestorType.SERVER and RequestorType.PROXY sequentially.
Oleg
> 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
> Fix For: 4.3.2
>
>
> 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}
--
This message was sent by Atlassian JIRA
(v6.1#6144)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]