HttpClient 5 के साथ RestTemplate प्रॉक्सी क्रेडेंशियल सीमित करें
Spring 6 RestTemplate को ट्रांसपोर्ट देने से पहले Apache HttpClient 5 क्रेडेंशियल को प्रॉक्सी होस्ट और पोर्ट तक सीमित करें।
प्रॉक्सी लॉगिन ट्रांसपोर्ट के क्रेडेंशियल प्रदाता का हिस्सा है। 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 जोड़ने वाला सामान्य गंतव्य इंटरसेप्टर उस बातचीत के बराबर नहीं है।
किसी भी गंतव्य खाते को अलग से कॉन्फ़िगर करें। यदि प्रॉक्सी अब भी अनुरोध अस्वीकार करता है, तो उसकी घोषित प्रमाणीकरण स्कीम तथा प्रभावी होस्ट और पोर्ट बनाए रखें। किसी अन्य एंडपॉइंट के लिए सीमित क्रेडेंशियल केवल इसलिए मेल नहीं खाएगा कि पासवर्ड सही है।