Proporcione a MSAL.NET un cliente de proxy reutilizable
Implemente IMsalHttpClientFactory en torno a un HttpClient compartido que conozca el proxy y adjúntelo al generador de aplicaciones de MSAL.
MSAL.NET puede obtener su transporte HTTP de IMsalHttpClientFactory. Envuelva un cliente configurado para el proxy:
sealed class TokenHttpFactory : IMsalHttpClientFactory
{
private readonly HttpClient client;
public TokenHttpFactory(HttpClient client)
{
this.client = client;
}
public HttpClient GetHttpClient() => client;
}Cree el controlador y el cliente una sola vez durante la vida de la aplicación y, después, adjunte la fábrica durante la configuración existente del generador de 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));El generador es el generador de aplicaciones de MSAL existente; conserve su autoridad, el registro del cliente y la configuración de credenciales. Para una ruta de autoridad HTTPS permitida y accesible públicamente sin cuenta de proxy, una dirección HTTP de la lista de proxies HTTP puede rellenar el WebProxy del ejemplo. Configure las credenciales del proxy en WebProxy cuando sea necesario.
La fábrica debe ser segura para subprocesos. Reutilice el cliente en lugar de crear uno dentro de cada llamada a GetHttpClient. MSAL no elimina el cliente proporcionado; su propietario gestiona esa vida útil.
Esto controla las solicitudes HTTP de MSAL. El inicio de sesión interactivo puede abrir un navegador cuya red es independiente. Por tanto, un inicio de sesión correcto en el navegador no demuestra que el cliente HTTP del token tenga la misma ruta.