לקריאות 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 middleware של Graph SDK ובמקביל מגדיר את נתיב ה-API שלו.

אם המתווך דורש אימות, הקצו את החשבון הנדרש למאפיין Credentials של אובייקט הפרוקסי. שמרו על תעבורות בבעלותכם לאורך חיי הרכיב ושחררו אותן בכיבוי.

השתמשו בתבנית זו עם דור ה-SDK הנקוב. דוגמאות עם HttpProvider ו-DelegateAuthenticationProvider שייכות לדור קודם ואינן ניתנות לערבוב בשרשרת הבנאים הזו.

מאמרים קשורים