Fournissez à MSAL.NET un client proxy réutilisable
Implémentez IMsalHttpClientFactory autour d'un HttpClient partagé compatible proxy et rattachez-le au générateur d'application MSAL.
MSAL.NET peut obtenir son transport HTTP auprès d'IMsalHttpClientFactory. Enveloppez un client configuré pour le proxy :
sealed class TokenHttpFactory : IMsalHttpClientFactory
{
private readonly HttpClient client;
public TokenHttpFactory(HttpClient client)
{
this.client = client;
}
public HttpClient GetHttpClient() => client;
}Créez le gestionnaire et le client une seule fois pour la durée de vie de l'application, puis rattachez la fabrique lors de la configuration existante du générateur 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));Le générateur est le générateur d'application MSAL existant de l'application ; conservez son autorité, l'enregistrement du client et la configuration des informations d'identification. Pour une route d'autorité HTTPS autorisée et accessible publiquement sans compte proxy, une adresse HTTP issue de la liste de proxies HTTP peut remplir le WebProxy d'exemple. Configurez les informations d'identification du proxy sur le WebProxy si nécessaire.
La fabrique doit être thread-safe. Réutilisez le client au lieu d'en construire un à chaque appel de GetHttpClient. MSAL ne libère pas le client fourni ; son propriétaire gère cette durée de vie.
Cela contrôle les requêtes HTTP de MSAL. La connexion interactive peut ouvrir un navigateur dont le réseau est distinct. Une connexion réussie dans le navigateur ne prouve donc pas que le client HTTP du jeton emprunte le même chemin.