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 HttpClient
te 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 HttpClient
proxy 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:
HTTPS_PROXY
HTTP_PROXY
https.proxy*
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 HttpClient
opbouwfunctie 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.