Конфигуриране на прокси за Microsoft Graph SDK v5 и Azure Identity
Конфигурирайте транспорта на Graph API и транспорта на ClientSecretCredential при инициализация, така че и API заявките, и заявките за токен да имат маршрут.
Извикванията на Graph API и заявките за токен на ClientSecretCredential имат отделни входни точки за транспорт. С Microsoft.Graph 5 и Azure.Identity конфигурирайте и двете преди създаването на клиента:
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);За неудостоверен публичен HTTP маршрут списъкът с HTTP прокси сървъри предоставя кандидат адреси за споделения WebProxy. Приложението подава tenantId, clientId и clientSecret чрез съществуващата си обработка на идентификационни данни. Обхватът .default използва разрешенията на приложението, конфигурирани за тази регистрация; маршрутът не може да предоставя разрешения.
Четете двата транспортни реда като важната двойка. HttpClientTransport(tokenHandler) пренася заявката за токен на идентификационните данни. GraphClientFactory.Create(proxy: proxy) запазва изграждането на HTTP междинния софтуер на Graph SDK, като същевременно конфигурира своя API маршрут.
Ако посредникът изисква удостоверяване, задайте необходимия акаунт на свойството Credentials на прокси обекта. Запазете притежаваните транспорти за целия жизнен цикъл на компонента и ги освободете при спиране.
Използвайте този модел с посоченото поколение на SDK. Примерите с HttpProvider и DelegateAuthenticationProvider принадлежат на по-ранно поколение и не могат да се смесват в тази верига от конструктори.