You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2018/12/16 17:16:54 UTC
[httpcomponents-client] 02/02: Better handling of http(s).proxyUser
and http(s).proxyPassword
This is an automated email from the ASF dual-hosted git repository.
olegk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/httpcomponents-client.git
commit eac6c062b586196d32b7770d7052148acaf3c276
Author: Jens Borgland <jb...@tibco.com>
AuthorDate: Wed Dec 12 15:58:39 2018 +0100
Better handling of http(s).proxyUser and http(s).proxyPassword
---
.../auth/SystemDefaultCredentialsProvider.java | 51 +++++++++++++++-------
1 file changed, 35 insertions(+), 16 deletions(-)
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/auth/SystemDefaultCredentialsProvider.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/auth/SystemDefaultCredentialsProvider.java
index 90e641a..a4c0b0e 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/auth/SystemDefaultCredentialsProvider.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/auth/SystemDefaultCredentialsProvider.java
@@ -135,22 +135,13 @@ public class SystemDefaultCredentialsProvider implements CredentialsStore {
protocol, authscope, Authenticator.RequestorType.PROXY, clientContext);
}
if (systemcreds == null) {
- final String proxyHost = System.getProperty(protocol + ".proxyHost");
- if (proxyHost != null) {
- final String proxyPort = System.getProperty(protocol + ".proxyPort");
- if (proxyPort != null) {
- try {
- final AuthScope systemScope = new AuthScope(proxyHost, Integer.parseInt(proxyPort));
- if (authscope.match(systemScope) >= 0) {
- final String proxyUser = System.getProperty(protocol + ".proxyUser");
- if (proxyUser != null) {
- final String proxyPassword = System.getProperty(protocol + ".proxyPassword");
- systemcreds = new PasswordAuthentication(proxyUser, proxyPassword != null ? proxyPassword.toCharArray() : new char[] {});
- }
- }
- } catch (final NumberFormatException ex) {
- }
- }
+ // Look for values given using http.proxyUser/http.proxyPassword or
+ // https.proxyUser/https.proxyPassword. We cannot simply use the protocol from
+ // the origin since a proxy retrieved from https.proxyHost/https.proxyPort will
+ // still use http as protocol
+ systemcreds = getProxyCredentials("http", authscope);
+ if (systemcreds == null) {
+ systemcreds = getProxyCredentials("https", authscope);
}
}
if (systemcreds != null) {
@@ -169,6 +160,34 @@ public class SystemDefaultCredentialsProvider implements CredentialsStore {
return null;
}
+ private static PasswordAuthentication getProxyCredentials(final String protocol, final AuthScope authscope) {
+ final String proxyHost = System.getProperty(protocol + ".proxyHost");
+ if (proxyHost == null) {
+ return null;
+ }
+ final String proxyPort = System.getProperty(protocol + ".proxyPort");
+ if (proxyPort == null) {
+ return null;
+ }
+
+ try {
+ final AuthScope systemScope = new AuthScope(proxyHost, Integer.parseInt(proxyPort));
+ if (authscope.match(systemScope) >= 0) {
+ final String proxyUser = System.getProperty(protocol + ".proxyUser");
+ if (proxyUser == null) {
+ return null;
+ }
+ final String proxyPassword = System.getProperty(protocol + ".proxyPassword");
+
+ return new PasswordAuthentication(proxyUser,
+ proxyPassword != null ? proxyPassword.toCharArray() : new char[] {});
+ }
+ } catch (final NumberFormatException ex) {
+ }
+
+ return null;
+ }
+
@Override
public void clear() {
internal.clear();