Սահմանափակել RestTemplate-ի պրոքսի հավատարմագրերը HttpClient 5-ով
Սահմանափակեք Apache HttpClient 5-ի հավատարմագրերը պրոքսի հոսթով և պորտով՝ նախքան տրանսպորտը Spring 6 RestTemplate-ին տալը։
Պրոքսի մուտքը պատկանում է տրանսպորտի հավատարմագրերի մատակարարին։ 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, համարժեք չէ այդ բանակցությանը։
Ցանկացած նպատակակետային հաշիվ կարգավորեք առանձին։ Եթե պրոքսին դեռ մերժում է հարցումը, պահպանեք նրա հայտարարած նույնականացման սխեման և փաստացի հոսթն ու պորտը։ Այլ վերջնակետի համար սահմանափակված հավատարմագիրը չի համապատասխանի միայն այն պատճառով, որ գաղտնաբառը ճիշտ է։