[
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]