HTTP 407 ar 401: kuris prisijungimas nepavyksta?
Atskirkite tarpinio serverio ir svetainės autentifikavimą, tikrinkite tinkamas antraštes ir nesiųskite prisijungimo duomenų ne tai pusei.
407 prašo autentifikuotis tarpiniame serveryje. 401 prašo autentifikavimo paskirties ištekliui. Viena užklausa gali susidurti su abiem, tad prieš pateikdami slaptažodį nustatykite, kas jo prašo.
Palyginkite būseną ir autentifikavimo užklausos antraštes
| Atsakymas | Autentifikavimo užklausos antraštė | Prisijungimo duomenų antraštė | Susijusi pusė |
|---|---|---|---|
| 407 Proxy Authentication Required | Proxy-Authenticate | Proxy-Authorization | Tarpinis serveris tarpininkas |
| 401 Unauthorized | WWW-Authenticate | Authorization | Pradinio ištekliaus autentifikavimo eiga |
Būsena yra svarbi pirmoji užuomina, bet peržiūrėkite visą apsikeitimą. Skaičius 407 puslapio tekste nėra tikras HTTP 407 atsakymas. Individualus prisijungimo puslapis taip pat gali grąžinti 200 ir vis dar reikalauti autentifikavimo programos lygmeniu.
Kodėl HTTPS gali nepavykti su 407 dar nepasiekus svetainės
Kai įprastas HTTP tarpinis serveris perduoda HTTPS užklausą, klientas paprastai pirmiausia prašo sukurti CONNECT tunelį. Tarpinis serveris gali reikalauti autentifikavimo šiai CONNECT užklausai. Kol jis nebaigtas, TLS seansas su paskirtimi tuneliu dar nesukurtas. Svetainės API žetono pakeitimas šio etapo greičiausiai neištaisys.
Išsamia išvestimi patikrinkite, kur atsiranda autentifikavimo prašymas:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/
Vietinį klausytuvą pakeiskite savo ir perskaitykite pirmą prašymą žurnale. 407 per CONNECT atsiranda prieš paskirties TLS; vėlesnis 401 gali sekti po sėkmingai sukurto tunelio.
Tarpinio serverio duomenis pateikite jo sąsajoje
Patikimo administratoriaus suteiktam galiniam taškui ir paskyrai curl gali suderinti autentifikavimo schemą ir paprašyti nenurodyto slaptažodžio:
curl --proxy http://proxy.example:8080 --proxy-anyauth --proxy-user alice https://example.com/
Pakeiskite pavyzdinį galinį tašką ir naudotoją paslaugos, kuria turite teisę naudotis, duomenimis. Tik naudotojo nurodymas leidžia nerašyti slaptažodžio tiesiai į aukščiau esančią komandą. Palaikomi būdai priklauso nuo curl komponavimo ir tarpinio serverio; derinimui nepavykus, patikrinkite tikrą prašymą ir komponavimo galimybes.
Tarpinio serverio autentifikavimo parinktis atskirta nuo curl pradinio serverio naudotojo autentifikavimo. Nepridėkite pradžiai skirtos Authorization antraštės vietoj atsakymo į tarpinio serverio prašymą. Taip pat rankiniu būdu neperduokite tarpinio serverio duomenų antraščių nesusijusioms užklausoms ir nesaugokite jų visos programos kartotinai naudojamose antraštėse.
Jei tarpinis serveris vis grąžina 407
- Įsitikinkite, kad naudojate numatytą tarpinio serverio vardą ir prievadą.
- Tikrinkite serverio skelbiamas schemas, o ne manykite, kad tai Basic.
- Patikrinkite paskyros būseną ir reikalaujamą naudotojo vardo formatą.
- Jei duomenys įterpti į URL, patikrinkite specialiųjų ženklų perdavimą.
- Išsiaiškinkite, ar su naršykle integruotam įmonės autentifikavimui reikia vykdymo aplinkos ar platformos palaikymo.
- Jei kliento duomenų nepakanka, paprašykite administratoriaus užklausos identifikatoriaus arba serverio žurnalo įrašo be jautrių duomenų.
403 ar atmestas CONNECT gali būti prieigos politikos sprendimas net po sėkmingo prisijungimo. Kiti slaptažodžių bandymai nesuteiks prieigos prie draudžiamos paskirties.
Paskirties HTTPS neapsaugo kiekvieno tarpinio serverio duomenų apsikeitimo
Tarpinio serverio autentifikavimas gali įvykti prieš paskirties TLS. Jei ryšys su pačiu tarpiniu serveriu nešifruotas, o būdas tame ryšyje atskleidžia kartotinai naudojamus prisijungimo duomenis, HTTPS paskirtis ankstesnio apsikeitimo neapsaugo atgaline data. Pasirinkite paslaugai tinkamus perdavimą ir autentifikavimą; nesiųskite asmeninių paskyrų nežinomam viešam tarpiniam serveriui.
Prieš dalydamiesi peržiūrėkite išsamius žurnalus. Net jei įrankis uždengia įprastus prisijungimo laukus, gali likti naudotojų vardų, vidinių galinių taškų pavadinimų, slapukų ar kitų identifikacinių duomenų.