Forneça ao MSAL.NET um cliente de proxy reutilizável
Implemente IMsalHttpClientFactory em torno de um HttpClient compartilhado ciente do proxy e anexe-o ao construtor de aplicações do MSAL.
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.