Proxy's configureren in de Azure SDK voor Java

Dit artikel bevat een overzicht van het configureren van de Azure SDK voor Java om het juiste gebruik van proxy's te maken.

HTTP-proxyconfiguratie

De Azure-clientbibliotheken voor Java bieden meerdere manieren om een proxy voor een HttpClientte configureren.

Elke methode voor het leveren van een proxy heeft zijn eigen voor- en nadelen en biedt verschillende niveaus van inkapseling. Wanneer u een proxy voor een HttpClientproxy hebt geconfigureerd, wordt de proxy gebruikt voor de rest van de levensduur. Als de proxy is gekoppeld aan een persoon HttpClient , kan een toepassing meerdere HttpClient exemplaren gebruiken, waarbij elk een andere proxy kan gebruiken om te voldoen aan de proxyvereisten van een toepassing.

De proxyconfiguratieopties zijn:

Een omgevingsproxy gebruiken

HTTP-clientbouwers controleren standaard de omgeving voor proxyconfiguraties. Dit proces maakt gebruik van de Azure SDK voor Java-API's Configuration . Wanneer de opbouwfunctie een client maakt, wordt deze geconfigureerd met een kopie van de globale configuratie die wordt opgehaald door aan te roepen Configuration.getGlobalConfiguration(). Deze aanroep wordt gelezen in een HTTP-proxyconfiguratie vanuit de systeemomgeving.

Wanneer de opbouwfunctie de omgeving inspecteert, wordt gezocht naar de volgende omgevingsconfiguraties in de opgegeven volgorde:

  1. HTTPS_PROXY
  2. HTTP_PROXY
  3. https.proxy*
  4. http.proxy*

De * naam vertegenwoordigt de bekende Eigenschappen van de Java-proxy. Zie Java-netwerken en proxy's in de Oracle-documentatie voor meer informatie.

Als de opbouwfunctie een van de omgevingsconfiguraties vindt, wordt er een exemplaar gemaakt door aan ProxyOptions te roepen ProxyOptions.fromConfiguration(Configuration.getGlobalConfiguration()). In dit artikel vindt u meer informatie over het ProxyOptions type.

Belangrijk

Als u een proxyconfiguratie wilt gebruiken, moet u voor Java de eigenschap java.net.useSystemProxies van de systeemomgeving instellen op true.

U kunt ook een HTTP-clientinstantie maken die geen proxyconfiguratie gebruikt die aanwezig is in de omgevingsvariabelen van het systeem. Als u het standaardgedrag wilt overschrijven, stelt u expliciet een ander geconfigureerde Configuration in de HTTP-clientbouwer in. Wanneer u een Configuration in de opbouwfunctie instelt, wordt deze niet meer aangeroepen Configuration.getGlobalConfiguration(). Als u bijvoorbeeld aanroept configuration(Configuration)Configuration.NONE, kunt u expliciet voorkomen dat de opbouwfunctie de omgeving voor configuratie inspecteert.

In het volgende voorbeeld wordt de HTTP_PROXY omgevingsvariabele met waarde localhost:8888 gebruikt om Fiddler als proxy te gebruiken. Deze code laat zien hoe u een Netty en een OKHttp HTTP-client maakt. (Zie voor meer informatie over http-clientconfiguratieHTTP-clients en -pijplijnen.)

export HTTP_PROXY=localhost:8888
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder().build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder().build();

Als u wilt voorkomen dat de omgevingsproxy wordt gebruikt, configureert u de HTTP-clientbouwer met Configuration.NONE, zoals wordt weergegeven in het volgende voorbeeld:

HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder()
    .configuration(Configuration.NONE)
    .build();

HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder()
    .configuration(Configuration.NONE)
    .build();

Een configuratieproxy gebruiken

In plaats van te lezen uit de omgeving, kunt u HTTP-clientbouwers configureren voor gebruik van een aangepaste Configuration met dezelfde proxy-instellingen die al worden geaccepteerd vanuit de omgeving. Deze configuratie biedt de mogelijkheid om herbruikbare configuraties te hebben die zijn afgestemd op een beperkt gebruiksscenario. Wanneer de HTTP-clientbouwer de HttpClientopbouwfunctie maakt, wordt de ProxyOptions geretourneerde versie gebruikt.ProxyOptions.fromConfiguration(<Configuration passed into the builder>)

In het volgende voorbeeld worden de http.proxy* configuraties gebruikt die zijn ingesteld in een Configuration object om een proxy te gebruiken waarmee Fiddler als proxy wordt geverifieerd.

Configuration configuration = new Configuration()
    .put("java.net.useSystemProxies", "true")
    .put("http.proxyHost", "localhost")
    .put("http.proxyPort", "8888")
    .put("http.proxyUser", "1")
    .put("http.proxyPassword", "1");

HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder()
    .configuration(configuration)
    .build();

HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder()
    .configuration(configuration)
    .build();

Een expliciete proxy gebruiken

De Java-clientbibliotheken worden geleverd met een ProxyOptions klasse die fungeert als het type Azure-clientbibliotheken voor het configureren van een proxy. U kunt configureren ProxyOptions met het netwerkprotocol dat wordt gebruikt voor het verzenden van proxyaanvragen, het proxyadres, referenties voor proxyverificatie en niet-proxyhosts. Alleen het proxynetwerkprotocol en het proxyadres zijn vereist. Wanneer u verificatiereferenties gebruikt, moet u zowel de gebruikersnaam als het wachtwoord instellen.

In het volgende voorbeeld wordt een eenvoudig ProxyOptions exemplaar gemaakt dat proxy's aanvragen naar het standaardAdres van Fiddler (localhost:8888):

ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("localhost", 8888));

In het volgende voorbeeld wordt een geverifieerd exemplaar ProxyOptions gemaakt dat proxy's aanvragen voor een Fiddler-exemplaar waarvoor proxyverificatie is vereist:

// 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");

U kunt HTTP-clientbouwers ProxyOptions rechtstreeks configureren om een expliciete proxy aan te geven die moet worden gebruikt. Deze configuratie is de meest gedetailleerde manier om een proxy te bieden en is over het algemeen niet zo flexibel als het doorgeven van een Configuration proxy die u kunt dempen om proxyvereisten bij te werken.

In het volgende voorbeeld wordt ProxyOptions Gebruikgemaakt van Fiddler als 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();

Volgende stappen

Nu u bekend bent met proxyconfiguratie in de Azure SDK voor Java, raadpleegt u Tracering configureren in de Azure SDK voor Java om meer inzicht te krijgen in stromen in uw toepassing en om problemen te helpen diagnosticeren.