O MSAL.NET pode obter o seu transporte HTTP de IMsalHttpClientFactory. Envolva um cliente configurado para o proxy:

sealed class TokenHttpFactory : IMsalHttpClientFactory
{
    private readonly HttpClient client;

    public TokenHttpFactory(HttpClient client)
    {
        this.client = client;
    }

    public HttpClient GetHttpClient() => client;
}

Crie o manipulador e o cliente uma vez para o tempo de vida da aplicação e, depois, anexe a fábrica durante a configuração existente do construtor do 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));

O construtor é o construtor de aplicações MSAL existente da aplicação; preserve a autoridade, o registo do cliente e a configuração de credenciais. Para uma rota de autoridade HTTPS permitida e acessível publicamente sem conta de proxy, um endereço HTTP da lista de proxies HTTP pode preencher o WebProxy do exemplo. Configure as credenciais do proxy no WebProxy quando necessário.

A fábrica tem de ser segura em termos de threads. Reutilize o cliente em vez de criar um dentro de cada chamada a GetHttpClient. O MSAL não elimina o cliente fornecido; o respetivo proprietário gere esse tempo de vida.

Isto controla os pedidos HTTP do MSAL. O início de sessão interativo pode abrir um navegador cuja rede é separada. Por isso, um início de sessão bem-sucedido no navegador não prova que o cliente HTTP do token tenha a mesma rota.

Artigos relacionados