MSAL.NET có thể lấy phương thức vận chuyển HTTP từ IMsalHttpClientFactory. Bọc một máy khách được cấu hình cho proxy:

sealed class TokenHttpFactory : IMsalHttpClientFactory
{
    private readonly HttpClient client;

    public TokenHttpFactory(HttpClient client)
    {
        this.client = client;
    }

    public HttpClient GetHttpClient() => client;
}

Tạo trình xử lý và máy khách một lần cho vòng đời ứng dụng, sau đó gắn factory trong quá trình cấu hình trình tạo MSAL hiện có:

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

Trình tạo là trình tạo ứng dụng MSAL hiện có của ứng dụng; giữ nguyên thẩm quyền, đăng ký máy khách và cấu hình thông tin xác thực của nó. Đối với tuyến thẩm quyền HTTPS được cho phép và công khai không có tài khoản proxy, một địa chỉ HTTP từ danh sách proxy HTTP có thể điền vào WebProxy ví dụ. Cấu hình thông tin xác thực proxy trên WebProxy khi cần.

Factory phải an toàn luồng. Dùng lại máy khách thay vì tạo mới trong mỗi lần gọi GetHttpClient. MSAL không hủy máy khách được cung cấp; chủ sở hữu của nó quản lý vòng đời đó.

Điều này kiểm soát các yêu cầu HTTP của MSAL. Đăng nhập tương tác có thể mở trình duyệt có mạng riêng. Vì vậy đăng nhập trình duyệt thành công không chứng minh rằng máy khách HTTP của token đi cùng tuyến.

Bài viết liên quan