Condividi tramite


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:

  1. Creare un HttpClientHandler oggetto la cui Proxy proprietà è impostata.
  2. Creare un oggetto opzioni client del servizio la cui Transport proprietà è impostata su un HttpClientTransport oggetto che accetta l'istanza HttpClientHandler .
  3. 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_INTERFACEdi , 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