Go फ़ॉरवर्ड प्रॉक्सी में r.BasicAuth Authorization हेडर पढ़ता है, जो गंतव्य वेबसाइट के लॉगिन का होता है। प्रॉक्सी के अपने क्रेडेंशियल Proxy-Authorization में आते हैं।

एक छोटा अडैप्टर मूल अनुरोध बदले बिना सार्वजनिक पार्सर का पुनः उपयोग कर सकता है:

func proxyBasicAuth(r *http.Request) (string, string, bool) {
    headers := make(http.Header)
    headers.Set("Authorization", r.Header.Get("Proxy-Authorization"))
    return (&http.Request{Header: headers}).BasicAuth()
}

यह अंश net/http का उपयोग करता है। यह विश्लेषित मान और विश्लेषण की सफलता का संकेत लौटाता है; यह खाते को प्रमाणित नहीं करता। परिणाम प्रॉक्सी के इच्छित क्रेडेंशियल सत्यापक को दें।

यदि प्रमाणीकरण विफल हो, तो उपयुक्त Proxy-Authenticate चुनौती के साथ 407 लौटाएँ और उस अनुरोध का प्रसंस्करण रोक दें। गंतव्य से कनेक्शन खोलने या CONNECT टनल स्वीकार करने से पहले प्रमाणित करें।

क्रेडेंशियल स्वीकार करने के बाद, सामान्य अग्रेषण से पहले प्रॉक्सी का अपना Proxy-Authorization हेडर व्यय करें। मूल के लिए मूल Authorization फ़ील्ड सुरक्षित रखें। यदि ऊपरी पैरेंट प्रॉक्सी है, तो उसे यह क्लाइंट क्रेडेंशियल संयोगवश मिलने के बजाय अपनी सुविचारित प्रमाणीकरण व्यवस्था की आवश्यकता है।

संबंधित लेख