URL tarpinio serverio prisijungimas Emacs 31.1: auth-source ir CONNECT apribojimai
Sukonfigūruokite autentifikuotą HTTP tarpinį serverį Emacs URL bibliotekai, supraskite jos Basic prisijungimo duomenų paiešką ir atsižvelkite į HTTPS CONNECT kelią Emacs 31.1.
Tarpinio serverio adresas nurodo Emacs, kur jungtis. Jo prisijungimas yra kita pokalbio dalis. Įprastai HTTP užklausai Emacs URL biblioteka gali atsakyti į tarpinio serverio autentifikavimo iššūkį, gauti prisijungimo duomenis iš auth-source arba jų paklausti interaktyviai, ir pakartotinai naudoti sesijoje laikomus duomenis.
Toliau pateikta informacija atitinka Emacs 31.1. Ji susijusi su operacijomis, naudojančiomis URL biblioteką; išorinė atsisiuntimo programa, kurią paleidžia Emacs paketas, turi savo autentifikavimo kelią.
Nustatykite maršrutą, tada leiskite HTTP paprašyti prisijungimo
Fiksuotą tarpinio serverio galinį tašką galima pasirinkti dokumentuota parinktimi:
(setq url-proxy-services
'(("http" . "proxy.example:8080")
("https" . "proxy.example:8080")))
Pakeiskite vietos žymeklį pateiktu galiniu tašku. Raktai aprašo paskirties URL schemas. HTTPS įrašo pridėjimas pasirenka maršrutą HTTPS paskirtims; jis pats nesuteikia prisijungimo duomenų.
Įprastos HTTP užklausos metu tarpinis serveris gali atsakyti 407 Proxy Authentication Required ir Proxy-Authenticate iššūkiu. URL biblioteka pasirenka palaikomą autentifikavimo schemą ir gauna prisijungimo duomenis tarpinio serverio galiniam taškui. Tada ji bando dar kartą su Proxy-Authorization.
Basic autentifikavimui interaktyvi užklausa gali paprašyti naudotojo vardo ir slaptažodžio, kai nėra tinkamų prisijungimo duomenų. Užklausa, pažymėta kaip neinteraktyvi, negali pasikliauti tais prašymais. Prisijungimas prie tarpinio serverio taip pat atskirtas nuo prisijungimo prie paskirties svetainės: svetainės 401 iššūkis eina kitu keliu.
Įdėkite nuolatinius prisijungimo duomenis į auth-source
Jei auth-source jau nuskaito užšifruotą prisijungimo duomenų failą, pavyzdžiui, ~/.authinfo.gpg, Basic įrašas šiam pavyzdžiui turi tokią formą:
machine proxy.example port http login YOUR_LOGIN password YOUR_PASSWORD
Naudokite savo tikrąją paskyrą ir slaptažodį ir įsitikinkite, kad failas yra tarp sukonfigūruotų auth-sources. Eilutė iliustruoja atitinkančius laukus; tai nėra nurodymas dėti slaptažodį į savo Lisp inicijavimo failą.
Emacs 31.1 Basic įgyvendinime svarbios dvi detalės. Ji ieško tarpinio serverio pagrindinio kompiuterio vardo be skaitmeninio TCP prievado ir perduoda tarpinio serverio URL schemą kaip auth-source prievado reikšmę. Šiam HTTP tarpiniam serveriui ta reikšmė yra http, nors TCP ryšys naudoja 8080 prievadą.
Ši paieška neapima iššūkio realm ar skaitmeninio tarpinio serverio prievado. Nesitikėkite, kad ji parinks skirtingus Basic slaptažodžius keliems realm ar tarpinio serverio prievadams tame pačiame pagrindinio kompiuterio varde. Digest naudoja kitokią pagrindinio kompiuterio paiešką, todėl aukščiau pateiktas pavyzdys skirtas būtent Basic.
URL biblioteka taip pat palaiko savo autentifikavimo podėlį. Jos Basic įrašai išskiria tarpinio serverio galinius taškus ir naudoja realm ar katalogo atitikimą galiniame taške; tas podėlis atskirtas nuo auth-source paieškos. Slaptažodžio įvedimas prašyme gali užpildyti sesijos podėlį neišsaugant naujo įrašo nuolatiniame prisijungimo duomenų faile.
HTTPS turi ankstesnį autentifikavimo žingsnį
HTTPS paskirčiai per HTTP tarpinį serverį Emacs pirmiausia siunčia CONNECT. Todėl autentifikavimas gali būti reikalingas dar nepasiekus užšifruoto ryšio su svetaine.
Emacs 31.1 CONNECT užklausos kūrėjas tikrina autentifikavimą, jau prieinamą per jo autentifikavimo mechanizmą, įskaitant podėlyje laikomus Basic duomenis. Jo Basic kelias tuo metu neprašo ir negauna naujo auth-source įrašo. Ne 200 CONNECT atsakymas taip pat nepatenka į aukščiau aprašytą įprastą HTTP 407 iššūkių apdorotoją.
Todėl auth-source įrašas, galintis atsakyti į įprastą HTTP Basic iššūkį, negarantuoja, kad pirmoji naujos sesijos HTTPS užklausa bus sėkmingai autentifikuota. Sesija su tinkamais podėlyje esančiais duomenimis turi kitokią pradinę būseną. Pakartotinis to paties slaptažodžio įrašo redagavimas pats savaime negali pašalinti šio skirtumo tarp dviejų kelių.
Jei HTTPS operacija sustoja ties tarpiniu serveriu, nustatykite, ar CONNECT gavo 407, ir ar naudojate šio leidimo elgseną. Patvirtinkite ir tarpinio serverio siūlomą autentifikavimo schemą. Basic prisijungimo duomenų įrašas nėra universalus adapteris kiekvienai įmonės autentifikavimo sistemai.
Laikykite ilgalaikę konfigūraciją viešoje tarpinio serverio parinktyje ir pasirinktame prisijungimo duomenų pagrinde. Vidinė URL bibliotekos Basic saugykla naudinga šiai elgsenai suprasti, bet rankinis tos privačios duomenų struktūros pildymas pririštų sąranką prie įgyvendinimo detalių.