प्रॉक्सी का पता Emacs को बताता है कि कहाँ जुड़ना है। उसका लॉगिन बातचीत का दूसरा हिस्सा है। साधारण HTTP अनुरोध के लिए, Emacs की URL लाइब्रेरी प्रॉक्सी की प्रमाणीकरण चुनौती का उत्तर दे सकती है, auth-source से क्रेडेंशियल प्राप्त कर सकती है या संवादात्मक रूप से पूछ सकती है, और सत्र में रखे क्रेडेंशियल का फिर से उपयोग कर सकती है।

नीचे दिए विवरण Emacs 31.1 का अनुसरण करते हैं। वे URL लाइब्रेरी का उपयोग करने वाले संचालनों से संबंधित हैं; Emacs पैकेज द्वारा शुरू किया गया बाहरी डाउनलोडर अपना अलग प्रमाणीकरण पथ रखता है।

मार्ग तय करें, फिर HTTP को लॉगिन माँगने दें

एक निश्चित प्रॉक्सी एंडपॉइंट दस्तावेज़ित विकल्प से चुना जा सकता है:

(setq url-proxy-services
      '(("http" . "proxy.example:8080")
        ("https" . "proxy.example:8080")))

प्लेसहोल्डर को दिए गए एंडपॉइंट से बदलें। कुंजियाँ गंतव्य URL स्कीमों का वर्णन करती हैं। HTTPS प्रविष्टि जोड़ना HTTPS गंतव्यों के लिए मार्ग चुनता है; यह स्वयं क्रेडेंशियल नहीं देता।

साधारण HTTP अनुरोध के दौरान, प्रॉक्सी 407 Proxy Authentication Required और Proxy-Authenticate चुनौती के साथ उत्तर दे सकता है। URL लाइब्रेरी समर्थित प्रमाणीकरण स्कीम चुनती है और प्रॉक्सी एंडपॉइंट के लिए क्रेडेंशियल प्राप्त करती है। फिर यह Proxy-Authorization के साथ पुनः प्रयास करती है।

Basic प्रमाणीकरण के लिए, उपयुक्त क्रेडेंशियल उपलब्ध न होने पर संवादात्मक अनुरोध उपयोगकर्ता नाम और पासवर्ड माँग सकता है। गैर-संवादात्मक चिह्नित अनुरोध उन संकेतों पर निर्भर नहीं कर सकता। प्रॉक्सी लॉगिन गंतव्य वेबसाइट के लॉगिन से भी अलग है: वेबसाइट की 401 चुनौती अलग मार्ग अपनाती है।

स्थायी क्रेडेंशियल auth-source में रखें

यदि auth-source पहले से ~/.authinfo.gpg जैसी एन्क्रिप्टेड क्रेडेंशियल फ़ाइल पढ़ता है, तो इस उदाहरण के लिए Basic प्रविष्टि का रूप इस प्रकार है:

machine proxy.example port http login YOUR_LOGIN password YOUR_PASSWORD

अपना वास्तविक खाता और रहस्य उपयोग करें, और सुनिश्चित करें कि फ़ाइल आपके कॉन्फ़िगर किए गए auth-sources में है। यह पंक्ति मेल खाने वाले फ़ील्ड दर्शाती है; यह आपकी Lisp आरंभीकरण फ़ाइल में पासवर्ड रखने का निर्देश नहीं है।

Emacs 31.1 के Basic कार्यान्वयन में दो बातें महत्वपूर्ण हैं। यह प्रॉक्सी का होस्टनाम संख्यात्मक TCP पोर्ट के बिना खोजता है, और प्रॉक्सी URL की स्कीम को auth-source के पोर्ट मान के रूप में भेजता है। इस HTTP प्रॉक्सी के लिए वह मान http है, हालाँकि TCP कनेक्शन पोर्ट 8080 उपयोग करता है।

इस खोज में चुनौती का realm या संख्यात्मक प्रॉक्सी पोर्ट शामिल नहीं है। एक ही होस्टनाम पर कई realm या प्रॉक्सी पोर्ट के लिए यह अलग Basic पासवर्ड चुनेगा ऐसी अपेक्षा न रखें। Digest भिन्न होस्ट खोज उपयोग करता है, इसलिए ऊपर का उदाहरण विशेष रूप से Basic के लिए है।

URL लाइब्रेरी अपना अलग प्रमाणीकरण कैश भी रखती है। इसकी Basic प्रविष्टियाँ प्रॉक्सी एंडपॉइंट अलग करती हैं और एंडपॉइंट के भीतर realm या निर्देशिका मिलान उपयोग करती हैं; वह कैश auth-source खोज से अलग है। संकेत पर पासवर्ड टाइप करने से आपकी स्थायी क्रेडेंशियल फ़ाइल में नई प्रविष्टि सहेजे बिना सत्र कैश भर सकता है।

HTTPS में पहले का प्रमाणीकरण चरण है

HTTP प्रॉक्सी के माध्यम से HTTPS गंतव्य के लिए, Emacs पहले CONNECT भेजता है। इसलिए वेबसाइट के एन्क्रिप्टेड कनेक्शन तक पहुँचने से पहले प्रमाणीकरण आवश्यक हो सकता है।

Emacs 31.1 में, CONNECT अनुरोध निर्माता अपने प्रमाणीकरण तंत्र के माध्यम से पहले से उपलब्ध प्रमाणीकरण जाँचता है, जिसमें कैश किए गए Basic क्रेडेंशियल शामिल हैं। उसका Basic पथ उस समय नई auth-source प्रविष्टि न माँगता है न लाता है। 200 के अतिरिक्त CONNECT प्रतिक्रिया भी ऊपर वर्णित सामान्य HTTP 407 चुनौती हैंडलर में प्रवेश नहीं करती।

इसलिए, सामान्य HTTP Basic चुनौती का उत्तर दे सकने वाली auth-source प्रविष्टि यह गारंटी नहीं देती कि नए सत्र का पहला HTTPS अनुरोध सफलतापूर्वक प्रमाणित होगा। उपयुक्त कैश किए गए क्रेडेंशियल वाले सत्र की आरंभिक स्थिति भिन्न होती है। उसी पासवर्ड प्रविष्टि को बार-बार संपादित करना अपने आप दोनों पथों के बीच यह अंतर नहीं हटा सकता।

यदि कोई HTTPS संचालन प्रॉक्सी पर रुक जाए, तो निर्धारित करें कि CONNECT को 407 मिला या नहीं और क्या आप इस संस्करण का व्यवहार उपयोग कर रहे हैं। प्रॉक्सी द्वारा दी जाने वाली प्रमाणीकरण स्कीम की भी पुष्टि करें। Basic क्रेडेंशियल प्रविष्टि हर एंटरप्राइज़ प्रमाणीकरण प्रणाली के लिए सार्वभौमिक एडाप्टर नहीं है।

स्थायी कॉन्फ़िगरेशन सार्वजनिक प्रॉक्सी विकल्प में और अपने चुने हुए क्रेडेंशियल बैकएंड में रखें। URL लाइब्रेरी का आंतरिक Basic संग्रह इस व्यवहार को समझने के लिए उपयोगी है, लेकिन उस निजी डेटा संरचना को हाथ से भरने से सेटअप कार्यान्वयन विवरणों से बँध जाएगा।

संबंधित लेख