Ograničite proxy akreditive RestTemplate uz HttpClient 5
Ograničite akreditive Apache HttpClient 5 na proxy host i port prije nego transport predate Spring 6 RestTemplate-u.
Prijava na proxy pripada dobavljaču akreditiva transporta. Za Spring 6 s 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. Ponovo koristite rest za radno opterećenje umjesto da na mjestu poziva gradite još jedan zadani predložak.
AuthScope ograničava gdje su ove akreditive važeće. Primjer daje obične akreditive s korisničkim imenom i lozinkom; naziv BasicCredentialsProvider ne prisiljava svaki izazov na HTTP Basic šemu.
S HTTPS odredištem transport može odgovoriti na proxy izazov tokom CONNECT, prije nego što zahtjev aplikacije bude šifriran. Opći interceptor odredišta koji dodaje Proxy-Authorization nije ekvivalentan tom pregovaranju.
Konfigurirajte svaki račun odredišta zasebno. Ako proxy i dalje odbija zahtjev, zadržite njegovu oglašenu šemu autentifikacije te stvarni host i port. Ograničene akreditive za drugu krajnju točku neće se podudarati samo zato što je lozinka ispravna.