Какие учётные данные .NET относятся к прокси?
Различайте WebProxy.Credentials, учётные данные сервера назначения и DefaultProxyCredentials при аутентификации HTTP-прокси.
Для собственного WebProxy задайте учётную запись прокси на этом объекте. Другие свойства учётных данных .NET предназначены разным получателям:
| Свойство | Получатель |
|---|---|
WebProxy.Credentials | Прокси, представленный этим объектом. |
HttpClientHandler.Credentials | Сервер назначения. |
DefaultProxyCredentials | Системный прокси по умолчанию, когда Proxy равен null, а UseProxy — true. |
Этот пример .NET 10 задаёт явный прокси и его собственную учётную запись:
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);
Замените документационную точку и используйте учётную запись, предоставленную оператором. Запись списка без аутентификации не требует выдуманного логина. Поскольку Proxy обработчика задан явно, DefaultProxyCredentials не заменяет WebProxy.Credentials.
UseDefaultCredentials также имеет область действия, зависящую от объекта: серверная аутентификация обработчика и прокси-аутентификация WebProxy различаются. Отправка учётной записи пользователя процесса не является универсальным ответом на 407.
Если запрос аутентификации сохраняется, проверьте фактическую схему, выбранную точку и экземпляр клиента/обработчика. Аутентификация прокси может предшествовать TLS назначения, поэтому заголовок Authorization сайта не может на неё ответить. Поддержка зависит от обработчика, платформы, сервиса и политики развёртывания; глобально менять прокси Windows не требуется.