Panggilan Graph API dan permintaan token ClientSecretCredential memiliki titik masuk transport yang terpisah. Dengan Microsoft.Graph 5 dan Azure.Identity, konfigurasikan keduanya sebelum membuat klien:

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

Untuk rute HTTP publik tanpa autentikasi, daftar proksi HTTP menyediakan alamat kandidat untuk WebProxy bersama. Aplikasi menyediakan tenantId, clientId, dan clientSecret melalui penanganan kredensial yang sudah ada. Cakupan .default memakai izin aplikasi yang dikonfigurasi untuk pendaftaran itu; rute tidak dapat memberikan izin.

Baca kedua baris transport sebagai pasangan yang penting. HttpClientTransport(tokenHandler) membawa permintaan token kredensial. GraphClientFactory.Create(proxy: proxy) mempertahankan pembangunan middleware HTTP Graph SDK sekaligus mengonfigurasi rute API-nya.

Jika perantara memerlukan autentikasi, tetapkan akun yang diperlukan ke properti Credentials objek proksi. Pertahankan transport yang Anda miliki selama masa hidup komponen dan lepaskan saat dimatikan.

Gunakan pola ini dengan generasi SDK yang disebutkan. Contoh dengan HttpProvider dan DelegateAuthenticationProvider termasuk generasi sebelumnya dan tidak dapat dicampur ke dalam rantai konstruktor ini.

Artikel terkait