Prijava na URL proksi u Emacsu 31.1: auth-source i ograničenja CONNECT
Podesite autentifikovani HTTP proksi za Emacsovu URL biblioteku, razumite njeno traženje Basic akreditiva i uzmite u obzir HTTPS CONNECT put u Emacsu 31.1.
Adresa proksija govori Emacsu gde da se poveže. Njegova prijava je drugi deo razgovora. Za običan HTTP zahtev Emacsova URL biblioteka može odgovoriti na proksijev izazov autentifikacije, dobiti akreditive iz auth-source ili ih pitati interaktivno i ponovo iskoristiti akreditive zadržane u sesiji.
Detalji u nastavku prate Emacs 31.1. Tiču se radnji koje koriste URL biblioteku; spoljni preuzimač koji pokrene Emacs paket ima sopstveni put autentifikacije.
Postavite rutu, pa pustite HTTP da zatraži prijavu
Fiksna završna tačka proksija može se izabrati dokumentovanom opcijom:
(setq url-proxy-services
'(("http" . "proxy.example:8080")
("https" . "proxy.example:8080")))
Zamenite rezervisano mesto isporučenom završnom tačkom. Ključevi opisuju šeme odredišnog URL-a. Dodavanje unosa HTTPS bira rutu za HTTPS odredišta; ono samo po sebi ne daje akreditive.
Tokom običnog HTTP zahteva proksi može odgovoriti sa 407 Proxy Authentication Required i izazovom Proxy-Authenticate. URL biblioteka bira podržanu šemu autentifikacije i pribavlja akreditive za završnu tačku proksija. Zatim ponavlja pokušaj sa Proxy-Authorization.
Za Basic autentifikaciju interaktivni zahtev može tražiti korisničko ime i lozinku kada odgovarajuće akreditive nisu dostupne. Zahtev označen kao neinteraktivan ne može se osloniti na te upite. Prijava na proksi je takođe odvojena od prijave na odredišni veb-sajt: izazov 401 veb-sajta sledi drugačiji put.
Stavite trajne akreditive u auth-source
Ako auth-source već čita šifrovanu datoteku akreditiva poput ~/.authinfo.gpg, Basic unos za ovaj primer ima sledeći oblik:
machine proxy.example port http login YOUR_LOGIN password YOUR_PASSWORD
Koristite svoj stvarni nalog i tajnu i uverite se da je datoteka među vašim konfigurisanim auth-sources. Red ilustruje polja koja se poklapaju; to nije uputstvo da stavite lozinku u svoju Lisp inicijalizacionu datoteku.
Dva detalja su važna u Basic implementaciji Emacsa 31.1. Ona traži ime hosta proksija bez numeričkog TCP porta i prosleđuje šemu URL-a proksija kao vrednost porta za auth-source. Za ovaj HTTP proksi ta vrednost je http, iako TCP veza koristi port 8080.
Ovo traženje ne uključuje realm izazova ni numerički port proksija. Ne očekujte da će izabrati različite Basic lozinke za nekoliko realma ili portova proksija na istom imenu hosta. Digest koristi drugačije traženje hosta, pa je gornji primer posebno za Basic.
URL biblioteka takođe drži sopstveni keš autentifikacije. Njeni Basic unosi razlikuju završne tačke proksija i koriste poklapanje realma ili direktorijuma unutar završne tačke; taj keš je odvojen od traženja u auth-source. Upisivanje lozinke na upitu može napuniti keš sesije bez čuvanja novog unosa u vašoj datoteci trajnih akreditiva.
HTTPS ima raniji korak autentifikacije
Za HTTPS odredište kroz HTTP proksi, Emacs prvo šalje CONNECT. Autentifikacija stoga može biti potrebna pre nego što stigne do šifrovane veze sa veb-sajtom.
U Emacsu 31.1, graditelj CONNECT zahteva proverava autentifikaciju koja je već dostupna kroz njegov mehanizam autentifikacije, uključujući keširane Basic akreditive. Njegov Basic put ne pita i ne pribavlja svež auth-source unos u tom trenutku. CONNECT odgovor koji nije 200 takođe 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 garantuje da će prvi HTTPS zahtev nove sesije biti uspešno autentifikovan. Sesija sa odgovarajućim keširanim akreditivima ima drugačije početno stanje. Ponovljeno uređivanje istog unosa lozinke ne može samo po sebi ukloniti tu razliku između dva puta.
Ako se HTTPS radnja zaustavi na proksiju, utvrdite da li je CONNECT primio 407 i da li koristite ponašanje ovog izdanja. Potvrdite i šemu autentifikacije koju proksi nudi. Basic unos akreditiva nije univerzalni adapter za svaki poslovni sistem autentifikacije.
Držite trajnu konfiguraciju u javnoj opciji proksija i u izabranom pozadinskom sistemu akreditiva. Interno Basic skladište URL biblioteke korisno je za razumevanje ovog ponašanja, ali ručno popunjavanje te privatne strukture podataka vezalo bi postavku za detalje implementacije.