Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo fornece uma visão geral de como configurar o SDK do Azure para Java para fazer uso adequado de proxies.
Configuração de proxy HTTP
As bibliotecas de clientes do Azure para Java oferecem várias maneiras de configurar um proxy para um HttpClient.
Cada método de fornecimento de um proxy tem seus próprios prós e contras e fornece diferentes níveis de encapsulamento. Quando você tiver configurado um proxy para um HttpClient, ele usará o proxy pelo restante do seu tempo de vida. Ter o proxy vinculado a um HttpClient individual permite que um aplicativo use várias instâncias de HttpClient, em que cada uma pode usar um proxy diferente para atender aos requisitos de proxy de um aplicativo.
As opções de configuração de proxy são:
Usar um proxy de ambiente
Por padrão, os construtores de clientes HTTP inspecionarão o ambiente em busca de configurações de proxy. Esse processo usa o SDK do Azure para APIs Java Configuration . Quando o construtor cria um cliente, ele é configurado com uma cópia da "configuração global" recuperada chamando Configuration.getGlobalConfiguration(). Essa chamada será lida em qualquer configuração de proxy HTTP do ambiente do sistema.
Quando o construtor inspecionar o ambiente, ele procurará as seguintes configurações de ambiente na ordem especificada:
HTTPS_PROXYHTTP_PROXYhttps.proxy*http.proxy*
O * representa as conhecidas propriedades do proxy Java. Para obter mais informações, consulte Rede Java e Proxies na documentação do Oracle.
Se o construtor encontrar qualquer uma das configurações de ambiente, ele criará uma ProxyOptions instância chamando ProxyOptions.fromConfiguration(Configuration.getGlobalConfiguration()). Este artigo fornece mais detalhes abaixo sobre o ProxyOptions tipo.
Importante
Para usar HTTPS_PROXY implicitamente ou HTTP_PROXY, o Java exige que você defina a propriedade java.net.useSystemProxies de ambiente do sistema como true.
Você também pode criar uma instância de cliente HTTP que não usa nenhuma configuração de proxy presente nas variáveis de ambiente do sistema. Para substituir o comportamento padrão, você define explicitamente uma configuração Configuration diferente no construtor de clientes HTTP. Quando você definir um Configuration no construtor, ele não chamará mais Configuration.getGlobalConfiguration(). Por exemplo, se você chamar configuration(Configuration) usando Configuration.NONE, poderá impedir explicitamente que o construtor inspecione o ambiente em busca de configuração.
O exemplo a seguir usa a HTTP_PROXY variável de ambiente com valor localhost:8888 para usar Fiddler como proxy. Esse código demonstra a criação de um cliente HTTP do Netty e do OkHttp. (Para obter mais informações sobre a configuração do cliente HTTP, consulte os clientes HTTP e pipelines.)
export HTTP_PROXY=localhost:8888
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder().build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder().build();
Para impedir que o proxy de ambiente seja usado, configure o construtor de clientes HTTP com Configuration.NONE, conforme mostrado no exemplo a seguir:
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder()
.configuration(Configuration.NONE)
.build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder()
.configuration(Configuration.NONE)
.build();
Usar um proxy de configuração
Em vez de ler do ambiente, você pode configurar construtores de clientes HTTP para usar um componente personalizado Configuration com as mesmas configurações de proxy que já são aceitas a partir do ambiente. Essa configuração permite ter configurações reutilizáveis que são limitadas a um caso de uso específico. Quando o construtor de clientes HTTP estiver criando o HttpClient, ele usará o ProxyOptions retornado de ProxyOptions.fromConfiguration(<Configuration passed into the builder>).
O exemplo a seguir usa as configurações de http.proxy* definidas em um objeto Configuration para usar um proxy que autentica o Fiddler como o 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();
Usar um proxy explícito
As bibliotecas de clientes Java são enviadas com uma ProxyOptions classe que atua como o tipo de bibliotecas de cliente do Azure para configurar um proxy. Você pode configurar ProxyOptions com o protocolo de rede usado para enviar solicitações de proxy, o endereço do proxy, credenciais de autenticação do proxy, e hosts que não utilizam proxy. Somente o protocolo de rede proxy e o endereço proxy são necessários. Ao usar credenciais de autenticação, você deve definir o nome de usuário e a senha.
O exemplo a seguir cria uma instância simples ProxyOptions que faz solicitações de proxies para o endereço padrão do Fiddler (localhost:8888):
ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("localhost", 8888));
O exemplo a seguir cria um ProxyOptions autenticado que encaminha solicitações para uma instância do Fiddler que exige autenticação 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");
Você pode configurar os integradores de cliente HTTP com ProxyOptions diretamente para indicar um proxy explícito a ser usado. Essa configuração é a maneira mais granular de fornecer um proxy e geralmente não é tão flexível quanto passar um Configuration que você pode alterar para atualizar os requisitos de proxying.
O exemplo a seguir usa ProxyOptions para usar o 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();
Próximas etapas
Agora que você está familiarizado com a configuração de proxy no SDK do Azure para Java, consulte Configurar o rastreamento no SDK do Azure para Java para entender melhor os fluxos em seu aplicativo e ajudar a diagnosticar problemas.