Apache HttpClient 4.2: 요청 컨텍스트에 프록시 AuthCache 유지하기
HttpClient 4.2 프록시 Basic 인증 캐시를 이후 요청이 사용하는 동일한 실행 컨텍스트에 유지합니다.
레거시 HttpClient 4.2.2 애플리케이션에서 자격 증명 공급자와 인증 캐시는 서로 다른 일을 합니다. 공급자는 계정을 제공하고, 캐시는 의도적으로 미리 구성한 인증 스킴이 다음 챌린지가 오기 전에 참여하도록 합니다.
프록시 전용인 예전 BasicScheme 생성자의 경우 전달 방식은 다음과 같습니다.
AuthCache cache = new BasicAuthCache();
cache.put(proxy, new BasicScheme(ChallengeState.PROXY));
HttpContext context = new BasicHttpContext();
context.setAttribute(ClientContext.AUTH_CACHE, cache);
HttpResponse response = client.execute(request, context);이 조각은 client에 이미 일치하는 프록시 경로와 자격 증명 공급자가 있다고 가정합니다. proxy는 그 HttpHost이고 request는 실제 작업입니다. 캐시 키는 목적지 웹사이트가 아니라 그 중개자를 설명해야 합니다.
값이 채워진 컨텍스트를 execute에 넘기십시오. 그것을 만든 뒤 다른 컨텍스트를 생성하는 오버로드를 사용하면 캐시가 교환 밖에 남습니다. 그 인증 상태를 공유해야 하는 이후 작업에서는 매번 빈 컨텍스트를 다시 만들지 말고 적절한 컨텍스트를 유지하십시오.
명시적 PROXY 상태는 이 오래된 API에 속합니다. TARGET은 목적지 인증에 관한 것입니다. 최신 HttpClient 세대는 패키지와 인증 API를 바꾸었으므로, 이것은 새 클라이언트용 레시피가 아니라 기존 4.2 코드를 위한 유지보수 지침으로 사용하십시오.
일반적인 챌린지 기반 교환도 여전히 올바를 수 있습니다. Basic 인증은 알려진 의도된 프록시에만 미리 심으십시오. 그리고 다음 작업이 연결을 필요로 하기 전에 각 응답을 소비하거나 해제하십시오. 유용한 결과는 요청을 실제로 보내는 실행에 연결된 계정과 캐시된 스킴입니다.