OkHttp Basic 프록시 인증: 거부된 재시도를 멈추기
OkHttp의 proxyAuthenticator를 프록시 챌린지에 사용하고 변경되지 않은 인증 시도를 반복하지 마세요.
Basic 인증을 제공하는 HTTP 프록시의 경우 OkHttp의 proxyAuthenticator가 자격 증명을 담은 요청을 반환할 수 있습니다. 인증 시도가 이미 거부된 뒤에는 같은 응답을 다시 보내지 말고 null를 반환하세요:
.proxyAuthenticator { _, response ->
if (response.request.header("Proxy-Authorization") != null) {
null
} else {
response.request.newBuilder()
.header("Proxy-Authorization",
Credentials.basic(proxyUser, proxyPassword))
.build()
}
}
이 스케치는 애플리케이션의 비밀 구성에 있는 계정 값을 사용합니다. 가드는 첫 시도를 허용하고 반복 시도를 멈춥니다. Basic을 구현하며 프록시가 알릴 수 있는 모든 스킴은 아닙니다. 그 응답을 선택하기 전에 챌린지를 확인하세요.
최종 결과가 여전히 407이라면 선택한 프록시, 알려진 스킴, 문서화된 계정 ID를 비교하세요. 거부된 비밀번호, 지원되지 않는 방식, 잘못된 사용자 이름 형식은 각기 다른 수정이 필요합니다. 그 관찰과 최종 상태는 삭제 처리된 진단에 남기세요.
CONNECT에는 다른 콜백 컨텍스트가 있습니다. OkHttp는 터널을 열기 전에 합성된 선제적 프록시 인증 챌린지를 문서화합니다. 모든 콜백이 일반적인 목적지 응답이라고 가정하지 말고 API에 따라 그 컨텍스트를 처리하세요.
별도의 authenticator는 목적지 서버 인증을 위한 것입니다. 그 자격 증명은 프록시 로그인과 분리하세요. 모든 발신 요청에 프록시 비밀번호를 넣는 범용 인터셉터는 잘못된 범위로 보낼 수 있습니다.
과거 보고서는 거부된 프록시 응답 본문 처리 등 구현 버그도 설명합니다. 현재의 실패를 오래된 보고서에 연결하기 전에 OkHttp 버전과 최종 교환을 기록하세요. 재시도 결정은 유용한 새 응답이 없는 변경되지 않은 자격 증명 시도를 여전히 멈춰야 합니다.