MSAL.NET mit einem wiederverwendbaren Proxy-Client versorgen
Implementieren Sie IMsalHttpClientFactory um einen gemeinsamen proxyfähigen HttpClient und hängen Sie ihn an den MSAL-Anwendungsbuilder an.
MSAL.NET kann seinen HTTP-Transport von IMsalHttpClientFactory beziehen. Umschließen Sie einen für den Proxy konfigurierten Client:
sealed class TokenHttpFactory : IMsalHttpClientFactory
{
private readonly HttpClient client;
public TokenHttpFactory(HttpClient client)
{
this.client = client;
}
public HttpClient GetHttpClient() => client;
}Erstellen Sie Handler und Client einmal für die Lebensdauer der Anwendung und hängen Sie die Factory dann während der vorhandenen MSAL-Builder-Konfiguration an:
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));Der Builder ist der vorhandene MSAL-Anwendungsbuilder der Anwendung; behalten Sie seine Autorität, Clientregistrierung und Anmeldeinformationskonfiguration bei. Für eine zulässige, öffentlich erreichbare HTTPS-Autoritätsroute ohne Proxykonto kann eine HTTP-Adresse aus der HTTP-Proxy-Liste den beispielhaften WebProxy füllen. Konfigurieren Sie bei Bedarf Proxy-Anmeldeinformationen am WebProxy.
Die Factory muss threadsicher sein. Verwenden Sie den Client wieder, statt in jedem GetHttpClient-Aufruf einen neuen zu erstellen. MSAL gibt den übergebenen Client nicht frei; sein Eigentümer verwaltet diese Lebensdauer.
Dies steuert die HTTP-Anfragen von MSAL. Die interaktive Anmeldung kann einen Browser öffnen, dessen Netzwerk getrennt ist. Eine funktionierende Browseranmeldung beweist daher nicht, dass der HTTP-Client des Tokens dieselbe Route hat.