Skip to content

Commit ad3e933

Browse files
author
Pushpender Saini
authored
Merge pull request #205 from vishwasvaidya-cloudsufi/fix_Oauth2_Proxy
[PLUGIN-1956] Added a fix for OAuth2 Proxy Routing
2 parents 284b169 + af8423d commit ad3e933

1 file changed

Lines changed: 23 additions & 5 deletions

File tree

src/main/java/io/cdap/plugin/http/common/http/OAuthUtil.java

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,17 @@
2424
import io.cdap.plugin.http.common.OAuth2GrantType;
2525
import io.cdap.plugin.http.common.pagination.page.JSONUtil;
2626
import io.cdap.plugin.http.source.common.BaseHttpSourceConfig;
27+
import org.apache.http.HttpHost;
28+
import org.apache.http.auth.AuthScope;
29+
import org.apache.http.auth.UsernamePasswordCredentials;
30+
import org.apache.http.client.CredentialsProvider;
2731
import org.apache.http.client.entity.UrlEncodedFormEntity;
2832
import org.apache.http.client.methods.CloseableHttpResponse;
2933
import org.apache.http.client.methods.HttpPost;
3034
import org.apache.http.client.utils.URIBuilder;
35+
import org.apache.http.impl.client.BasicCredentialsProvider;
3136
import org.apache.http.impl.client.CloseableHttpClient;
37+
import org.apache.http.impl.client.HttpClientBuilder;
3238
import org.apache.http.impl.client.HttpClients;
3339
import org.apache.http.message.BasicHeader;
3440
import org.apache.http.message.BasicNameValuePair;
@@ -83,14 +89,26 @@ public static AccessToken getAccessToken(BaseHttpConfig config) throws IOExcepti
8389
// get accessToken from service account
8490
return OAuthUtil.getAccessTokenByServiceAccount(config);
8591
case OAUTH2:
92+
HttpClientBuilder httpClientBuilder = HttpClients.custom();
93+
8694
if (config instanceof BaseHttpSourceConfig) {
87-
try (CloseableHttpClient client = HttpClients.custom()
88-
.setSSLSocketFactory(new SSLConnectionSocketFactoryCreator((BaseHttpSourceConfig) config).create())
89-
.build()) {
90-
return getAccessToken(client, config);
95+
httpClientBuilder.setSSLSocketFactory(
96+
new SSLConnectionSocketFactoryCreator((BaseHttpSourceConfig) config).create()
97+
);
98+
}
99+
// Apply Proxy settings if they exist
100+
if (!Strings.isNullOrEmpty(config.getProxyUrl())) {
101+
HttpHost proxyHost = HttpHost.create(config.getProxyUrl());
102+
103+
if (!Strings.isNullOrEmpty(config.getProxyUsername()) && !Strings.isNullOrEmpty(config.getProxyPassword())) {
104+
CredentialsProvider credsProvider = new BasicCredentialsProvider();
105+
credsProvider.setCredentials(new AuthScope(proxyHost),
106+
new UsernamePasswordCredentials(config.getProxyUsername(), config.getProxyPassword()));
107+
httpClientBuilder.setDefaultCredentialsProvider(credsProvider);
91108
}
109+
httpClientBuilder.setProxy(proxyHost);
92110
}
93-
try (CloseableHttpClient client = HttpClients.createDefault()) {
111+
try (CloseableHttpClient client = httpClientBuilder.build()) {
94112
return getAccessToken(client, config);
95113
}
96114
}

0 commit comments

Comments
 (0)