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 যোগ করা সাধারণ গন্তব্য ইন্টারসেপ্টর সেই আলোচনার সমতুল্য নয়।
যেকোনো গন্তব্য অ্যাকাউন্ট আলাদাভাবে কনফিগার করুন। প্রক্সি যদি এখনও অনুরোধ প্রত্যাখ্যান করে, তবে তার ঘোষিত প্রমাণীকরণ স্কিম এবং কার্যকর হোস্ট ও পোর্ট সংরক্ষণ করুন। অন্য এন্ডপয়েন্টের জন্য সীমাবদ্ধ ক্রেডেনশিয়াল কেবল পাসওয়ার্ড সঠিক হওয়ার কারণে মিলবে না।