يرسل طلب WinHTTP مصادقة إلى الوكيل، ثم يتلقى 401 من الموقع، ثم يحصل على 407 أخرى في الإرسال التالي. للوكيل وللموقع حالة مصادقة منفصلة، ومسار إعادة الإرسال يحتاج إلى الاحتفاظ بكليهما.

يحتفظ نموذج مصادقة WinHTTP الأصلي من مايكروسوفت بمخطط الوكيل المختار في متغير، ويعيد تطبيق حساب الوكيل قبل كل WinHttpSendRequest بعد اختيار ذلك المخطط.

  1. أرسل الطلب وافحص الاستجابة.
  2. عند 407، استعلم عن المخططات المعروضة وتذكّر مخطط الوكيل المختار.
  3. قبل إعادة الإرسال، استدعِ WinHttpSetCredentials بقيمة WINHTTP_AUTH_TARGET_PROXY بذلك المخطط والحساب.
  4. عند 401 من الوجهة، احصل على مخططها وعيّن بيانات اعتماد الخادم مع الاحتفاظ بحالة الوكيل المتذكَّرة للإرسال التالي.

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

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

إذا قدّم المستخدم حسابًا بديلًا بعد فشل، فحدّث القيم التي يستخدمها مسار إعادة الإرسال ذلك. فـWinHttpSetCredentials مرتبط بالطلب؛ وليس مخزنًا لكلمات المرور على مستوى العملية يُستبدل محتواه لكل الطلبات المستقبلية.

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