HttpClient 5로 RestTemplate 프록시 자격 증명 범위 지정
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 대상에서는 애플리케이션의 암호화된 HTTP 요청이 존재하기 전에 전송 계층이 CONNECT 중 프록시 챌린지에 응답할 수 있습니다. Proxy-Authorization을 추가하는 일반적인 대상 인터셉터는 그 협상과 동등하지 않습니다.
대상 계정은 별도로 구성하세요. 프록시가 여전히 요청을 거부하면 프록시가 알린 인증 스킴과 실제 호스트 및 포트를 유지하세요. 다른 엔드포인트에 범위가 지정된 자격 증명은 비밀번호가 맞다는 이유만으로 일치하지 않습니다.