Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se muestra cómo configurar servidores proxy en el SDK de Azure para Java para que pueda enrutar las solicitudes de cliente a través de los límites de red y seguridad necesarios.
Configuración del proxy HTTP
Las bibliotecas cliente de Azure para Java ofrecen varias formas de configurar un proxy para un HttpClient.
Cada método de suministro de un proxy tiene sus propias ventajas y desventajas y proporciona diferentes niveles de encapsulación. Cuando configuras un proxy para un HttpClient, este utiliza el proxy durante el resto de su vida útil. Al asociar el proxy a un HttpClient individual, una aplicación puede usar varias instancias de HttpClient, cada una de las cuales puede usar un proxy diferente para satisfacer los requisitos de uso de proxy de la aplicación.
Las opciones de configuración del proxy son:
Uso de un proxy de entorno
De forma predeterminada, los generadores de cliente HTTP inspeccionan el entorno para las configuraciones de proxy. Este proceso usa las API de SDK de Azure para Java Configuration . Cuando el generador crea un cliente, configura el cliente con una copia de la configuración global recuperada llamando a Configuration.getGlobalConfiguration(). Esta llamada lee cualquier configuración de proxy HTTP del entorno del sistema.
Cuando el generador inspecciona el entorno, busca las siguientes configuraciones de entorno en el orden especificado:
HTTPS_PROXYHTTP_PROXYhttps.proxy*http.proxy*
* representa las propiedades conocidas del proxy de Java. Para obtener más información, consulte Redes y servidores proxy de Java en la documentación de Oracle.
Si el generador encuentra cualquiera de las configuraciones de entorno, crea una ProxyOptions instancia llamando a ProxyOptions.fromConfiguration(Configuration.getGlobalConfiguration()). En este artículo se proporcionan más detalles sobre el ProxyOptions tipo.
Importante
Para usar HTTPS_PROXY implícitamente o HTTP_PROXY, Java requiere que establezca la propiedad java.net.useSystemProxies del entorno del sistema en true.
También puede crear una instancia de cliente HTTP que no use ninguna configuración de proxy presente en las variables de entorno del sistema. Para invalidar el comportamiento predeterminado, establezca explícitamente una configuración Configuration diferente en el generador de clientes HTTP. Cuando se configura un Configuration en el compilador, ya no llama a Configuration.getGlobalConfiguration(). Por ejemplo, si llama a configuration(Configuration) mediante Configuration.NONE, puede impedir explícitamente que el generador inspeccione la configuración del entorno.
En el ejemplo siguiente se usa la HTTP_PROXY variable de entorno con el valor localhost:8888 para usar Fiddler como proxy. En este código se muestra cómo crear un cliente HTTP De Netty y OkHttp. Para obtener más información sobre la configuración del cliente HTTP, consulte Clientes y canalizaciones HTTP.
export HTTP_PROXY=localhost:8888
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder().build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder().build();
Para evitar que se use el proxy de entorno, configure el generador de clientes HTTP con Configuration.NONE, como se muestra en el ejemplo siguiente:
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder()
.configuration(Configuration.NONE)
.build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder()
.configuration(Configuration.NONE)
.build();
Uso de un proxy de configuración
En lugar de leer la configuración del entorno, configure los constructores de clientes HTTP para usar un Configuration personalizado con la misma configuración de proxy que ya admite el entorno. Esta configuración ofrece la capacidad de tener configuraciones reutilizables que tienen como ámbito un caso de uso limitado. Cuando el generador de cliente HTTP compila HttpClient, usa el ProxyOptions devuelto de ProxyOptions.fromConfiguration(<Configuration passed into the builder>).
En el ejemplo siguiente se emplean las configuraciones de http.proxy* establecidas en un objeto Configuration para usar un proxy que autentique Fiddler como proxy.
Configuration configuration = new ConfigurationBuilder()
.putProperty("http.proxyHost", "localhost")
.putProperty("http.proxyPort", "8888")
.putProperty("http.proxyUser", "1")
.putProperty("http.proxyPassword", "1")
.build();
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder()
.configuration(configuration)
.build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder()
.configuration(configuration)
.build();
Uso de un proxy explícito
Las bibliotecas cliente de Java incluyen una ProxyOptions clase que actúa como el tipo de bibliotecas cliente Azure para configurar un proxy. Puede configurar ProxyOptions con el protocolo de red que se usa para enviar solicitudes de proxy, la dirección de proxy, las credenciales de autenticación de proxy y los hosts que no son de proxy. Solo se requieren el protocolo de red proxy y la dirección de proxy. Al usar las credenciales de autenticación, debe establecer el nombre de usuario y la contraseña.
En el ejemplo siguiente se crea una instancia sencilla ProxyOptions que actúa como proxy para solicitudes dirigidas a la dirección predeterminada de Fiddler (localhost:8888):
ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("localhost", 8888));
En el ejemplo siguiente se crea un ProxyOptions autenticado que actúa como proxy de solicitudes hacia una instancia de Fiddler que requiere autenticación de proxy.
// Fiddler uses username "1" and password "1" with basic authentication as its proxy authentication requirement.
ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("localhost", 8888))
.setCredentials("1", "1");
Puede configurar generadores de clientes HTTP con ProxyOptions directamente para indicar un proxy explícito que se va a usar. Esta configuración es la manera más granular de proporcionar un proxy, y, por lo general, no es tan flexible como pasar un elemento Configuration que puedas modificar para actualizar los requisitos de proxy.
En el ejemplo siguiente se usa ProxyOptions para usar Fiddler como proxy:
ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("localhost", 8888));
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder()
.proxy(proxyOptions)
.build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder()
.proxy(proxyOptions)
.build();
Pasos siguientes
Ahora que está familiarizado con la configuración de proxy en El SDK de Azure para Java, consulte Configuración del seguimiento en SDK de Azure para Java para comprender mejor los flujos de la aplicación y para ayudar a diagnosticar problemas.