Compartilhar via


Configurar um proxy ao usar o SDK do Azure para .NET

Se sua organização exigir o uso de um servidor proxy para acessar recursos da Internet, alguma configuração será necessária para usar as bibliotecas de cliente do SDK do Azure para .NET. Depois de configurado, o proxy é aplicado à instância subjacente HttpClient usada para operações HTTP.

O proxy pode ser configurado por meio de código ou por meio de uma variável de ambiente. A abordagem escolhida depende do comportamento desejado. Configure a variável de ambiente apropriada se desejar que o proxy seja aplicado globalmente a todos os clientes de serviço criados no processo atual. Como alternativa, configure o proxy por meio do código para aplicar seletivamente as configurações aos clientes de serviço.

Importante

As instruções a seguir se aplicam somente a bibliotecas com uma dependência em Azure.Core.

Configurar usando código

Para configurar programaticamente um proxy, conclua as seguintes etapas:

  1. Crie um HttpClientHandler objeto cuja Proxy propriedade esteja definida.
  2. Crie um objeto de opções do cliente de serviço cuja Transport propriedade é configurada como um HttpClientTransport objeto que aceita a HttpClientHandler instância.
  3. Passe o objeto de opções do cliente de serviço para o construtor do cliente de serviço.

Usando a biblioteca de segredos do Azure Key Vault como exemplo, você teria o seguinte código:

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

Configurar usando variáveis de ambiente

A tabela a seguir fornece um inventário de variáveis de ambiente que podem ser definidas para configurar um proxy para uso.

Variável de ambiente Finalidade
HTTP_PROXY ou http_proxy O servidor proxy usado em solicitações HTTP.
HTTPS_PROXY ou https_proxy O servidor proxy usado em solicitações HTTPS.
ALL_PROXY ou all_proxy O servidor proxy usado para solicitações HTTP e HTTPS.
NO_PROXY ou no_proxy Uma lista delimitada por vírgulas de nomes de host a serem excluídos do proxy.
GATEWAY_INTERFACE Indicador de que o aplicativo está sendo executado em um ambiente CGI (Common Gateway Interface). Valor de exemplo: CGI/1.1

Para obter uma compreensão profunda de como essas variáveis de ambiente são processadas, consulte o código. Esteja ciente dos seguintes comportamentos:

  • Cada variável de ambiente na tabela anterior, exceto GATEWAY_INTERFACE, pode ser definida como minúscula. A forma minúscula tem precedência sobre a forma maiúscula.
  • Se ambos e http_proxy GATEWAY_INTERFACE forem indefinidos, HTTP_PROXY é usado.
  • ALL_PROXY é considerado somente quando um proxy HTTP ou HTTPS é indefinido.
  • As variáveis de ambiente específicas do protocolo têm precedência sobre ALL_PROXY.

A URL do servidor proxy assume o formato http[s]://[username:password@]<ip_address_or_hostname>:<port>/, onde a username:password combinação é opcional. Para obter o endereço IP ou o nome do host, a porta e as credenciais do servidor proxy, consulte o administrador da rede.

Os exemplos a seguir mostram como definir as variáveis de ambiente apropriadas em ambientes de shell de comando (Windows) e bash (Linux/macOS). Definir a variável de ambiente apropriada faz com que as bibliotecas do SDK do Azure para .NET usem o servidor proxy em runtime.

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