use of com.auth0.client.ProxyOptions in project auth0-java by auth0.
the class ManagementAPI method buildNetworkingClient.
/**
* Given a set of options, it creates a new instance of the {@link OkHttpClient}
* configuring them according to their availability.
*
* @param options the options to set to the client.
* @return a new networking client instance configured as requested.
*/
private OkHttpClient buildNetworkingClient(HttpOptions options) {
OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();
final ProxyOptions proxyOptions = options.getProxyOptions();
if (proxyOptions != null) {
// Set proxy
clientBuilder.proxy(proxyOptions.getProxy());
// Set authentication, if present
final String proxyAuth = proxyOptions.getBasicAuthentication();
if (proxyAuth != null) {
clientBuilder.proxyAuthenticator(new Authenticator() {
private static final String PROXY_AUTHORIZATION_HEADER = "Proxy-Authorization";
@Override
public okhttp3.Request authenticate(Route route, Response response) throws IOException {
if (response.request().header(PROXY_AUTHORIZATION_HEADER) != null) {
return null;
}
return response.request().newBuilder().header(PROXY_AUTHORIZATION_HEADER, proxyAuth).build();
}
});
}
}
configureLogging(options.getLoggingOptions());
Dispatcher dispatcher = new Dispatcher();
dispatcher.setMaxRequestsPerHost(options.getMaxRequestsPerHost());
dispatcher.setMaxRequests(options.getMaxRequests());
return clientBuilder.addInterceptor(logging).addInterceptor(telemetry).addInterceptor(new RateLimitInterceptor(options.getManagementAPIMaxRetries())).connectTimeout(options.getConnectTimeout(), TimeUnit.SECONDS).readTimeout(options.getReadTimeout(), TimeUnit.SECONDS).dispatcher(dispatcher).build();
}
use of com.auth0.client.ProxyOptions in project auth0-java by auth0.
the class ManagementAPITest method shouldUseProxy.
@Test
public void shouldUseProxy() throws Exception {
Proxy proxy = Mockito.mock(Proxy.class);
ProxyOptions proxyOptions = new ProxyOptions(proxy);
HttpOptions httpOptions = new HttpOptions();
httpOptions.setProxyOptions(proxyOptions);
ManagementAPI api = new ManagementAPI(DOMAIN, API_TOKEN, httpOptions);
assertThat(api.getClient().proxy(), is(proxy));
Authenticator authenticator = api.getClient().proxyAuthenticator();
assertThat(authenticator, is(notNullValue()));
Route route = Mockito.mock(Route.class);
okhttp3.Request nonAuthenticatedRequest = new okhttp3.Request.Builder().url("https://test.com/app").addHeader("some-header", "some-value").build();
okhttp3.Response nonAuthenticatedResponse = new okhttp3.Response.Builder().protocol(Protocol.HTTP_2).code(200).message("OK").request(nonAuthenticatedRequest).build();
okhttp3.Request processedRequest = authenticator.authenticate(route, nonAuthenticatedResponse);
assertThat(processedRequest, is(nullValue()));
}
use of com.auth0.client.ProxyOptions in project auth0-java by auth0.
the class ManagementAPITest method proxyShouldNotProcessAlreadyAuthenticatedRequest.
@Test
public void proxyShouldNotProcessAlreadyAuthenticatedRequest() throws Exception {
Proxy proxy = Mockito.mock(Proxy.class);
ProxyOptions proxyOptions = new ProxyOptions(proxy);
proxyOptions.setBasicAuthentication("johndoe", "psswd".toCharArray());
assertThat(proxyOptions.getBasicAuthentication(), is("Basic am9obmRvZTpwc3N3ZA=="));
HttpOptions httpOptions = new HttpOptions();
httpOptions.setProxyOptions(proxyOptions);
ManagementAPI api = new ManagementAPI(DOMAIN, API_TOKEN, httpOptions);
assertThat(api.getClient().proxy(), is(proxy));
Authenticator authenticator = api.getClient().proxyAuthenticator();
assertThat(authenticator, is(notNullValue()));
Route route = Mockito.mock(Route.class);
okhttp3.Request alreadyAuthenticatedRequest = new okhttp3.Request.Builder().url("https://test.com/app").addHeader("some-header", "some-value").header("Proxy-Authorization", "pre-existing-value").build();
okhttp3.Response alreadyAuthenticatedResponse = new okhttp3.Response.Builder().protocol(Protocol.HTTP_2).code(200).message("OK").request(alreadyAuthenticatedRequest).build();
okhttp3.Request processedRequest = authenticator.authenticate(route, alreadyAuthenticatedResponse);
assertThat(processedRequest, is(nullValue()));
}
use of com.auth0.client.ProxyOptions in project auth0-java by auth0.
the class ManagementAPITest method shouldUseProxyWithAuthentication.
@Test
public void shouldUseProxyWithAuthentication() throws Exception {
Proxy proxy = Mockito.mock(Proxy.class);
ProxyOptions proxyOptions = new ProxyOptions(proxy);
proxyOptions.setBasicAuthentication("johndoe", "psswd".toCharArray());
assertThat(proxyOptions.getBasicAuthentication(), is("Basic am9obmRvZTpwc3N3ZA=="));
HttpOptions httpOptions = new HttpOptions();
httpOptions.setProxyOptions(proxyOptions);
ManagementAPI api = new ManagementAPI(DOMAIN, API_TOKEN, httpOptions);
assertThat(api.getClient().proxy(), is(proxy));
Authenticator authenticator = api.getClient().proxyAuthenticator();
assertThat(authenticator, is(notNullValue()));
Route route = Mockito.mock(Route.class);
okhttp3.Request nonAuthenticatedRequest = new okhttp3.Request.Builder().url("https://test.com/app").addHeader("some-header", "some-value").build();
okhttp3.Response nonAuthenticatedResponse = new okhttp3.Response.Builder().protocol(Protocol.HTTP_2).code(200).message("OK").request(nonAuthenticatedRequest).build();
okhttp3.Request processedRequest = authenticator.authenticate(route, nonAuthenticatedResponse);
assertThat(processedRequest, is(notNullValue()));
assertThat(processedRequest.url(), is(HttpUrl.parse("https://test.com/app")));
assertThat(processedRequest.header("Proxy-Authorization"), is(proxyOptions.getBasicAuthentication()));
assertThat(processedRequest.header("some-header"), is("some-value"));
}
use of com.auth0.client.ProxyOptions in project auth0-java by auth0.
the class AuthAPI method buildNetworkingClient.
/**
* Given a set of options, it creates a new instance of the {@link OkHttpClient}
* configuring them according to their availability.
*
* @param options the options to set to the client.
* @return a new networking client instance configured as requested.
*/
private OkHttpClient buildNetworkingClient(HttpOptions options) {
OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();
final ProxyOptions proxyOptions = options.getProxyOptions();
if (proxyOptions != null) {
// Set proxy
clientBuilder.proxy(proxyOptions.getProxy());
// Set authentication, if present
final String proxyAuth = proxyOptions.getBasicAuthentication();
if (proxyAuth != null) {
clientBuilder.proxyAuthenticator(new Authenticator() {
private static final String PROXY_AUTHORIZATION_HEADER = "Proxy-Authorization";
@Override
public okhttp3.Request authenticate(Route route, Response response) throws IOException {
if (response.request().header(PROXY_AUTHORIZATION_HEADER) != null) {
return null;
}
return response.request().newBuilder().header(PROXY_AUTHORIZATION_HEADER, proxyAuth).build();
}
});
}
}
configureLogging(options.getLoggingOptions());
Dispatcher dispatcher = new Dispatcher();
dispatcher.setMaxRequests(options.getMaxRequests());
dispatcher.setMaxRequestsPerHost(options.getMaxRequestsPerHost());
return clientBuilder.addInterceptor(logging).addInterceptor(telemetry).connectTimeout(options.getConnectTimeout(), TimeUnit.SECONDS).readTimeout(options.getReadTimeout(), TimeUnit.SECONDS).dispatcher(dispatcher).build();
}
Aggregations