Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird erläutert, wie Sie Proxys im Azure SDK für Java konfigurieren, damit Sie Clientanforderungen über Ihre erforderlichen Netzwerk- und Sicherheitsgrenzen weiterleiten können.
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 konfigurieren, verwendet es den Proxy für den Rest der Lebensdauer. Durch das Binden des Proxys an eine Einzelne HttpClientkann 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
- Verwenden eines Konfigurationsproxys
- Verwenden eines expliziten Proxys
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, konfiguriert er den Client mit einer Kopie der globalen Konfiguration, die durch Aufrufen Configuration.getGlobalConfiguration()abgerufen wird. Dieser Aufruf liest eine beliebige HTTP-Proxykonfiguration aus der Systemumgebung.
Wenn der Builder die Umgebung überprüft, sucht er in der angegebenen Reihenfolge nach den folgenden Umgebungskonfigurationen:
HTTPS_PROXYHTTP_PROXYhttps.proxy*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 zum ProxyOptions Typ.
Von Bedeutung
Um HTTPS_PROXY oder HTTP_PROXY implizit zu verwenden, erfordert Java, dass Sie 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 im Builder ein Configuration 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 Sie einen Konfigurationsproxy
Anstatt aus der Umgebung zu lesen, konfigurieren Sie HTTP-Client-Builder so, dass sie ein benutzerdefiniertes Configuration mit denselben Proxyeinstellungen verwenden, die von der Umgebung bereits 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-Builder das HttpClient erstellt, verwendet er das ProxyOptions, das von ProxyOptions.fromConfiguration(<Configuration passed into the builder>) zurückgegeben wird.
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 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();
Verwenden eines expliziten Proxys
Die Java Clientbibliotheken enthalten eine ProxyOptions Klasse, 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.