Настройка прокси для 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 относятся к более раннему поколению и не могут быть смешаны в этой цепочке конструкторов.