Configurar um proxy para Microsoft Graph SDK v5 e Azure Identity
Configure o transporte do Graph API e o transporte do ClientSecretCredential durante a inicialização para que tanto os pedidos de API como os de token tenham uma rota.
As chamadas ao Graph API e os pedidos de token do ClientSecretCredential têm pontos de entrada de transporte separados. Com o Microsoft.Graph 5 e o Azure.Identity, configure ambos antes de criar o cliente:
var proxy = new System.Net.WebProxy(
"http://proxy.example.net:8080");
var tokenHandler = new System.Net.Http.HttpClientHandler
{
Proxy = proxy,
UseProxy = true
};
var credentialOptions = new Azure.Identity.ClientSecretCredentialOptions
{
Transport = new Azure.Core.Pipeline.HttpClientTransport(tokenHandler)
};
var credential = new Azure.Identity.ClientSecretCredential(
tenantId, clientId, clientSecret, credentialOptions);
var authProvider =
new Microsoft.Kiota.Authentication.Azure.AzureIdentityAuthenticationProvider(
credential, scopes: new[] { "https://graph.microsoft.com/.default" });
var graphHttp = Microsoft.Graph.GraphClientFactory.Create(proxy: proxy);
var graphClient = new Microsoft.Graph.GraphServiceClient(
graphHttp, authProvider);Para uma rota HTTP pública não autenticada, a lista de proxies HTTP fornece endereços candidatos para o WebProxy partilhado. A aplicação fornece tenantId, clientId e clientSecret através do tratamento de credenciais existente. O âmbito .default utiliza as permissões de aplicação configuradas para esse registo; uma rota não pode conceder permissões.
Leia as duas linhas de transporte como o par importante. HttpClientTransport(tokenHandler) transporta o pedido de token da credencial. GraphClientFactory.Create(proxy: proxy) mantém a construção do middleware HTTP do Graph SDK ao mesmo tempo que configura a sua rota de API.
Se o intermediário exigir autenticação, atribua a conta necessária à propriedade Credentials do objeto proxy. Mantenha os transportes que possui durante a vida útil do componente e liberte-os ao encerrar.
Utilize este padrão com a geração de SDK indicada. Os exemplos com HttpProvider e DelegateAuthenticationProvider pertencem a uma geração anterior e não podem ser misturados nesta cadeia de construtores.