OkHttp Basic proxy-autentisering: stopp avviste gjentakelser
Bruk OkHttps proxyAuthenticator for proxy-utfordringer og slutt å gjenta et uendret autorisasjonsforsøk.
For en HTTP-proxy som tilbyr Basic-autentisering, kan OkHttps proxyAuthenticator returnere en forespørsel med legitimasjon. Returner null etter at et autorisasjonsforsøk allerede er avvist, i stedet for å sende det samme svaret på nytt:
.proxyAuthenticator { _, response ->
if (response.request.header("Proxy-Authorization") != null) {
null
} else {
response.request.newBuilder()
.header("Proxy-Authorization",
Credentials.basic(proxyUser, proxyPassword))
.build()
}
}
Denne skissen bruker kontoverdier fra applikasjonens hemmelige konfigurasjon. Vakten tillater et første forsøk og stopper et gjentatt. Den implementerer Basic, ikke hvert opplegg en proxy kan annonsere; undersøk utfordringen før du velger det svaret.
Hvis sluttresultatet fortsatt er 407, sammenlign den valgte proxyen, det annonserte opplegget og den dokumenterte kontoidentiteten. Et avvist passord, en metode som ikke støttes og en feil brukernavnform krever ulike rettelser. Ta vare på disse observasjonene og sluttstatusen i redigerte diagnostikker.
CONNECT har en annen tilbakeringingskontekst: OkHttp dokumenterer en syntetisk foregripende proxy-autentiseringsutfordring før tunnelen åpnes. Håndter den konteksten i henhold til API-et i stedet for å anta at hver tilbakeringing er et vanlig destinasjonssvar.
Den separate authenticator er for autentisering mot destinasjonsserveren. Hold legitimasjonen atskilt fra proxy-innloggingen; en generisk interceptor som setter et proxy-passord på hver utgående forespørsel kan sende det i feil omfang.
Historiske rapporter beskriver også implementeringsfeil, inkludert håndtering av avviste proxy-svarslegemer. Registrer OkHttp-versjonen og den siste utvekslingen før du tilskriver en nåværende feil en gammel rapport. Gjentakelsesbeslutningen bør fortsatt stoppe et uendret legitimasjonsforsøk som ikke har noe nyttig nytt svar.