OkHttp Basic-proxyauthenticatie: stop afgewezen herhalingen
Gebruik de proxyAuthenticator van OkHttp voor proxy-uitdagingen en stop met het herhalen van een ongewijzigde autorisatiepoging.
Voor een HTTP-proxy die Basic-authenticatie biedt, kan de proxyAuthenticator van OkHttp een verzoek met inloggegevens teruggeven. Geef null terug nadat een autorisatiepoging al is afgewezen, in plaats van hetzelfde antwoord opnieuw te sturen:
.proxyAuthenticator { _, response ->
if (response.request.header("Proxy-Authorization") != null) {
null
} else {
response.request.newBuilder()
.header("Proxy-Authorization",
Credentials.basic(proxyUser, proxyPassword))
.build()
}
}
Deze schets gebruikt accountwaarden uit de geheime configuratie van de applicatie. De bewaking staat een eerste poging toe en stopt een herhaalde. Hij implementeert Basic, niet elk schema dat een proxy kan aankondigen; onderzoek de uitdaging voordat u dat antwoord kiest.
Als het eindresultaat 407 blijft, vergelijk dan de gekozen proxy, het aangekondigde schema en de gedocumenteerde accountidentiteit. Een afgewezen wachtwoord, een niet-ondersteunde methode en een onjuiste gebruikersnaamvorm vragen om verschillende correcties. Bewaar die observaties en de eindstatus in geredigeerde diagnostiek.
CONNECT heeft een andere callback-context: OkHttp documenteert een synthetische preemptieve proxy-authenticatie-uitdaging voordat de tunnel wordt geopend. Behandel die context volgens de API in plaats van aan te nemen dat elke callback een gewoon bestemmingsantwoord is.
De aparte authenticator is voor authenticatie bij de bestemmingsserver. Houd de inloggegevens gescheiden van de proxylogin; een generieke interceptor die een proxywachtwoord op elk uitgaand verzoek zet, kan het in de verkeerde scope versturen.
Historische rapporten beschrijven ook implementatiefouten, waaronder de afhandeling van een afgewezen proxyresponslichaam. Noteer de OkHttp-versie en de laatste uitwisseling voordat u een huidige fout aan een oud rapport toeschrijft. De herhalingsbeslissing moet nog steeds een ongewijzigde inlogpoging stoppen die geen nuttig nieuw antwoord heeft.