Các lệnh gọi Graph API và yêu cầu token của ClientSecretCredential có các điểm vào transport riêng biệt. Với Microsoft.Graph 5 và Azure.Identity, hãy cấu hình cả hai trước khi tạo client:

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

Đối với tuyến HTTP công khai không cần xác thực, danh sách proxy HTTP cung cấp các địa chỉ ứng viên cho WebProxy dùng chung. Ứng dụng cung cấp tenantId, clientId và clientSecret thông qua phần xử lý thông tin xác thực hiện có. Phạm vi .default dùng các quyền ứng dụng đã cấu hình cho đăng ký đó; một tuyến không thể cấp quyền.

Hãy đọc hai dòng transport như cặp quan trọng. HttpClientTransport(tokenHandler) mang yêu cầu token của thông tin xác thực. GraphClientFactory.Create(proxy: proxy) giữ nguyên việc dựng middleware HTTP của Graph SDK đồng thời cấu hình tuyến API của nó.

Nếu bên trung gian yêu cầu xác thực, hãy gán tài khoản cần thiết cho Credentials của đối tượng proxy. Giữ các transport thuộc sở hữu trong suốt vòng đời của thành phần và giải phóng chúng khi tắt.

Dùng mẫu này với thế hệ SDK đã nêu. Các ví dụ HttpProvider và DelegateAuthenticationProvider thuộc thế hệ trước và không thể trộn vào chuỗi hàm tạo này.

Bài viết liên quan