فراخوانی‌های 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 به نسل پیشین تعلق دارند و نمی‌توان آن‌ها را در این زنجیره سازنده گنجاند.

مقالات مرتبط