RestTemplate-proxybewyse met HttpClient 5 beperk
Beperk Apache HttpClient 5-bewyse tot die proxy-gasheer en -poort voordat die transport aan 'n Spring 6 RestTemplate gegee word.
Aanmelding by 'n proxy hoort by die transport se geloofwaardigheidsverskaffer. Vir Spring 6 met Apache HttpClient 5 moet daardie rekening tot die tussenganger beperk word:
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);Die toepassing verskaf die waardes proxyUser en proxyPassword en bestuur die HTTP-kliënt se lewensiklus. Hergebruik rest vir die werklas eerder as om by die aanroeplek nog 'n verstek-sjabloon te bou.
AuthScope beperk waar hierdie geloofwaardigheid geldig is. Die voorbeeld gebruik gewone gebruikersnaam/wagwoord-geloofwaardighede; die naam BasicCredentialsProvider dwing nie elke uitdaging om die HTTP Basic-skema te gebruik nie.
Met 'n HTTPS-bestemming kan die transport 'n proxy-uitdaging tydens CONNECT beantwoord, voordat die toepassing se versleutelde HTTP-versoek bestaan. 'n Algemene bestemmingsinterceptor wat Proxy-Authorization byvoeg, is nie gelyk aan daardie onderhandeling nie.
Stel enige bestemmingsrekening apart op. As die proxy die versoek steeds verwerp, behou sy aangekondigde verifikasiemetode en die effektiewe gasheer en poort. 'n Beperkte geloofwaardigheid vir 'n ander eindpunt sal nie pas bloot omdat die wagwoord korrek is nie.