Graph API-kall og tokenforespørsler fra ClientSecretCredential har separate transportinngangspunkter. Med Microsoft.Graph 5 og Azure.Identity konfigurerer du begge før klienten bygges:

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

For en uautentisert offentlig HTTP-rute gir listen over HTTP-proxier kandidatadresser for den delte WebProxy. Applikasjonen leverer tenantId, clientId og clientSecret gjennom sin eksisterende håndtering av legitimasjon. Området .default bruker applikasjonstillatelsene som er konfigurert for den registreringen; en rute kan ikke gi tillatelser.

Les de to transportlinjene som det viktige paret. HttpClientTransport(tokenHandler) bærer tokenforespørselen til legitimasjonen. GraphClientFactory.Create(proxy: proxy) beholder oppbyggingen av HTTP-midtvare i Graph SDK og konfigurerer samtidig API-ruten.

Hvis mellomleddet krever autentisering, tilordner du den nødvendige kontoen til egenskapen Credentials på proxyobjektet. Behold egne transporter gjennom komponentens levetid og frigjør dem ved avslutning.

Bruk dette mønsteret med den angitte SDK-generasjonen. Eksempler med HttpProvider og DelegateAuthenticationProvider tilhører en tidligere generasjon og kan ikke blandes inn i denne konstruktørkjeden.

Relaterte artikler