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-клиент токена использует тот же маршрут.

Похожие статьи