Proxyk konfigurálása a Java Azure SDK-ban
Ez a cikk áttekintést nyújt arról, hogyan konfigurálhatja az Azure SDK for Java-t a proxyk megfelelő használatára.
HTTP-proxykonfiguráció
A Java-hoz készült Azure-ügyfélkódtárak több módon is konfigurálhatók proxykhoz HttpClient
.
A proxyk biztosításának minden módszerének megvannak a maga előnyei és hátrányai, és különböző beágyazási szinteket biztosít. Ha konfigurált egy proxyt egy HttpClient
adotthoz, az a proxyt fogja használni a teljes élettartama során. Ha a proxy egy adott személyhez HttpClient
van kötve, az alkalmazás több HttpClient
példányt is használhat, ahol mindegyik más proxyt használhat az alkalmazás proxykövetelményeinek teljesítéséhez.
A proxykonfigurációs beállítások a következők:
Környezeti proxy használata
Alapértelmezés szerint a HTTP-ügyfélkészítők proxykonfigurációkat keresnek a környezetben. Ez a folyamat az Azure SDK for Java Configuration
API-kat használja. Amikor a szerkesztő létrehoz egy ügyfelet, az a hívással Configuration.getGlobalConfiguration()
lekért "globális konfiguráció" másolatával van konfigurálva. Ez a hívás a rendszerkörnyezet bármely HTTP-proxykonfigurációjában beolvasható.
Amikor a szerkesztő ellenőrzi a környezetet, a megadott sorrendben a következő környezeti konfigurációkat fogja keresni:
HTTPS_PROXY
HTTP_PROXY
https.proxy*
http.proxy*
Ez *
a jól ismert Java-proxytulajdonságokat jelöli. További információ: Java Networking and Proxies in the Oracle documentation.
Ha a szerkesztő megkeresi a környezeti konfigurációk bármelyikét, meghívva ProxyOptions.fromConfiguration(Configuration.getGlobalConfiguration())
létrehoz egy példánytProxyOptions
. Ez a cikk az alábbiakban további részleteket tartalmaz a ProxyOptions
típusról.
Fontos
Bármely proxykonfiguráció használatához a Java megköveteli, hogy a rendszerkörnyezet tulajdonságát java.net.useSystemProxies
a következőre true
állítsa.
Létrehozhat olyan HTTP-ügyfélpéldányt is, amely nem használ proxykonfigurációt a rendszerkörnyezet változóiban. Az alapértelmezett viselkedés felülbírálásához explicit módon állítson be egy másik konfiguráltat Configuration
a HTTP-ügyfélszerkesztőben. Ha beállít egy Configuration
értéket a szerkesztőben, az többé nem fog meghívni Configuration.getGlobalConfiguration()
. Ha például a használatával Configuration.NONE
hívconfiguration(Configuration)
, explicit módon megakadályozhatja, hogy a szerkesztő megvizsgálja a környezetet a konfiguráció szempontjából.
Az alábbi példa a környezeti változó értékét localhost:8888
használja a HTTP_PROXY
Fiddler proxyként való használatára. Ez a kód egy Netty és egy OkHttp HTTP-ügyfél létrehozását mutatja be. (További információ a HTTP-ügyfél konfigurációjáról: HTTP-ügyfelek és folyamatok.)
export HTTP_PROXY=localhost:8888
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder().build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder().build();
Ha meg szeretné akadályozni a környezeti proxy használatát, konfigurálja a HTTP-ügyfélszerkesztőt Configuration.NONE
a következő példában látható módon:
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder()
.configuration(Configuration.NONE)
.build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder()
.configuration(Configuration.NONE)
.build();
Konfigurációs proxy használata
A környezetből való olvasás helyett konfigurálhatja a HTTP-ügyfélkészítőket úgy, hogy a környezetből már elfogadott proxybeállításokkal rendelkező egyéni Configuration
beállításokat használjanak. Ez a konfiguráció lehetővé teszi az újrafelhasználható konfigurációk használatát, amelyek korlátozott használati esetekre terjednek ki. Amikor a HTTP-ügyfélszerkesztő létrehozza a HttpClient
következőt, a ProxyOptions
visszaadott forrást ProxyOptions.fromConfiguration(<Configuration passed into the builder>)
fogja használni.
Az alábbi példa az http.proxy*
objektumban Configuration
beállított konfigurációkat használja a Fiddlert proxyként hitelesítő proxy használatára.
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();
Explicit proxy használata
A Java-ügyfélkódtárak egy ProxyOptions
olyan osztályt szállnak le, amely az Azure-ügyfélkódtárak típusaként működik a proxy konfigurálásához. Konfigurálhatja ProxyOptions
a proxykérelmek küldéséhez használt hálózati protokollt, a proxycímet, a proxyhitelesítési hitelesítő adatokat és a nem proxyzó gazdagépeket. Csak a proxy hálózati protokollra és a proxycímre van szükség. Hitelesítési hitelesítő adatok használatakor be kell állítania a felhasználónevet és a jelszót is.
Az alábbi példa egy egyszerű ProxyOptions
példányt hoz létre, amely az alapértelmezett Fiddler-címrelocalhost:8888
() hivatkozik:
ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("localhost", 8888));
Az alábbi példa egy hitelesített ProxyOptions
példányt hoz létre, amely proxyhitelesítést igénylő Fiddler-példányhoz kér kéréseket:
// 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");
A HTTP-ügyfélkészítőket ProxyOptions
közvetlenül konfigurálhatja, hogy explicit proxyt jelöljön. Ez a konfiguráció a proxyk biztosításának legrészletesebb módja, és általában nem olyan rugalmas, mint a Configuration
proxykra vonatkozó követelmények frissítéséhez használható mutációk átadása.
Az alábbi példa a Fiddler proxyként való használatát használja ProxyOptions
:
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();
További lépések
Most, hogy már ismeri a proxykonfigurációt a Java Azure SDK-ban, olvassa el a Nyomkövetés konfigurálása a Java-hoz készült Azure SDK-ban az alkalmazáson belüli folyamatok jobb megértéséhez és a problémák diagnosztizálásához című témakört.