Ograničite proxy vjerodajnice RestTemplatea uz HttpClient 5
Ograničite vjerodajnice Apache HttpClient 5 na proxy host i port prije nego transport predate Spring 6 RestTemplateu.
Prijava na proxy pripada davatelju vjerodajnica transporta. Uz Spring 6 i Apache HttpClient 5, ograničite taj račun na posrednika:
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);Aplikacija daje vrijednosti proxyUser i proxyPassword i posjeduje životni ciklus HTTP klijenta. Ponovno upotrijebite rest za radno opterećenje umjesto da na mjestu poziva izgradite još jedan zadani predložak.
AuthScope ograničava gdje su te vjerodajnice valjane. Primjer daje obične vjerodajnice korisničkog imena i lozinke; naziv BasicCredentialsProvider ne prisiljava svaki izazov na HTTP Basic shemu.
S HTTPS odredištem transport može odgovoriti na proxy izazov tijekom CONNECT, prije nego što zahtjev aplikacije bude šifriran. Opći presretač odredišta koji dodaje Proxy-Authorization nije jednak tom pregovaranju.
Konfigurirajte svaki račun odredišta zasebno. Ako proxy i dalje odbija zahtjev, zadržite njegovu objavljenu shemu autentifikacije te stvarni host i port. Vjerodajnice ograničene na drugu krajnju točku neće se podudarati samo zato što je lozinka ispravna.