Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln visar hur du konfigurerar proxyservrar i Azure SDKs för Java så att du kan dirigera klientbegäranden via nödvändiga nätverks- och säkerhetsgränser.
HTTP-proxykonfiguration
Azure-klientbiblioteken för Java erbjuder flera sätt att konfigurera en proxy för en HttpClient.
Varje metod för att tillhandahålla en proxy har sina egna fördelar och nackdelar och ger olika nivåer av inkapsling. När du konfigurerar en proxy för en HttpClientanvänder den proxyn under resten av sin livslängd. Genom att binda proxyn till en enskild HttpClientkan ett program använda flera HttpClient instanser där var och en kan använda en annan proxy för att uppfylla ett programs proxykrav.
Alternativen för proxykonfiguration är:
Använda en miljöproxy
Som standard kontrollerar HTTP-klientbyggare miljön efter proxykonfigurationer. Den här processen använder Azure SDKs för Java-API:er Configuration. När byggaren skapar en klient konfigureras klienten med en kopia av den globala konfiguration som hämtas genom att anropa Configuration.getGlobalConfiguration(). Det här anropet läser alla HTTP-proxykonfigurationer från systemmiljön.
När byggaren inspekterar miljön söker den efter följande miljökonfigurationer i den angivna ordningen:
HTTPS_PROXYHTTP_PROXYhttps.proxy*http.proxy*
* Representerar de välkända Java-proxyegenskaperna. Mer information finns i Java-nätverk och proxyservrar i Oracle-dokumentationen.
Om byggaren hittar någon av miljökonfigurationerna skapar den en ProxyOptions instans genom att anropa ProxyOptions.fromConfiguration(Configuration.getGlobalConfiguration()). Den här artikeln innehåller mer information om ProxyOptions typen.
Viktigt!
För att implicit använda HTTPS_PROXY eller HTTP_PROXYkräver Java att du anger systemmiljöegenskapen java.net.useSystemProxies till true.
Du kan också skapa en HTTP-klientinstans som inte använder någon proxykonfiguration som finns i systemmiljövariablerna. Om du vill åsidosätta standardbeteendet anger du uttryckligen ett annat konfigurerat Configuration i HTTP-klientverktyget. När du anger en Configuration i byggaren anropar den inte längre Configuration.getGlobalConfiguration(). Om du till exempel anropar configuration(Configuration) med Configuration.NONE, kan du uttryckligen förhindra att byggaren inspekterar miljön för konfiguration.
I följande exempel används HTTP_PROXY miljövariabeln med värde localhost:8888 för att använda Fiddler som proxy. Den här koden visar hur du skapar en Netty och en OKHttp HTTP-klient. Mer information om HTTP-klientkonfiguration finns i HTTP-klienter och pipelines.
export HTTP_PROXY=localhost:8888
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder().build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder().build();
Om du vill förhindra att miljöproxyn används konfigurerar du HTTP-klientverktyget med Configuration.NONE, som du ser i följande exempel:
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder()
.configuration(Configuration.NONE)
.build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder()
.configuration(Configuration.NONE)
.build();
Använd en konfigurationsproxy
I stället för att läsa från miljön konfigurerar du HTTP-klientbyggare för att använda en anpassad Configuration med samma proxyinställningar som miljön redan accepterar. Den här konfigurationen ger möjlighet att ha återanvändbara konfigurationer som är begränsade till ett begränsat användningsfall. När HTTP-klientbyggaren skapar HttpClient använder den den ProxyOptions som returneras från ProxyOptions.fromConfiguration(<Configuration passed into the builder>).
I följande exempel används konfigurationerna http.proxy* som anges i ett Configuration -objekt för att använda en proxy som autentiserar Fiddler som 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();
Använd en explicit proxy
De Java klientbiblioteken innehåller en ProxyOptions klass som fungerar som Azure klientbibliotekstyp för att konfigurera en proxy. Du kan konfigurera ProxyOptions med det nätverksprotokoll som används för att skicka proxybegäranden, proxyadressen, autentiseringsuppgifter för proxy och värdar som inte är proxyservrar. Endast proxynätverksprotokollet och proxyadressen krävs. När du använder autentiseringsuppgifter måste du ange både användarnamnet och lösenordet.
I följande exempel skapas en enkel ProxyOptions instans som proxyservrar begär till fiddler-standardadressen (localhost:8888):
ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("localhost", 8888));
I följande exempel skapas en autentiserad ProxyOptions som vidarebefordrar begäranden till en Fiddler-instans som kräver autentisering genom 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");
Du kan konfigurera HTTP-klientbyggare med ProxyOptions direkt för att ange en explicit proxy att använda. Den här konfigurationen är det mest detaljerade sättet att tillhandahålla en proxy och är vanligtvis inte lika flexibel som att skicka en Configuration som du kan ändra för att uppdatera proxykraven.
I följande exempel används ProxyOptions Fiddler som 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();
Nästa steg
Nu när du är bekant med proxykonfigurationen i Azure SDKs för Java kan du läsa Konfigurera spårning i Azure SDKs för Java för att bättre förstå flöden i ditt program och för att diagnostisera problem.