Konfigurera en proxy för Microsoft Graph SDK v5 och Azure Identity
Konfigurera Graph API-transporten och ClientSecretCredential-transporten vid initieringen så att både API- och tokenbegäranden har en väg.
Graph API-anrop och tokenbegäranden från ClientSecretCredential har separata startpunkter för transporten. Med Microsoft.Graph 5 och Azure.Identity konfigurerar du båda innan klienten skapas:
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);För en oautentiserad publik HTTP-väg tillhandahåller HTTP-proxylistan kandidatadresser för den delade WebProxy-instansen. Programmet tillhandahåller tenantId, clientId och clientSecret via sin befintliga hantering av autentiseringsuppgifter. Omfånget .default använder de programbehörigheter som konfigurerats för den registreringen; en väg kan inte bevilja behörigheter.
Läs de två transportraderna som det viktiga paret. HttpClientTransport(tokenHandler) bär autentiseringsuppgiftens tokenbegäran. GraphClientFactory.Create(proxy: proxy) behåller Graph SDK:s konstruktion av HTTP-middleware medan den konfigurerar dess API-väg.
Om mellanhanden kräver autentisering tilldelar du det nödvändiga kontot till proxyobjektets Credentials. Behåll ägda transporter under komponentens livstid och frigör dem vid avstängning.
Använd det här mönstret med den angivna SDK-generationen. Exemplen med HttpProvider och DelegateAuthenticationProvider tillhör en tidigare generation och kan inte blandas in i denna konstruktorkedja.