Compartir a través de


Configuración de un proxy al usar el SDK de Azure para .NET

Si su organización requiere el uso de un servidor proxy para acceder a los recursos de Internet, se requiere alguna configuración para usar el SDK de Azure para las bibliotecas cliente de .NET. Una vez configurado, el proxy se aplica a la instancia subyacente HttpClient que se usa para las operaciones HTTP.

El proxy se puede configurar mediante código o a través de una variable de entorno. El enfoque que elija depende del comportamiento deseado. Establezca la variable de entorno adecuada si desea que el proxy se aplique globalmente a todos los clientes de servicio creados en el proceso actual. Como alternativa, configure el proxy mediante código para aplicar de forma selectiva la configuración a los clientes de servicio.

Importante

Las instrucciones siguientes solo se aplican a las bibliotecas con una dependencia de Azure.Core.

Configuración mediante código

Para configurar mediante programación un proxy, complete los pasos siguientes:

  1. Cree un HttpClientHandler objeto cuya Proxy propiedad esté establecida.
  2. Cree un objeto de opciones de cliente de servicio cuya Transport propiedad esté establecida en un HttpClientTransport objeto que acepte la HttpClientHandler instancia.
  3. Pase el objeto de opciones de cliente de servicio al constructor de cliente de servicio.

Con la biblioteca de secretos de Azure Key Vault como ejemplo, tendría el código siguiente:

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

Configuración mediante variables de entorno

En la tabla siguiente se proporciona un inventario de variables de entorno que se pueden establecer para configurar un proxy para su uso.

Variable del entorno Fin
HTTP_PROXY o http_proxy Servidor proxy usado en solicitudes HTTP.
HTTPS_PROXY o https_proxy El servidor proxy que se usa en las solicitudes HTTPS.
ALL_PROXY o all_proxy El servidor proxy que se usa para las solicitudes HTTP y HTTPS.
NO_PROXY o no_proxy Lista delimitada por comas de nombres de host que se van a excluir de la proxying.
GATEWAY_INTERFACE Indicador de que la aplicación se ejecuta en un entorno de Interfaz de puerta de enlace común (CGI). Valor de ejemplo: CGI/1.1

Para obtener una comprensión profunda de cómo se procesan estas variables de entorno, consulte el código. Tenga en cuenta los siguientes comportamientos:

  • Cada variable de entorno de la tabla anterior, excepto GATEWAY_INTERFACE, se puede definir como minúsculas. El formulario en minúsculas tiene prioridad sobre el formulario en mayúsculas.
  • Si ambos http_proxy y GATEWAY_INTERFACE no están definidos, HTTP_PROXY se usa.
  • ALL_PROXY solo se considera cuando un proxy HTTP o HTTPS no está definido.
  • Las variables de entorno específicas del protocolo tienen prioridad sobre ALL_PROXY.

La dirección URL del servidor proxy adopta el formato http[s]://[username:password@]<ip_address_or_hostname>:<port>/, donde la username:password combinación es opcional. Para obtener la dirección IP o el nombre de host, el puerto y las credenciales del servidor proxy, consulte al administrador de red.

En los ejemplos siguientes se muestra cómo establecer las variables de entorno adecuadas en entornos de shell de comandos (Windows) y bash (Linux/macOS). Establecer la variable de entorno adecuada hace que las bibliotecas de Azure SDK para .NET usen el servidor proxy en tiempo de ejecución.

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