Ge MSAL.NET en återanvändbar proxyklient
Implementera IMsalHttpClientFactory runt en delad proxy-medveten HttpClient och koppla den till MSAL-programbyggaren.
MSAL.NET kan hämta sin HTTP-transport från IMsalHttpClientFactory. Rappa in en klient som är konfigurerad för proxyn:
sealed class TokenHttpFactory : IMsalHttpClientFactory
{
private readonly HttpClient client;
public TokenHttpFactory(HttpClient client)
{
this.client = client;
}
public HttpClient GetHttpClient() => client;
}Skapa hanteraren och klienten en gång för programmets livstid och koppla sedan fabriken under den befintliga MSAL-byggarkonfigurationen:
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));Byggaren är programmets befintliga MSAL-programbyggare; behåll dess behörighet, klientregistrering och autentiseringskonfiguration. För en tillåten, offentligt nåbar HTTPS-behörighetsväg utan proxykonto kan en HTTP-adress från HTTP-proxylistan fylla exemplets WebProxy. Konfigurera proxyautentiseringsuppgifter på WebProxy vid behov.
Fabriken måste vara trådsäker. Återanvänd klienten i stället för att skapa en i varje GetHttpClient-anrop. MSAL gör sig inte av med den medföljande klienten; dess ägare hanterar den livstiden.
Detta styr MSAL:s HTTP-förfrågningar. Interaktiv inloggning kan öppna en webbläsare vars nätverk är separat. En fungerande webbläsarinloggning bevisar därför inte att tokens HTTP-klient har samma väg.