Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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é :
HTTPS_PROXY
HTTP_PROXY
https.proxy*
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.