Configurar un proxy para Microsoft Graph SDK v5 e Azure Identity
Configure o transporte de Graph API e o transporte de ClientSecretCredential durante a inicialización para que tanto as solicitudes de API como as de token teñan unha ruta.
As chamadas a Graph API e as solicitudes de token de ClientSecretCredential teñen puntos de entrada de transporte independentes. Con Microsoft.Graph 5 e Azure.Identity, configure ambos antes de crear 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 unha ruta HTTP pública sen autenticar, a lista de proxies HTTP ofrece enderezos candidatos para o WebProxy compartido. A aplicación fornece tenantId, clientId e clientSecret mediante a súa xestión de credenciais existente. O ámbito .default utiliza os permisos de aplicación configurados para ese rexistro; unha ruta non pode conceder permisos.
Lea as dúas liñas de transporte como o par importante. HttpClientTransport(tokenHandler) transporta a solicitude de token da credencial. GraphClientFactory.Create(proxy: proxy) mantén a construción do middleware HTTP do Graph SDK mentres configura a súa ruta de API.
Se o intermediario require autenticación, asigne a conta necesaria á propiedade Credentials do obxecto proxy. Conserve os transportes propios durante a vida útil do compoñente e libéreos ao apagar.
Use este patrón coa xeración de SDK indicada. Os exemplos con HttpProvider e DelegateAuthenticationProvider pertencen a unha xeración anterior e non se poden mesturar nesta cadea de construtores.