Configurar un proxy para Microsoft Graph SDK v5 y Azure Identity
Configure el transporte de Graph API y el transporte de ClientSecretCredential durante la inicialización para que tanto las solicitudes de API como las de token tengan una ruta.
Las llamadas a Graph API y las solicitudes de token de ClientSecretCredential tienen puntos de entrada de transporte independientes. Con Microsoft.Graph 5 y Azure.Identity, configure ambos antes de crear el 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 una ruta HTTP pública sin autenticar, la lista de proxies HTTP ofrece direcciones candidatas para el WebProxy compartido. La aplicación proporciona tenantId, clientId y clientSecret mediante su gestión de credenciales existente. El ámbito .default utiliza los permisos de aplicación configurados para ese registro; una ruta no puede conceder permisos.
Lea las dos líneas de transporte como el par importante. HttpClientTransport(tokenHandler) transporta la solicitud de token de la credencial. GraphClientFactory.Create(proxy: proxy) mantiene la construcción del middleware HTTP del Graph SDK mientras configura su ruta de API.
Si el intermediario requiere autenticación, asigne la cuenta necesaria a la propiedad Credentials del objeto proxy. Conserve los transportes propios durante la vida útil del componente y libérelos al apagar.
Utilice este patrón con la generación de SDK indicada. Los ejemplos con HttpProvider y DelegateAuthenticationProvider pertenecen a una generación anterior y no pueden mezclarse en esta cadena de constructores.