Prijava na URL proxy u Emacsu 31.1: auth-source i ograničenja CONNECT
Postavite autentificirani HTTP proxy za Emacsovu URL biblioteku, razumite njezino traženje Basic vjerodajnica i uzmite u obzir HTTPS CONNECT put u Emacsu 31.1.
Adresa proxyja govori Emacsu gdje se spojiti. Njegova prijava drugi je dio razgovora. Za običan HTTP zahtjev Emacsova URL biblioteka može odgovoriti na proxyjev izazov autentifikacije, dohvatiti vjerodajnice iz auth-source ili ih pitati interaktivno te ponovno upotrijebiti vjerodajnice zadržane u sesiji.
Pojedinosti u nastavku slijede Emacs 31.1. Tiču se radnji koje koriste URL biblioteku; vanjski preuzimatelj koji pokrene Emacsov paket ima vlastiti put autentifikacije.
Postavite rutu, pa pustite HTTP da zatraži prijavu
Fiksna završna točka proxyja može se odabrati dokumentiranom opcijom:
(setq url-proxy-services
'(("http" . "proxy.example:8080")
("https" . "proxy.example:8080")))
Zamijenite rezervirano mjesto isporučenom završnom točkom. Ključevi opisuju sheme odredišnog URL-a. Dodavanje unosa HTTPS odabire rutu za HTTPS odredišta; samo po sebi ne daje vjerodajnice.
Tijekom običnog HTTP zahtjeva proxy može odgovoriti s 407 Proxy Authentication Required i izazovom Proxy-Authenticate. URL biblioteka odabire podržanu shemu autentifikacije i pribavlja vjerodajnice za završnu točku proxyja. Zatim ponovno pokušava s Proxy-Authorization.
Za Basic autentifikaciju interaktivni zahtjev može zatražiti korisničko ime i lozinku kada odgovarajuće vjerodajnice nisu dostupne. Zahtjev označen kao neinteraktivan ne može se osloniti na te upite. Prijava na proxy također je odvojena od prijave na odredišno web-mjesto: izazov 401 web-mjesta slijedi drukčiji put.
Stavite trajne vjerodajnice u auth-source
Ako auth-source već čita šifriranu datoteku vjerodajnica poput ~/.authinfo.gpg, Basic unos za ovaj primjer ima sljedeći oblik:
machine proxy.example port http login YOUR_LOGIN password YOUR_PASSWORD
Upotrijebite svoj stvarni račun i tajnu i provjerite je li datoteka među vašim konfiguriranim auth-sources. Redak prikazuje polja koja se podudaraju; to nije uputa da stavite lozinku u svoju Lisp inicijalizacijsku datoteku.
Dvije su pojedinosti važne u Basic implementaciji Emacsa 31.1. Pretražuje ime hosta proxyja bez numeričkog TCP porta i prosljeđuje shemu URL-a proxyja kao vrijednost porta za auth-source. Za ovaj HTTP proxy ta je vrijednost http, iako TCP veza koristi port 8080.
Ovo pretraživanje ne uključuje realm izazova ni numerički port proxyja. Ne očekujte da će odabrati različite Basic lozinke za nekoliko realmova ili portova proxyja na istom imenu hosta. Digest koristi drukčije pretraživanje hosta, pa je gornji primjer posebno za Basic.
URL biblioteka također drži vlastiti predmemoriju autentifikacije. Njezini Basic unosi razlikuju završne točke proxyja i koriste podudaranje realma ili mape unutar završne točke; ta je predmemorija odvojena od pretraživanja u auth-source. Upisivanje lozinke na upitu može napuniti predmemoriju sesije bez spremanja novog unosa u vašu datoteku trajnih vjerodajnica.
HTTPS ima raniji korak autentifikacije
Za HTTPS odredište kroz HTTP proxy, Emacs najprije šalje CONNECT. Autentifikacija stoga može biti potrebna prije nego što stigne do šifrirane veze s web-mjestom.
U Emacsu 31.1 graditelj CONNECT zahtjeva provjerava autentifikaciju već dostupnu kroz svoj mehanizam autentifikacije, uključujući predmemorirane Basic vjerodajnice. Njegov Basic put ne pita i ne dohvaća svježi auth-source unos u tom trenutku. CONNECT odgovor koji nije 200 također ne ulazi u uobičajeni HTTP 407 obrađivač izazova opisan gore.
Prema tome, auth-source unos koji može odgovoriti na normalan HTTP Basic izazov ne jamči da će prvi HTTPS zahtjev nove sesije biti uspješno autentificiran. Sesija s odgovarajućim predmemoriranim vjerodajnicama ima drukčije početno stanje. Ponovljeno uređivanje istog unosa lozinke ne može samo po sebi ukloniti tu razliku između dvaju putova.
Ako se HTTPS radnja zaustavi na proxyju, utvrdite je li CONNECT primio 407 i koristite li ponašanje ovog izdanja. Potvrdite i shemu autentifikacije koju proxy nudi. Basic unos vjerodajnica nije univerzalni adapter za svaki poslovni sustav autentifikacije.
Držite trajnu konfiguraciju u javnoj opciji proxyja i u odabranoj pozadinskoj službi vjerodajnica. Interno Basic spremište URL biblioteke korisno je za razumijevanje ovog ponašanja, ali ručno popunjavanje te privatne strukture podataka vezalo bi postavku uz pojedinosti implementacije.