Megosztás a következőn keresztül:


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 számára készült Azure ügyfélkönyvtárak több módot kínálnak egy proxy konfigurálására 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 proxy-t egy adott HttpClient-hoz, az a proxy-t fogja használni a hátralévő é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:

Proxy környezet 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 az építő létrehoz egy ügyfelet, az a Configuration.getGlobalConfiguration() hívásával 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:

  1. HTTPS_PROXY
  2. HTTP_PROXY
  3. https.proxy*
  4. 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 az építő megtalálja a környezeti konfigurációk bármelyikét, egy ProxyOptions példányt hoz létre a ProxyOptions.fromConfiguration(Configuration.getGlobalConfiguration()) meghívásával. Ez a cikk az alábbiakban további részleteket tartalmaz a ProxyOptions típusról.

Fontos

Az implicit használathoz HTTPS_PROXY vagy HTTP_PROXYa 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 eltérően konfigurált Configuration-t az HTTP kliens építőben. Ha beállít egy Configuration értéket a szerkesztőben, az többé nem fog meghívni Configuration.getGlobalConfiguration(). Például, ha configuration(Configuration) hívása során Configuration.NONE használja, explicit módon megakadályozhatja, hogy a konstruktor megvizsgálja a környezetet a konfiguráció szempontjából.

Az alábbi példa a HTTP_PROXY környezeti változót localhost:8888 értékkel használja, hogy a Fiddlert használja proxyként. 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.NONEa 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 az HTTP kliens építő létrehozza a HttpClient-t, akkor a ProxyOptions által visszaadott ProxyOptions.fromConfiguration(<Configuration passed into the builder>)-t 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 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();

Explicit proxy használata

A Java-ügyfélkönyvtárak tartalmaznak egy ProxyOptions osztályt, amely az Azure-ügyfélkönyvtá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ímre (localhost:8888) irányítja a kéréseket.

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

Az alábbi példa egy hitelesített ProxyOptions állít be, amely egy Fiddler-példányhoz küld kéréseket, amely proxyhitelesítést igényel.

// 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 proxy biztosításának legrészletesebb módja, és általában nem annyira rugalmas, mint egy Configuration átadása, amelyet módosíthatsz a proxyszolgáltatási követelmények frissítéséhez.

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

Következő 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.