Sinasabi ng address ng proxy sa Emacs kung saan kumonekta. Ang pag-log in nito ay ibang bahagi ng usapan. Para sa ordinaryong HTTP request, maaaring sagutin ng URL library ng Emacs ang hamon ng authentication ng proxy, kumuha ng kredensyal mula sa auth-source o magtanong nang interactive, at muling gamitin ang mga kredensyal na hawak sa session.

Sinusundan ng mga detalye sa ibaba ang Emacs 31.1. May kinalaman ang mga ito sa mga operasyong gumagamit ng URL library; ang external na downloader na inilunsad ng isang Emacs package ay may sariling landas ng authentication.

Itakda ang ruta, pagkatapos hayaan ang HTTP na humiling ng pag-log in

Maaaring piliin ang isang fixed na endpoint ng proxy gamit ang dokumentadong opsyon:

(setq url-proxy-services
      '(("http" . "proxy.example:8080")
        ("https" . "proxy.example:8080")))

Palitan ang placeholder ng ibinigay na endpoint. Inilalarawan ng mga key ang mga scheme ng URL ng destinasyon. Ang pagdaragdag ng HTTPS entry ay pumipili ng ruta para sa mga destinasyong HTTPS; hindi ito mismo nagbibigay ng kredensyal.

Sa panahon ng ordinaryong HTTP request, maaaring tumugon ang proxy ng 407 Proxy Authentication Required at hamon na Proxy-Authenticate. Pumipili ang URL library ng sinusuportahang scheme ng authentication at kumukuha ng kredensyal para sa endpoint ng proxy. Pagkatapos ay muling sinusubukan gamit ang Proxy-Authorization.

Para sa Basic na authentication, maaaring humiling ng username at password ang interactive na request kapag walang angkop na kredensyal. Ang request na minarkahan bilang noninteractive ay hindi makakaasa sa mga prompt na iyon. Hiwalay din ang pag-log in sa proxy sa pag-log in sa destinasyong website: ang 401 na hamon ng isang website ay sumusunod sa ibang landas.

Ilagay ang tuluy-tuloy na kredensyal sa auth-source

Kung nagbabasa na ang auth-source ng naka-encrypt na file ng kredensyal tulad ng ~/.authinfo.gpg, ang Basic entry para sa halimbawang ito ay may sumusunod na anyo:

machine proxy.example port http login YOUR_LOGIN password YOUR_PASSWORD

Gamitin ang iyong tunay na account at sikreto, at tiyakin na ang file ay kabilang sa iyong naka-configure na auth-sources. Inilalarawan ng linya ang mga tumutugmang field; hindi ito utos na maglagay ng password sa iyong Lisp initialization file.

Dalawang detalye ang mahalaga sa implementasyon ng Basic sa Emacs 31.1. Hinahanap nito ang hostname ng proxy nang walang numeric na TCP port, at ipinapasa nito ang scheme ng URL ng proxy bilang port value ng auth-source. Para sa HTTP proxy na ito, ang halagang iyon ay http, kahit gumagamit ng port 8080 ang TCP connection.

Hindi kasama sa paghahanap na ito ang realm ng hamon o ang numeric na port ng proxy. Huwag asahan na pipili ito ng iba't ibang Basic password para sa maraming realm o port ng proxy sa parehong hostname. Gumagamit ang Digest ng ibang paghahanap ng host, kaya ang halimbawa sa itaas ay para sa Basic.

May sariling cache ng authentication din ang URL library. Iginigit ng mga Basic entry nito ang mga endpoint ng proxy at gumagamit ng realm o directory matching sa loob ng isang endpoint; hiwalay ang cache na iyon sa paghahanap sa auth-source. Ang pag-type ng password sa prompt ay maaaring magpunò ng session cache nang hindi nagse-save ng bagong entry sa iyong tuluy-tuloy na file ng kredensyal.

May mas naunang hakbang ng authentication ang HTTPS

Para sa destinasyong HTTPS sa pamamagitan ng HTTP proxy, unang nagpapadala ang Emacs ng CONNECT. Maaaring kailanganin ang authentication bago pa nito maabot ang naka-encrypt na koneksyon sa website.

Sa Emacs 31.1, sinusuri ng builder ng CONNECT request ang authentication na available na sa pamamagitan ng makinarya ng authentication nito, kasama ang naka-cache na Basic na kredensyal. Ang Basic na landas nito ay hindi nagtatanong o kumukuha ng bagong auth-source entry sa puntong iyon. Ang CONNECT response na hindi 200 ay hindi rin pumapasok sa ordinaryong HTTP 407 challenge handler na inilarawan sa itaas.

Dahil dito, ang auth-source entry na makakasagot sa normal na HTTP Basic challenge ay hindi ginagarantiyang matagumpay na ma-authenticate ang unang HTTPS request ng bagong session. Iba ang panimulang estado ng session na may angkop na naka-cache na kredensyal. Ang paulit-ulit na pag-edit ng parehong password entry ay hindi maaaring mag-alis nito mismo ng pagkakaibang ito ng dalawang landas.

Kung huminto ang HTTPS na operasyon sa proxy, alamin kung nakatanggap ng 407 ang CONNECT at kung ginagamit mo ang gawi ng release na ito. Tiyakin din ang scheme ng authentication na inaalok ng proxy. Ang Basic credential entry ay hindi unibersal na adapter para sa bawat enterprise authentication system.

Panatilihin ang matatag na configuration sa pampublikong opsyon ng proxy at sa napili mong backend ng kredensyal. Ang panloob na Basic storage ng URL library ay kapaki-pakinabang sa pag-unawa sa gawi na ito, ngunit ang manu-manong pagpuno sa pribadong istrukturang datos na iyon ay magtatali ng setup sa mga detalye ng implementasyon.

Kaugnay na mga artikulo