Begræns RestTemplate-proxyoplysninger med HttpClient 5
Begræns Apache HttpClient 5-legitimationsoplysninger til proxyens vært og port, før transporten gives til en Spring 6 RestTemplate.
Et proxylogin tilhører transportens legitimationsudbyder. Med Spring 6 og Apache HttpClient 5 skal du begrænse den konto til mellemleddet:
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);Applikationen leverer værdierne proxyUser og proxyPassword og ejer HTTP-klientens livscyklus. Genbrug rest til arbejdsbyrden i stedet for at oprette en ny standardskabelon på kaldstedet.
AuthScope begrænser, hvor disse oplysninger er gyldige. Eksemplet leverer almindelige brugernavn/adgangskode-oplysninger; navnet BasicCredentialsProvider tvinger ikke hver udfordring til at bruge HTTP Basic-skemaet.
Med en HTTPS-destination kan transporten besvare en proxyudfordring under CONNECT, før applikationens krypterede HTTP-anmodning findes. En generisk destinationsinterceptor, der tilføjer Proxy-Authorization, svarer ikke til den forhandling.
Konfigurer enhver destinationskonto separat. Hvis proxyen stadig afviser anmodningen, skal du bevare dens annoncerede godkendelsesskema samt den effektive vært og port. Oplysninger begrænset til et andet endpoint matcher ikke blot, fordi adgangskoden er korrekt.