Osnovna proxy avtentikacija v OkHttp: ustavite zavrnjene ponovitve
Uporabite proxyAuthenticator v OkHttp za izzive proxy in prenehajte s ponavljanjem nespremenjenega poskusa avtorizacije.
Za HTTP proxy, ki ponuja osnovno avtentikacijo, lahko proxyAuthenticator v OkHttp vrne zahtevo s poverilnicami. Vrnite null po tem, ko je bil poskus avtorizacije že zavrnjen, namesto da bi znova poslali isti odgovor:
.proxyAuthenticator { _, response ->
if (response.request.header("Proxy-Authorization") != null) {
null
} else {
response.request.newBuilder()
.header("Proxy-Authorization",
Credentials.basic(proxyUser, proxyPassword))
.build()
}
}
Ta skica uporablja vrednosti računa iz tajne konfiguracije aplikacije. Varovalo dovoli prvi poskus in ustavi ponovljenega. Izvaja Basic, ne vsake sheme, ki jo lahko proxy oglašuje; preglejte izziv, preden izberete ta odgovor.
Če končni rezultat ostane 407, primerjajte izbrani proxy, oglašeno shemo in dokumentirano identiteto računa. Zavrnjeno geslo, nepodprta metoda in napačna oblika uporabniškega imena zahtevajo različne popravke. Te ugotovitve in končno stanje shranite v redigirani diagnostiki.
CONNECT ima drugačen kontekst povratnega klica: OkHttp dokumentira sintetičen preventivni izziv proxy avtentikacije pred odprtjem tunela. S tem kontekstom ravnajte v skladu z API-jem, namesto da bi domnevali, da je vsak povratni klic običajen odgovor cilja.
Ločeni authenticator je za avtentikacijo pri ciljnem strežniku. Njegove poverilnice hranite ločeno od prijave v proxy; splošni prestreznik, ki vstavi geslo proxy v vsako odhodno zahtevo, ga lahko pošlje v napačnem obsegu.
Zgodovinska poročila opisujejo tudi napake pri izvedbi, vključno z obdelavo telesa zavrnjenega odgovora proxy. Zabeležite različico OkHttp in zadnjo izmenjavo, preden trenutno napako pripišete staremu poročilu. Odločitev o ponovitvi bi morala še vedno ustaviti nespremenjen poskus s poverilnicami, ki nima nobenega koristnega novega odgovora.