Configurare un proxy per Microsoft Graph SDK v5 e Azure Identity
Configurare il trasporto di Graph API e il trasporto di ClientSecretCredential durante l'inizializzazione in modo che sia le richieste API sia quelle di token abbiano una route.
Le chiamate a Graph API e le richieste di token di ClientSecretCredential hanno punti di ingresso del trasporto separati. Con Microsoft.Graph 5 e Azure.Identity, configurare entrambi prima di creare il client:
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);Per una route HTTP pubblica non autenticata, la lista di proxy HTTP fornisce indirizzi candidati per il WebProxy condiviso. L'applicazione fornisce tenantId, clientId e clientSecret tramite la gestione esistente delle credenziali. L'ambito .default usa le autorizzazioni dell'applicazione configurate per quella registrazione; una route non può concedere autorizzazioni.
Leggere le due righe di trasporto come la coppia importante. HttpClientTransport(tokenHandler) trasporta la richiesta di token della credenziale. GraphClientFactory.Create(proxy: proxy) mantiene la costruzione dell'HTTP middleware di Graph SDK configurando al contempo la sua route API.
Se l'intermediario richiede l'autenticazione, assegnare l'account necessario alla proprietà Credentials dell'oggetto proxy. Conservare i trasporti di proprietà per tutta la durata del componente e rilasciarli allo spegnimento.
Usare questo schema con la generazione di SDK indicata. Gli esempi con HttpProvider e DelegateAuthenticationProvider appartengono a una generazione precedente e non possono essere mescolati in questa catena di costruttori.