به MSAL.NET یک کلاینت پروکسی قابل استفاده مجدد بدهید
IMsalHttpClientFactory را پیرامون یک HttpClient مشترک و آگاه از پروکسی پیاده کنید و آن را به سازنده برنامه MSAL متصل کنید.
MSAL.NET میتواند انتقال HTTP خود را از IMsalHttpClientFactory بگیرد. کلاینتی را که برای پروکسی پیکربندی شده است بپیچید:
sealed class TokenHttpFactory : IMsalHttpClientFactory
{
private readonly HttpClient client;
public TokenHttpFactory(HttpClient client)
{
this.client = client;
}
public HttpClient GetHttpClient() => client;
}هندلر و کلاینت را یک بار برای عمر برنامه ایجاد کنید، سپس کارخانه را در طول پیکربندی موجود سازنده MSAL متصل کنید:
var proxy = new WebProxy("http://proxy.example:8080");
var handler = new HttpClientHandler { Proxy = proxy, UseProxy = true };
var tokenHttp = new HttpClient(handler);
builder.WithHttpClientFactory(new TokenHttpFactory(tokenHttp));سازنده همان سازنده موجود برنامه MSAL است؛ اختیار، ثبت کلاینت و پیکربندی اعتبارنامههای آن را حفظ کنید. برای یک مسیر اختیار HTTPS مجاز و عمومی بدون حساب پروکسی، یک نشانی HTTP از فهرست پروکسی HTTP میتواند WebProxy نمونه را پر کند. در صورت نیاز اعتبارنامههای پروکسی را روی WebProxy پیکربندی کنید.
کارخانه باید ایمن برای رشته باشد. به جای ساختن یک کلاینت در هر فراخوانی GetHttpClient، از همان کلاینت دوباره استفاده کنید. MSAL کلاینت ارائهشده را دور نمیاندازد؛ مالک آن این عمر را مدیریت میکند.
این درخواستهای HTTP مربوط به MSAL را کنترل میکند. ورود تعاملی ممکن است مرورگری باز کند که شبکه آن جداست. بنابراین ورود موفق در مرورگر ثابت نمیکند که کلاینت HTTP توکن همان مسیر را دارد.