Para um WebProxy personalizado, coloque a conta do proxy nesse objeto. Outras propriedades de credenciais .NET atendem a destinatários diferentes:

PropriedadeDestinatário
WebProxy.CredentialsO proxy representado por esse objeto.
HttpClientHandler.CredentialsO servidor de destino.
DefaultProxyCredentialsO proxy padrão do sistema quando Proxy é null e UseProxy é true.

Este exemplo .NET 10 fornece um proxy explícito e sua própria conta:

using System;
using System.Net;
using System.Net.Http;

string password = Environment.GetEnvironmentVariable("PROXY_PASSWORD")
    ?? throw new InvalidOperationException("Set PROXY_PASSWORD");

var proxy = new WebProxy("http://203.0.113.10:8080")
{
    Credentials = new NetworkCredential("proxy-user", password)
};

using var handler = new HttpClientHandler
{
    Proxy = proxy,
    UseProxy = true
};
using var client = new HttpClient(handler)
{
    Timeout = TimeSpan.FromSeconds(15)
};

using var response = await client.GetAsync("https://example.com/");
Console.WriteLine((int)response.StatusCode);

Substitua o endpoint de documentação e use uma conta fornecida pelo operador. Uma entrada de lista sem autenticação não precisa de login inventado. Como Proxy do handler é atribuído explicitamente, DefaultProxyCredentials não substitui WebProxy.Credentials.

UseDefaultCredentials também tem escopo específico do objeto: a autenticação de servidor do handler e a autenticação de proxy de WebProxy são diferentes. Enviar a conta do usuário do processo não é uma resposta genérica a 407.

Se o desafio de autenticação persistir, confira o esquema real, o endpoint escolhido e a instância de cliente/handler. A autenticação proxy pode ocorrer antes do TLS de destino; portanto, um cabeçalho Authorization do site não pode respondê-la. A autenticação compatível ainda depende de handler, plataforma, serviço e política de implantação; a configuração não exige mudança global do proxy Windows.

Artigos relacionados