Configurare un proxy quando si usa Azure SDK per .NET
Se l'organizzazione richiede l'uso di un server proxy per accedere alle risorse Internet, è necessaria una configurazione per usare le librerie client di Azure SDK per .NET. Dopo la configurazione, il proxy viene applicato all'istanza sottostante HttpClient
usata per le operazioni HTTP.
Il proxy può essere configurato tramite codice o tramite una variabile di ambiente. L'approccio scelto dipende dal comportamento desiderato. Impostare la variabile di ambiente appropriata se si vuole che il proxy venga applicato a livello globale a tutti i client di servizio creati all'interno del processo corrente. In alternativa, configurare il proxy tramite codice per applicare in modo selettivo le impostazioni ai client del servizio.
Importante
Le istruzioni seguenti si applicano solo alle librerie con una dipendenza da Azure.Core.
Configurare usando il codice
Per configurare un proxy a livello di codice, completare la procedura seguente:
- Creare un HttpClientHandler oggetto la cui
Proxy
proprietà è impostata. - Creare un oggetto opzioni client del servizio la cui Transport proprietà è impostata su un
HttpClientTransport
oggetto che accetta l'istanzaHttpClientHandler
. - Passare l'oggetto opzioni client del servizio al costruttore client del servizio.
Usando la libreria dei segreti di Azure Key Vault come esempio, si avrà il codice seguente:
using System.Net;
using Azure.Core.Pipeline;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using HttpClientHandler handler = new()
{
Proxy = new WebProxy(new Uri("<proxy-url>")),
};
SecretClientOptions options = new()
{
Transport = new HttpClientTransport(handler),
};
SecretClient client = new(
new Uri("https://<key-vault-name>.vault.azure.net/"),
new DefaultAzureCredential(),
options);
Configurare con le variabili di ambiente
La tabella seguente fornisce un inventario delle variabili di ambiente che possono essere impostate per configurare un proxy per l'uso.
Variabile di ambiente | Scopo |
---|---|
HTTP_PROXY oppure http_proxy |
Server proxy usato nelle richieste HTTP. |
HTTPS_PROXY oppure https_proxy |
Server proxy usato nelle richieste HTTPS. |
ALL_PROXY oppure all_proxy |
Server proxy usato per le richieste HTTP e HTTPS. |
NO_PROXY oppure no_proxy |
Elenco delimitato da virgole di nomi host da escludere dal proxy. |
GATEWAY_INTERFACE |
Indicatore che l'app è in esecuzione in un ambiente CGI (Common Gateway Interface). Valore di esempio: CGI/1.1 |
Per una conoscenza approfondita dell'elaborazione di queste variabili di ambiente, vedere il codice. Tenere presente i comportamenti seguenti:
- Ogni variabile di ambiente nella tabella precedente, ad eccezione
GATEWAY_INTERFACE
di , può essere definita in alternativa come minuscola. Il formato minuscolo ha la precedenza sulla forma maiuscola". - Se e
http_proxy
GATEWAY_INTERFACE
non sono definiti,HTTP_PROXY
viene usato . ALL_PROXY
viene considerato solo quando un proxy HTTP o HTTPS non è definito.- Le variabili di ambiente specifiche del protocollo hanno la precedenza su
ALL_PROXY
.
L'URL del server proxy assume il formato http[s]://[username:password@]<ip_address_or_hostname>:<port>/
, dove la username:password
combinazione è facoltativa. Per ottenere l'indirizzo IP o il nome host, la porta e le credenziali per il server proxy, consultare l'amministratore di rete.
Gli esempi seguenti illustrano come impostare le variabili di ambiente appropriate negli ambienti della shell dei comandi (Windows) e bash (Linux/macOS). L'impostazione della variabile di ambiente appropriata fa sì che le librerie di Azure SDK per .NET usino il server proxy in fase di esecuzione.
rem Non-authenticated HTTP server:
set HTTP_PROXY=http://10.10.1.10:1180
rem Authenticated HTTP server:
set HTTP_PROXY=http://username:password@10.10.1.10:1180
rem Non-authenticated HTTPS server:
set HTTPS_PROXY=https://10.10.1.10:1180
rem Authenticated HTTPS server:
set HTTPS_PROXY=https://username:password@10.10.1.10:1180