Konfigurowanie serwera proxy dla Microsoft Graph SDK v5 i Azure Identity
Skonfiguruj transport Graph API oraz transport ClientSecretCredential podczas inicjalizacji, aby zarówno żądania API, jak i żądania tokenu miały trasę.
Wywołania Graph API i żądania tokenu ClientSecretCredential mają osobne punkty wejścia transportu. W przypadku Microsoft.Graph 5 i Azure.Identity skonfiguruj oba przed utworzeniem klienta:
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);Dla nieuwierzytelnionej publicznej trasy HTTP lista serwerów proxy HTTP udostępnia adresy kandydujące dla wspólnego WebProxy. Aplikacja przekazuje tenantId, clientId i clientSecret przez istniejącą obsługę poświadczeń. Zakres .default używa uprawnień aplikacji skonfigurowanych dla tej rejestracji; trasa nie może przyznawać uprawnień.
Odczytuj dwa wiersze transportu jako ważną parę. HttpClientTransport(tokenHandler) przenosi żądanie tokenu poświadczenia. GraphClientFactory.Create(proxy: proxy) zachowuje konstrukcję oprogramowania pośredniczącego HTTP zestawu Graph SDK, jednocześnie konfigurując jego trasę API.
Jeśli pośrednik wymaga uwierzytelniania, przypisz wymagane konto do właściwości Credentials obiektu proxy. Zachowaj posiadane transporty przez cały okres życia składnika i zwolnij je przy zamykaniu.
Używaj tego wzorca z podaną generacją zestawu SDK. Przykłady z HttpProvider i DelegateAuthenticationProvider należą do wcześniejszej generacji i nie można ich mieszać w tym łańcuchu konstruktorów.