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.

Ähnliche Artikel