ينتمي تسجيل الدخول إلى الوكيل إلى مزوّد بيانات الاعتماد الخاص بالنقل. مع Spring 6 وApache HttpClient 5، قيّد ذلك الحساب بالوسيط:

var proxy = new org.apache.hc.core5.http.HttpHost(
    "http", "proxy.example", 8080);
var credentials = new org.apache.hc.client5.http.impl.auth
    .BasicCredentialsProvider();
credentials.setCredentials(
    new org.apache.hc.client5.http.auth.AuthScope(proxy),
    new org.apache.hc.client5.http.auth.UsernamePasswordCredentials(
        proxyUser, proxyPassword.toCharArray()));

var http = org.apache.hc.client5.http.impl.classic.HttpClients.custom()
    .setProxy(proxy)
    .setDefaultCredentialsProvider(credentials)
    .build();
var factory = new org.springframework.http.client
    .HttpComponentsClientHttpRequestFactory(http);
var rest = new org.springframework.web.client.RestTemplate(factory);

يوفّر التطبيق القيمتين proxyUser وproxyPassword ويملك دورة حياة عميل HTTP. أعد استخدام rest لعبء العمل بدلاً من إنشاء قالب افتراضي آخر في موضع النداء.

يحدّ AuthScope من نطاق صلاحية بيانات الاعتماد هذه. يوفّر المثال بيانات اعتماد عادية لاسم مستخدم وكلمة مرور؛ ولا يفرض اسم BasicCredentialsProvider على كل تحدٍّ استخدام مخطط HTTP Basic.

مع وجهة HTTPS، يمكن للنقل الرد على تحدّي الوكيل أثناء CONNECT، قبل وجود طلب HTTP المشفّر للتطبيق. اعتراض وجهة عام يضيف Proxy-Authorization لا يعادل ذلك التفاوض.

اضبط أي حساب وجهة بشكل منفصل. إذا استمر الوكيل في رفض الطلب، فاحتفظ بمخطط المصادقة المعلن والمضيف والمنفذ الفعليين. لن تطابق بيانات اعتماد مقيّدة بنقطة نهاية أخرى لمجرد أن كلمة المرور صحيحة.

مقالات ذات صلة