OkHttp Basic starpniekservera autentifikācija: apturiet noraidītos atkārtojumus
Izmantojiet OkHttp proxyAuthenticator starpniekservera izaicinājumiem un pārtrauciet nemainīta autorizācijas mēģinājuma atkārtošanu.
HTTP starpniekserverim, kas piedāvā Basic autentifikāciju, OkHttp proxyAuthenticator var atgriezt pieprasījumu ar akreditācijas datiem. Atgrieziet null pēc tam, kad autorizācijas mēģinājums jau ir noraidīts, tā vietā, lai vēlreiz sūtītu to pašu atbildi:
.proxyAuthenticator { _, response ->
if (response.request.header("Proxy-Authorization") != null) {
null
} else {
response.request.newBuilder()
.header("Proxy-Authorization",
Credentials.basic(proxyUser, proxyPassword))
.build()
}
}
Šī skice izmanto konta vērtības no lietotnes slepenās konfigurācijas. Aizsargs pieļauj pirmo mēģinājumu un aptur atkārtotu. Tā realizē Basic, nevis katru shēmu, ko starpniekserveris var paziņot; pārbaudiet izaicinājumu pirms šīs atbildes izvēles.
Ja gala rezultāts joprojām ir 407, salīdziniet izvēlēto starpniekserveri, paziņoto shēmu un dokumentēto konta identitāti. Noraidīta parole, neatbalstīta metode un nepareiza lietotājvārda forma prasa dažādus labojumus. Saglabājiet šos novērojumus un galīgo statusu rediģētā diagnostikā.
CONNECT ir cits atzvanīšanas konteksts: OkHttp dokumentē sintētisku preventīvu starpniekservera autentifikācijas izaicinājumu pirms tuneļa atvēršanas. Apstrādājiet šo kontekstu saskaņā ar API, nevis pieņemiet, ka katrs atzvans ir parasta galamērķa atbilde.
Atsevišķais authenticator ir paredzēts galamērķa servera autentifikācijai. Turiet tā akreditācijas datus atsevišķi no starpniekservera pieteikšanās; vispārīgs interceptor, kas ievieto starpniekservera paroli katrā izejošajā pieprasījumā, var to nosūtīt nepareizā tvērumā.
Vēsturiskie ziņojumi apraksta arī ieviešanas kļūdas, tostarp noraidītas starpniekservera atbildes pamatteksta apstrādi. Reģistrējiet OkHttp versiju un pēdējo apmaiņu pirms pašreizējās kļūmes attiecināšanas uz vecu ziņojumu. Atkārtošanas lēmumam joprojām vajadzētu apturēt nemainītu akreditācijas datu mēģinājumu, kuram nav nekādas noderīgas jaunas atbildes.