Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek ukazuje, jak nakonfigurovat proxy servery v Azure SDK pro Java, abyste mohli směrovat požadavky klientů přes požadované hranice sítě a zabezpečení.
Konfigurace proxy serveru HTTP
Klientské knihovny Azure pro Javu nabízejí několik způsobů konfigurace proxy serveru pro .HttpClient
Každá metoda poskytování proxy má své vlastní výhody a nevýhody a poskytuje různé úrovně zapouzdření. Když pro HttpClient nakonfigurujete proxy server, bude ho používat po zbytek své existence. Přidružením proxy ke konkrétnímu HttpClient může aplikace použít více instancí HttpClient, z nichž každá může k naplnění požadavků aplikace na proxy použít jinou proxy.
Možnosti konfigurace proxy serveru jsou:
Použití proxy prostředí
Tvůrci klientů HTTP ve výchozím nastavení kontrolují prostředí pro konfigurace proxy serveru. Tento proces využívá sadu Azure SDK pro Configuration rozhraní JAVA API. Když tvůrce vytvoří klienta, nakonfiguruje klienta pomocí kopie globální konfigurace načtené voláním Configuration.getGlobalConfiguration(). Toto volání přečte veškerou konfiguraci proxy serveru HTTP ze systémového prostředí.
Když nástroj pro sestavení zkoumá prostředí, hledá v zadaném pořadí následující konfigurace prostředí:
HTTPS_PROXYHTTP_PROXYhttps.proxy*http.proxy*
Představuje * dobře známé vlastnosti proxy serveru Java. Další informace naleznete v tématu Sítě a proxy servery Java v dokumentaci Oracle.
Pokud tvůrce najde některou ProxyOptions z konfigurací prostředí, vytvoří instanci voláním ProxyOptions.fromConfiguration(Configuration.getGlobalConfiguration()). Tento článek obsahuje další podrobnosti o ProxyOptions typu.
Důležité
Pokud chcete implicitně použít HTTPS_PROXY nebo HTTP_PROXY, Java vyžaduje, abyste nastavili vlastnost java.net.useSystemProxies systémového prostředí na true.
Můžete také vytvořit instanci klienta HTTP, která nepoužívá žádnou konfiguraci proxy serveru, která se nachází v proměnných systémového prostředí. Chcete-li přepsat výchozí chování, výslovně nastavte v nástroji pro sestavení klienta HTTP jinak nakonfigurovaný objekt Configuration. Když v nástroji pro sestavení nastavíte Configuration, už se Configuration.getGlobalConfiguration() nevolá. Pokud například voláte configuration(Configuration) pomocí Configuration.NONE, můžete sestaviteli explicitně omezit možnost kontrolovat prostředí kvůli konfiguraci.
Následující příklad používá proměnnou HTTP_PROXY prostředí s hodnotou localhost:8888 k použití Fiddleru jako proxy serveru. Tento kód ukazuje vytvoření HTTP klienta pomocí knihoven Netty a OkHttp. Další informace o konfiguraci klienta HTTP najdete v tématu Klienti a kanály HTTP.
export HTTP_PROXY=localhost:8888
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder().build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder().build();
Pokud chcete zabránit použití proxy serveru prostředí, nakonfigurujte sestavovatele klienta HTTP s Configuration.NONE, jak je znázorněno v následujícím příkladu:
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder()
.configuration(Configuration.NONE)
.build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder()
.configuration(Configuration.NONE)
.build();
Použití konfiguračního proxy serveru
Místo čtení z prostředí nakonfigurujte buildery HTTP klienta tak, aby používaly vlastní Configuration se stejným nastavením proxy serveru, které již prostředí podporuje. Tato konfigurace nabízí možnost opakovaně použitelných konfigurací, které jsou vymezeny na omezený případ použití. Když tvůrce klienta HTTP sestaví HttpClient, použije vrácený ProxyOptions z ProxyOptions.fromConfiguration(<Configuration passed into the builder>).
Následující příklad používá konfigurace nastavené v objektu http.proxy* k použití proxy, která ověřuje Fiddlera jako 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();
Použití explicitního proxy serveru
Klientské knihovny Java zahrnují ProxyOptions třídu, která funguje jako typ Azure klientských knihoven pro konfiguraci proxy serveru. Můžete nakonfigurovat ProxyOptions síťový protokol používaný k odesílání proxy požadavků, adresu proxy serveru, přihlašovací údaje pro ověření proxy serveru a hostitele, na které se nevztahuje proxy. Vyžaduje se jenom síťový protokol proxy serveru a adresa proxy serveru. Při použití přihlašovacích údajů pro ověřování musíte nastavit uživatelské jméno i heslo.
Následující příklad vytvoří jednoduchou instanci ProxyOptions, která přesměrovává požadavky na výchozí adresu Fiddleru (localhost:8888):
ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("localhost", 8888));
Následující příklad vytvoří ověřený ProxyOptions, který zprostředkovává požadavky pro instanci Fiddler vyžadující ověření prostřednictvím 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");
Tvůrce klientů HTTP můžete nakonfigurovat přímo tak ProxyOptions , aby označovali explicitní proxy server, který se má použít. Tato konfigurace je nejpodrobnější způsob, jak poskytnout proxy server, a obecně není tak flexibilní jako předání Configuration, které můžete upravit za účelem aktualizace požadavků na proxy server.
Následující příklad používá ProxyOptions Fiddler jako proxy server:
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();
Další kroky
Nyní, když znáte konfiguraci proxy serveru v sadě Azure SDK pro Javu, podívejte se na Konfiguraci trasování v sadě Azure SDK pro Javu, abyste lépe porozuměli tokům ve vaší aplikaci a pomohli diagnostikovat problémy.