Freigeben über


Konfigurieren von Proxys im Azure SDK für Java

Dieser Artikel enthält eine Übersicht darüber, wie Sie das Azure SDK für Java so konfigurieren, dass Proxys ordnungsgemäß verwendet werden.

Konfiguration des HTTP-Proxys

Die Azure-Clientbibliotheken für Java bieten mehrere Möglichkeiten zum Konfigurieren eines Proxys für einen HttpClient.

Jede Methode zum Bereitstellen eines Proxys verfügt über eigene Vor- und Nachteile und stellt unterschiedliche Kapselungsebenen bereit. Wenn Sie einen Proxy für ein HttpClient konfiguriert haben, verwendet er den Proxy für den Rest seiner Lebensdauer. Wenn der Proxy an eine Person HttpClient gebunden ist, kann eine Anwendung mehrere HttpClient Instanzen verwenden, in denen jeder einen anderen Proxy verwenden kann, um die Proxyanforderungen einer Anwendung zu erfüllen.

Die Proxykonfigurationsoptionen sind:

Verwenden eines Umgebungsproxys

Standardmäßig prüfen HTTP-Client-Generatoren die Umgebung auf Proxykonfigurationen. Dieser Prozess verwendet das Azure SDK für Java-APIs Configuration . Wenn der Generator einen Client erstellt, wird er mit einer Kopie der "globalen Konfiguration" konfiguriert, die durch Aufrufen Configuration.getGlobalConfiguration()abgerufen wird. Dieser Aufruf liest alle HTTP-Proxykonfigurationen aus der Systemumgebung ein.

Wenn der Ersteller die Umgebung prüft, sucht er in der angegebenen Reihenfolge nach den folgenden Umgebungskonfigurationen:

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

Dies * stellt die bekannten Java-Proxyeigenschaften dar. Weitere Informationen finden Sie in der Oracle-Dokumentation unter Java Networking und Proxys .

Wenn der Generator eine der Umgebungskonfigurationen findet, wird eine ProxyOptions Instanz durch Aufrufen ProxyOptions.fromConfiguration(Configuration.getGlobalConfiguration())erstellt. Dieser Artikel enthält weitere Details zu dem ProxyOptions Typ.

Von Bedeutung

Um eine beliebige Proxykonfiguration zu verwenden, müssen Sie in Java die Systemumgebungseigenschaft java.net.useSystemProxies auf true festlegen.

Sie können auch eine HTTP-Clientinstanz erstellen, die keine Proxykonfiguration verwendet, die in den Systemumgebungsvariablen vorhanden ist. Um das Standardverhalten außer Kraft zu setzen, legen Sie im HTTP-Client-Generator explizit eine andere Konfiguration Configuration fest. Wenn Sie ein Configuration im Builder festlegen, ruft es Configuration.getGlobalConfiguration() nicht mehr auf. Wenn Sie zum Beispiel configuration(Configuration) mit Configuration.NONE aufrufen, können Sie explizit verhindern, dass der Bauarbeiter die Umgebung für die Konfiguration prüft.

Im folgenden Beispiel wird die HTTP_PROXY Umgebungsvariable mit Dem Wert localhost:8888 verwendet, um Fiddler als Proxy zu verwenden. Dieser Code veranschaulicht das Erstellen eines Netty- und eines OkHttp-HTTP-Clients. (Weitere Informationen zur HTTP-Clientkonfiguration finden Sie unter HTTP-Clients und Pipelines.)

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

Um zu verhindern, dass der Umgebungsproxy verwendet wird, konfigurieren Sie den HTTP-Client-Generator mit Configuration.NONE, wie im folgenden Beispiel gezeigt:

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

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

Verwenden eines Konfigurationsproxys

Anstatt aus der Umgebung zu lesen, können Sie HTTP-Client-Generatoren so konfigurieren, dass sie eine Benutzerdefinierte Configuration mit den gleichen Proxyeinstellungen verwenden, die bereits aus der Umgebung akzeptiert werden. Diese Konfiguration bietet die Möglichkeit, wiederverwendbare Konfigurationen zu haben, die auf einen eingeschränkten Anwendungsfall beschränkt sind. Wenn der HTTP-Client-Generator den HttpClient erstellt, verwendet er hierzu die von ProxyOptions zurückgegebenen ProxyOptions.fromConfiguration(<Configuration passed into the builder>).

Im folgenden Beispiel werden die http.proxy* in einem Configuration Objekt festgelegten Konfigurationen verwendet, um einen Proxy zu verwenden, der Fiddler als Proxy authentifiziert.

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();

Verwenden eines expliziten Proxys

Die Java-Clientbibliotheken werden mit einer ProxyOptions Klasse ausgeliefert, die als Azure-Clientbibliothekstyp zum Konfigurieren eines Proxys fungiert. Sie können ProxyOptions konfigurieren, indem Sie das Netzwerkprotokoll verwenden, das zum Senden von Proxyanforderungen, der Proxyadresse, den Proxyauthentifizierungsanmeldeinformationen und den Nicht-Proxyhosts verwendet wird. Es sind nur das Proxynetzwerkprotokoll und die Proxyadresse erforderlich. Wenn Sie Authentifizierungsanmeldeinformationen verwenden, müssen Sie sowohl den Benutzernamen als auch das Kennwort festlegen.

Im folgenden Beispiel wird eine einfache ProxyOptions-Instanz erstellt, die Anfragen an die Fiddler-Standardadresse weiterleitet (localhost:8888):

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

Im folgenden Beispiel wird eine authentifizierte ProxyOptions erstellt, die Anfragen an eine Fiddler-Instanz weiterleitet, die eine Proxyauthentifizierung erfordert.

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

Sie können HTTP-Client-Generatoren direkt mit ProxyOptions konfigurieren, um einen expliziten Proxy anzugeben, der verwendet werden soll. Diese Konfiguration ist die detaillierteste Methode zum Bereitstellen eines Proxys und ist im Allgemeinen nicht so flexibel wie das Übergeben eines Configuration, das Sie ändern können, um die Proxyanforderungen zu aktualisieren.

Im folgenden Beispiel wird ProxyOptions verwendet, um Fiddler als Proxy zu nutzen:

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ächste Schritte

Nachdem Sie nun mit der Proxykonfiguration im Azure SDK für Java vertraut sind, lesen Sie " Konfigurieren der Ablaufverfolgung" im Azure SDK für Java , um Abläufe in Ihrer Anwendung besser zu verstehen und Probleme zu diagnostizieren.