Partager via


Configurer des proxys dans le Kit de développement logiciel (SDK) Azure pour Java

Cet article fournit une vue d’ensemble de la configuration du Kit de développement logiciel (SDK) Azure pour Java afin d’utiliser correctement les proxys.

Configuration du proxy HTTP

Les bibliothèques clientes Azure pour Java offrent plusieurs façons de configurer un proxy pour un HttpClient.

Chaque méthode d’approvisionnement d’un proxy a ses propres avantages et inconvénients et fournit différents niveaux d’encapsulation. Lorsque vous avez configuré un proxy pour un HttpClient, il utilise le proxy pour le reste de sa durée de vie. Le fait d’avoir le proxy lié à un individu HttpClient permet à une application d’utiliser plusieurs HttpClient instances où chacun peut utiliser un proxy différent pour répondre aux exigences de proxy d’une application.

Les options de configuration du proxy sont les suivantes :

Utiliser un proxy d’environnement

Par défaut, les générateurs de clients HTTP inspectent l’environnement pour les configurations de proxy. Ce processus utilise le Kit de développement logiciel (SDK) Azure pour les API Java Configuration . Lorsque le générateur crée un client, il est configuré avec une copie de la « configuration globale » récupérée en appelant Configuration.getGlobalConfiguration(). Cet appel peut être lu dans n’importe quelle configuration de proxy HTTP de l’environnement système.

Lorsque le générateur inspecte l’environnement, il recherche les configurations d’environnement suivantes dans l’ordre spécifié :

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

Le * représente les propriétés bien connues du proxy Java. Pour plus d’informations, consultez La mise en réseau et les proxys Java dans la documentation Oracle.

Si le générateur trouve l’une des configurations d’environnement, il crée une ProxyOptions instance en appelant ProxyOptions.fromConfiguration(Configuration.getGlobalConfiguration()). Cet article fournit plus de détails ci-dessous sur le ProxyOptions type.

Importante

Pour utiliser n'importe quelle configuration de proxy, Java vous oblige à définir la propriété d'environnement système java.net.useSystemProxies sur true.

Vous pouvez également créer une instance cliente HTTP qui n’utilise aucune configuration de proxy présente dans les variables d’environnement système. Pour remplacer le comportement par défaut, vous définissez explicitement une configuration Configuration différente dans le générateur de client HTTP. Lorsque vous définissez un Configuration dans le générateur, cela n'appelle plus Configuration.getGlobalConfiguration(). Par exemple, si vous appelez configuration(Configuration) à l’aide Configuration.NONE, vous pouvez empêcher explicitement le générateur d’inspecter l’environnement pour la configuration.

L’exemple suivant utilise la HTTP_PROXY variable d’environnement avec une valeur localhost:8888 pour utiliser Fiddler comme proxy. Ce code illustre la création d’un client Netty et d’un client HTTP OkHttp. (Pour plus d’informations sur la configuration du client HTTP, consultez clients HTTP et pipelines.)

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

Pour empêcher l’utilisation du proxy d’environnement, configurez le générateur de client HTTP avec Configuration.NONE, comme illustré dans l’exemple suivant :

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

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

Utiliser un proxy de configuration

Au lieu de lire à partir de l’environnement, vous pouvez configurer des générateurs de clients HTTP pour qu’ils utilisent un paramètre personnalisé Configuration avec les mêmes paramètres proxy que ceux qui sont déjà acceptés à partir de l’environnement. Cette configuration offre la possibilité d’avoir des configurations réutilisables qui sont étendues à un cas d’usage limité. Lorsque le générateur de client HTTP crée le HttpClient, il utilise le ProxyOptions retour à partir de ProxyOptions.fromConfiguration(<Configuration passed into the builder>).

L’exemple suivant utilise les http.proxy* configurations définies dans un Configuration objet pour utiliser un proxy qui authentifie Fiddler comme proxy.

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

Utiliser un proxy explicite

Les bibliothèques clientes Java sont fournies avec une ProxyOptions classe qui agit comme type de bibliothèques clientes Azure pour la configuration d’un proxy. Vous pouvez configurer ProxyOptions le protocole réseau utilisé pour envoyer des requêtes proxy, l’adresse proxy, les informations d’identification d’authentification proxy et les hôtes non proxy. Seul le protocole réseau proxy et l’adresse proxy sont requis. Lorsque vous utilisez des informations d’identification d’authentification, vous devez définir à la fois le nom d’utilisateur et le mot de passe.

L’exemple suivant crée une instance simple ProxyOptions qui proxy les demandes vers l’adresse Fiddler par défaut (localhost:8888) :

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

L’exemple suivant crée un proxy authentifié ProxyOptions qui redirige les requêtes vers une instance Fiddler nécessitant une authentification 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");

Vous pouvez configurer des générateurs de clients HTTP avec ProxyOptions directement pour indiquer un proxy explicite à utiliser. Cette configuration est la manière la plus granulaire de fournir un proxy et est généralement moins flexible que de transmettre un Configuration que vous pouvez modifier pour mettre à jour les besoins de proxy.

L’exemple suivant utilise ProxyOptions Fiddler comme 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();

Étapes suivantes

Maintenant que vous êtes familiarisé avec la configuration de proxy dans le Kit de développement logiciel (SDK) Azure pour Java, consultez Configurer le suivi dans le Kit de développement logiciel (SDK) Azure pour Java pour mieux comprendre les flux au sein de votre application et pour vous aider à diagnostiquer les problèmes.