[
https://issues.apache.org/jira/browse/HTTPCLIENT-1412?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13786629#comment-13786629
]
Mike Youngstrom edited comment on HTTPCLIENT-1412 at 10/4/13 9:11 PM:
----------------------------------------------------------------------
I will test when a snapshot is built. Are they here?
https://repository.apache.org/content/repositories/snapshots/org/apache/httpcomponents/httpclient
That said when looking at the code it appears to me that this will not fix the
problem. Not only will the getRequestorType() == RequestorType.PROXY condition
still fail, you may also be breaking anyone depending upon there being a SERVER
value for RequestorType (which granted is probably nobody). :)
It seems to me that this could be fixed properly by:
* Enhancing AuthScope to support a requestor type of "proxy" or "target/server".
* Enhance AuthenticationStrategyImpl and ProxyAuthenticationStrategy to create
an AuthScope with a "proxy" requestor.
* Everything should default to target/server since that is the current behavior.
It seems to me that a change like this could be done without breaking any
current APIs or behavior.
I'd be willing to put together a patch if you think the changes above seem
reasonable?
was (Author: youngm):
I will test when a snapshot is built. Are there here?
https://repository.apache.org/content/repositories/snapshots/org/apache/httpcomponents/httpclient
That said when looking at the code it appears to me that this will not fix the
problem. Not only will the getRequestorType() == RequestorType.PROXY condition
still fail, you may also be breaking anyone depending upon there being a SERVER
value for RequestorType (which granted is probably nobody). :)
It seems to me that this could be fixed properly by:
* Enhancing AuthScope to support a requestor type of "proxy" or "target/server".
* Enhance AuthenticationStrategyImpl and ProxyAuthenticationStrategy to create
an AuthScope with a "proxy" requestor.
* Everything should default to target/server since that is the current behavior.
It seems to me that a change like this could be done without breaking any
current APIs or behavior.
I'd be willing to put together a patch if you think the changes above seem
reasonable?
> 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]