Pozivi Graph API-ja i zahtevi za token ClientSecretCredential imaju odvojene ulazne tačke transporta. Uz Microsoft.Graph 5 i Azure.Identity, konfigurišite oba pre kreiranja klijenta:

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);

Za neautentifikovanu javnu HTTP rutu lista HTTP proxyja nudi kandidatske adrese za zajednički WebProxy. Aplikacija dostavlja tenantId, clientId i clientSecret kroz svoje postojeće rukovanje akreditivima. Opseg .default koristi dozvole aplikacije konfigurisane za tu registraciju; ruta ne može dodeliti dozvole.

Čitajte dva transportna reda kao važan par. HttpClientTransport(tokenHandler) prenosi zahtev za token akreditiva. GraphClientFactory.Create(proxy: proxy) zadržava konstrukciju HTTP middleware-a Graph SDK-a dok konfiguriše njegovu API rutu.

Ako posrednik zahteva autentifikaciju, dodelite potreban nalog svojstvu Credentials proxy objekta. Zadržite transportne objekte koje posedujete tokom životnog veka komponente i oslobodite ih pri gašenju.

Koristite ovaj obrazac uz navedenu generaciju SDK-a. Primeri sa HttpProvider i DelegateAuthenticationProvider pripadaju ranijoj generaciji i ne mogu se mešati u ovaj lanac konstruktora.

Povezani članci