Configurarea unui proxy pentru Microsoft Graph SDK v5 și Azure Identity
Configurați transportul Graph API și transportul ClientSecretCredential în timpul inițializării, astfel încât atât cererile API, cât și cererile de token să aibă o rută.
Apelurile Graph API și cererile de token ale ClientSecretCredential au puncte de intrare de transport separate. Cu Microsoft.Graph 5 și Azure.Identity, configurați ambele înainte de a crea clientul:
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);Pentru o rută HTTP publică neautentificată, lista de proxy HTTP oferă adrese candidate pentru WebProxy partajat. Aplicația furnizează tenantId, clientId și clientSecret prin gestionarea existentă a acreditărilor. Domeniul .default folosește permisiunile aplicației configurate pentru acea înregistrare; o rută nu poate acorda permisiuni.
Citiți cele două linii de transport ca perechea importantă. HttpClientTransport(tokenHandler) transportă cererea de token a acreditării. GraphClientFactory.Create(proxy: proxy) păstrează construcția middleware-ului HTTP al Graph SDK și configurează în același timp ruta API a acestuia.
Dacă intermediarul necesită autentificare, atribuiți contul necesar proprietății Credentials a obiectului proxy. Păstrați transporturile deținute pe toată durata de viață a componentei și eliberați-le la oprire.
Utilizați acest model cu generația SDK indicată. Exemplele cu HttpProvider și DelegateAuthenticationProvider aparțin unei generații anterioare și nu pot fi combinate în acest lanț de constructori.