Обеспечьте MSAL.NET многоразовым прокси-клиентом
Реализуйте IMsalHttpClientFactory вокруг общего HttpClient, настроенного на прокси, и подключите его к построителю приложения MSAL.
MSAL.NET может получать свой HTTP-транспорт из IMsalHttpClientFactory. Оберните клиент, настроенный для прокси:
sealed class TokenHttpFactory : IMsalHttpClientFactory
{
private readonly HttpClient client;
public TokenHttpFactory(HttpClient client)
{
this.client = client;
}
public HttpClient GetHttpClient() => client;
}Создайте обработчик и клиент один раз на всё время жизни приложения, затем подключите фабрику во время существующей настройки построителя MSAL:
var proxy = new WebProxy("http://proxy.example:8080");
var handler = new HttpClientHandler { Proxy = proxy, UseProxy = true };
var tokenHttp = new HttpClient(handler);
builder.WithHttpClientFactory(new TokenHttpFactory(tokenHttp));Построитель — это существующий построитель приложения MSAL; сохраните его полномочия, регистрацию клиента и конфигурацию учётных данных. Для разрешённого общедоступного маршрута полномочий HTTPS без учётной записи прокси HTTP-адрес из списка HTTP-прокси может заполнить пример WebProxy. Настройте учётные данные прокси в WebProxy при необходимости.
Фабрика должна быть потокобезопасной. Используйте клиент повторно, а не создавайте новый в каждом вызове GetHttpClient. MSAL не освобождает переданный клиент; его владелец управляет этим временем жизни.
Это управляет HTTP-запросами MSAL. Интерактивный вход может открыть браузер, сеть которого отделена. Поэтому успешный вход в браузере не доказывает, что HTTP-клиент токена использует тот же маршрут.