Para sa isang HTTP proxy na nag-aalok ng Basic authentication, ang proxyAuthenticator ng OkHttp ay maaaring magbalik ng kahilingang may dalang mga kredensyal. Ibalik ang null matapos nang tanggihan ang isang pagtatangka ng awtorisasyon, sa halip na ipadala muli ang parehong sagot:

.proxyAuthenticator { _, response ->
    if (response.request.header("Proxy-Authorization") != null) {
        null
    } else {
        response.request.newBuilder()
            .header("Proxy-Authorization",
                    Credentials.basic(proxyUser, proxyPassword))
            .build()
    }
}

Gumagamit ang balangkas na ito ng mga halaga ng account mula sa lihim na pagsasaayos ng aplikasyon. Pinapayagan ng bantay ang unang pagtatangka at pinipigilan ang paulit-ulit. Nagpapatupad ito ng Basic, hindi lahat ng iskema na maaaring ipahayag ng proxy; suriin ang hamon bago piliin ang sagot na iyon.

Kung ang huling resulta ay nananatiling 407, ihambing ang piniling proxy, ang inihayag na iskema at ang dokumentadong pagkakakilanlan ng account. Ang tinanggihang password, hindi suportadong paraan at maling anyo ng username ay nangangailangan ng magkaibang pagwawasto. Itago ang mga obserbasyong iyon at ang huling kalagayan sa mga redacted na diagnostic.

May ibang konteksto ng callback ang CONNECT: idinodokumento ng OkHttp ang isang sintetikong preemptive na hamon ng proxy authentication bago buksan ang tunnel. Pangasiwaan ang kontekstong iyon ayon sa API sa halip na ipagpalagay na ang bawat callback ay ordinaryong sagot ng destinasyon.

Ang hiwalay na authenticator ay para sa authentication sa server ng destinasyon. Itago ang mga kredensyal nito nang hiwalay sa pag-login sa proxy; ang isang generic na interceptor na naglalagay ng password ng proxy sa bawat papalabas na kahilingan ay maaaring magpadala nito sa maling saklaw.

Inilalarawan din ng mga makasaysayang ulat ang mga bug sa pagpapatupad, kabilang ang paghawak ng katawan ng tinanggihang sagot ng proxy. Itala ang bersyon ng OkHttp at ang huling pagpapalitan bago iugnay ang kasalukuyang pagkabigo sa isang lumang ulat. Dapat pa ring itigil ng desisyon sa pag-uulit ang isang hindi nagbabagong pagtatangka ng kredensyal na walang anumang kapaki-pakinabang na bagong sagot.

Kaugnay na mga artikulo