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:
- Crie um HttpClientHandler objeto cuja
Proxy
propriedade esteja definida. - Crie um objeto de opções do cliente de serviço cuja Transport propriedade é configurada como um
HttpClientTransport
objeto que aceita aHttpClientHandler
instância. - 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